HAL库串口中断接收的回掉函数没起作用

2019-07-14 14:21发布

大家的void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)这个接收完成回掉函数可以设置断点吗hal中断接收我理解只有
1,配置中断
2,在主函数中调用一次HAL_UART_Receive_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)开启标志位;
3,编写HAL_UART_RxCpltCallback函数
我也只做了这几步,进入调试发现这个回掉函数不仅没起作用,连断点都设置不了,这是为什么呢?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
18条回答
cjynet
1楼-- · 2019-07-16 07:18
支持一下
60user171
2楼-- · 2019-07-16 08:26
ctwewer 发表于 2019-1-28 13:19
本帖最后由 wenyangzeng 于 2017-1-4 13:20 编辑

这个HAL USART 需要在主循环函数中不断调用HAL_UART_Receive_IT(&UartHandle, (uint8_t *)aRxBuffer, RXBUFFERSIZE),才能响应中断。这与查询方式有何区别?

只要再main中调用一次,然后在回调函数中调用
就好了
wenxueshu
3楼-- · 2019-07-16 12:41
可以设置的,断点设置不了,可能是你配置不对,导致回调函数没有被调用
csw_ying
4楼-- · 2019-07-16 17:24
 精彩回答 2  元偷偷看……
60user171
5楼-- · 2019-07-16 19:50
找到问题了 void USART3_IRQHandler(void)
{

  HAL_UART_IRQHandler(&huart3);

}
如果在cube中设置了nvic的话这个函数会在-it.c里面自动写好
如果cube中没有设置nvic的话 这个函数要自己写 才能开启中断
youpukeji668
6楼-- · 2019-07-16 20:40
使用CubeMX配置一下调用HAL_UART_Receive_IT(),接收完成之后就会调用回调函数;
如果不定长数据接收建议使用空闲中断或超时中断;

一周热门 更多>