STM32
直播中

王萍

7年用户 1266经验值
私信 关注
[问答]

STM32F407使用DMA+IDLE HAL库方式接收串口不等长数据的疑问求解

使用DMA+IDLE HAL库方式接收串口不等长数据 接收到的所有数据均正常 但是收到15个字节的数据后 一执行清除IDLE标志位 (__HAL_UART_CLEAR_IDLEFLAG( huart1); )就进入HardFault_Handler错误中断,但是收到<15个字节的数据都是正常的,我每次使用dma方式接收都是50个字节(HAL_UART_Receive_DMA( huart1, (uint8_t *) userUart.userUart1.ReciveBuff, 50);)
我查了些资料 通过R13寄存器里面存的地址找出来最后一条执行的程序 是__HAL_UART_CLEAR_IDLEFLAG( huart1); 执行完这一条后就进入错误中断了




回帖(1)

张涵

2024-3-13 15:36:49
理论上分析,可能是接收的数据长度超出导致,检查一下userUart.userUart1.ReciveBuff的定义,是不是大于50。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分