你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

有用过HAL库的串口中断接收的朋友吗

[复制链接]
arels 提问时间:2017-1-3 16:59 /
大家的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函数
我也只做了这几步,进入调试发现这个回掉函数不仅没起作用,连断点都设置不了,这是为什么呢?
<
收藏 2 评论28 发布时间:2017-1-3 16:59

举报

28个回答
arels 回答时间:2017-1-6 13:54:49
找到问题了 void USART3_IRQHandler(void)
{

  HAL_UART_IRQHandler(&huart3);

}
如果在cube中设置了nvic的话这个函数会在-it.c里面自动写好
如果cube中没有设置nvic的话 这个函数要自己写 才能开启中断

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2 结贴奖励

查看全部评分

wenyangzeng 回答时间:2017-1-4 13:19:21
本帖最后由 wenyangzeng 于 2017-1-4 13:20 编辑

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

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

haifeng-388081 回答时间:2017-1-3 18:26:34
不会帮顶。。。。
逍遥李 回答时间:2017-1-3 19:21:38
这个还真不清楚,断点调试用的很少
feiante 回答时间:2017-1-4 00:05:51
可以设置的,断点设置不了,可能是你配置不对,导致回调函数没有被调用

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

arels 回答时间:2017-1-4 09:42:49
feiante 发表于 2017-1-4 00:05
可以设置的,断点设置不了,可能是你配置不对,导致回调函数没有被调用

嗯  感觉是回调函数没有调用 被编译器优化了
海迹天涯 回答时间:2017-1-4 10:09:28
1:到串口的msp初始化函数中看看是否打开了串口中断
2:确定HAL_UART_Receive_IT是否被调用;
3:确定串口是否真的能接受到数据。
在HAL_UART_RxCpltCallback函数中再次调用HAL_UART_Receive_IT函数

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

any012 回答时间:2017-1-4 10:21:23
用过,之前是用串口中断模式接收一个字节的数据,回调函数里做帧头判断,然后再开启接收下一个字节。
结果只接收了第一个字节,然后就进不了回调函数了,后来调试判断出是数据溢出了。是因为接收第一个字节后,回调函数处理部分太大了,还没处理完下一个数据就来了。
后来我改成空闲中断。

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

arels 回答时间:2017-1-4 11:14:37
海迹天涯 发表于 2017-1-4 10:09
1:到串口的msp初始化函数中看看是否打开了串口中断
2:确定HAL_UART_Receive_IT是否被调用;
3:确定串口 ...

  HAL_NVIC_SetPriority(USART3_IRQn, 0, 2);
  HAL_NVIC_EnableIRQ(USART3_IRQn);
配置中断应该只有两句代码,是在HAL_UART_MspInit中调用?
arels 回答时间:2017-1-4 11:15:57
any012 发表于 2017-1-4 10:21
用过,之前是用串口中断模式接收一个字节的数据,回调函数里做帧头判断,然后再开启接收下一个字节。
结果 ...

嗯  看了许多留言 说这个回调函数效率太低了
海迹天涯 回答时间:2017-1-4 11:22:49
arels 发表于 2017-1-4 11:14
HAL_NVIC_SetPriority(USART3_IRQn, 0, 2);
  HAL_NVIC_EnableIRQ(USART3_IRQn);
配置中断应该只有两句 ...

你可以追踪下代码看看有没有被执行到
123下一页

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版