STM32
直播中

陈静

8年用户 1378经验值
私信 关注
[问答]

HAL库串口空闲中断接收到一定数量就不进入中断了是为什么?

  目前在搞一个zigbee的项目,设置模块的时候用的串口发送api命令然后串口空闲中断等待模块回复的信息,做完之后昨天进行了个测试,在循环中连续发送100次,等待回复100次,在每一次测试的时候都到43次的时候开始进不去中断了,根据命令算出大概是收到了1008字节,然后我重新开启空闲中断,开启状态是没问题的但还是不能进中断,也没有进串口错误回调。下面是代码部分求各位大佬帮忙看看,谢谢!!!
ide 是cubeide hal库版本是1.17.2 芯片是L4RCTx
下列代码是初始化和中断回调中调用的。
HAL_UART_AbortReceive( huart1);
state = HAL_UARTEx_ReceiveToIdle_DMA( huart1,frame.retbuf,0xFFFF);
printf("UART state = %drn",state);
这是测试代码,XBEE_PowOnInit 中会返回本次通讯是否成功。

运行一百次之后,每次测试都是在第43次开始进不去中断了。


回帖(1)

汤宇

2024-3-18 16:43:31
如果你基于HAL库函数组织的代码,你要注意下UART接收中断里 当识别到DMA完成中断且是非循环模式时,它会将当前DMA关闭掉。这点你要注意,它是按照它的演示逻辑来的。
举报

更多回帖

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