搜索
12
返回列表 发新帖
楼主: gkcclm

[原创] HAL_UART_IRQHandler的几个bug

[复制链接]

该用户从未签到

91

主题

4756

帖子

4

蝴蝶豆

论坛元老

最后登录
2021-2-27
发表于 2017-5-29 23:36:02 | 显示全部楼层
有点难度            
回复 支持 反对

使用道具 举报

该用户从未签到

0

主题

3

帖子

0

蝴蝶豆

新手上路

最后登录
2019-6-24
发表于 2019-6-24 15:05:53 | 显示全部楼层
captainliuy 发表于 2015-6-3 18:09
串口是双工的,可以接收也可以发送,但是处理器处理可不是双工的,发送的时候,如果进来2个以上的数据自然 ...

我现在正好遇到超过接收两个以上字节的数据就会出现这个问题,不明白原因,请大侠指教
回复 支持 反对

使用道具 举报

该用户从未签到

0

主题

3

帖子

0

蝴蝶豆

新手上路

最后登录
2019-6-24
发表于 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溢出中断)。


我是这样分析对吗??求指教
回复 支持 反对

使用道具 举报

该用户从未签到

6

主题

1029

帖子

133

蝴蝶豆

金牌会员

最后登录
2021-4-24
发表于 2019-6-28 17:48:47 | 显示全部楼层
最近做串口,发现HAL库直接用还是挺不好用的。
回复 支持 反对

使用道具 举报

该用户从未签到

1

主题

11

帖子

0

蝴蝶豆

初级会员

最后登录
2020-4-20
发表于 2019-7-8 10:54:39 | 显示全部楼层
接收用DMA啊
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|论坛-意法半导体STM32/STM8技术社区

GMT+8, 2024-5-5 14:22 , Processed in 0.164549 second(s), 31 queries .

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表