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

HAL_UART_IRQHandler的几个bug

[复制链接]
gkcclm 发布时间:2015-5-22 23:01
阅读主题, 点击返回1楼
收藏 2 评论14 发布时间:2015-5-22 23:01
14个回答
feixiang20 回答时间:2017-5-29 23:36:02
有点难度            
小一兄弟 回答时间:2019-6-24 15:05:53
captainliuy 发表于 2015-6-3 18:09
串口是双工的,可以接收也可以发送,但是处理器处理可不是双工的,发送的时候,如果进来2个以上的数据自然 ...

我现在正好遇到超过接收两个以上字节的数据就会出现这个问题,不明白原因,请大侠指教
小一兄弟 回答时间:2019-6-24 15:23:17
captainliuy 发表于 2015-6-3 18:09
串口是双工的,可以接收也可以发送,但是处理器处理可不是双工的,发送的时候,如果进来2个以上的数据自然 ...

a.接收到一个数据完成  串口进入中断 将数据从 串口数据寄存器搬运到指定的内存BUF里面,这个步骤需要进入HAL_UART_IRQHandler(&huart2);中完成数据处理。
b.进入串口打印数据,串口打印调用的是UART_Transmit_IT(huart); 这个函数也是需要调用HAL_UART_IRQHandler(&huart2);进行数据处理从内存BUF里面帮运到串口发送数据寄存器中间。
c.如果当串口正在进行数据打印的时候进来第二个数的时候就会卡在数据寄存器等待。
d.但是当串口发送数据完成以后会继续把串口接收数据寄存器的数据接收到内存BUF中间,但是这个过程已经存在串口接收数据溢出中断(overrun溢出中断)。


我是这样分析对吗??求指教
Kevin201707 回答时间:2019-6-28 17:48:47
最近做串口,发现HAL库直接用还是挺不好用的。
streamlee 回答时间:2019-7-8 10:54:39
接收用DMA啊
12

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

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