[STM32F4] 串口收发数据遇到的问题

[复制链接]
1320|8
 楼主| wjroy11 发表于 2016-6-23 17:36 | 显示全部楼层 |阅读模式
我的串口中断接收,查询(带延时)发送。使用HAL库。
遇到了一个问题,通过各种方法,暂时应该算是解决了,但是我不知道这样做的原因是什么。。。还请大家帮我分析一下。
现象很简单:
两条查询发送数据的时间间隔太短的话,有时会造成接收中断使能的标志位被清除,从而进不了接收中断函数,但是查询发送的数据是没有问题的。
解决办法:
我把发送也改成中断方式以后这个问题暂时还没有出现。

问题:
不明白为什么发送的方式为什么会对接收中断标志位产生影响。
接收中断标志在进中断函数时清除,出中断函数之前置位。那么也就是说进中断函数处理完数据把中断标志位清除了,然后没有执行打开中断就跳出了中断函数。

实在理解不了,还请大家指导一下!

mmuuss586 发表于 2016-6-23 22:34 | 显示全部楼层
还是查询的那段程序有问题吧
 楼主| wjroy11 发表于 2016-6-24 09:54 | 显示全部楼层
mmuuss586 发表于 2016-6-23 22:34
还是查询的那段程序有问题吧

直接用的HAL库函数HAL_UART_Transmit();后来改成HAL_UART_Transmit_IT();就可以了,那个问题就不出现了。分析了一下这两个函数,里面没有会影响到接收中断的内容啊
airwill 发表于 2016-6-25 20:52 | 显示全部楼层
使用这个抽象出来的 HAL 库,可以不用太关注硬件的功能了。
但是厚厚的 HAL 库的手册,还得细细地读
 楼主| wjroy11 发表于 2016-6-27 16:14 | 显示全部楼层
airwill 发表于 2016-6-25 20:52
使用这个抽象出来的 HAL 库,可以不用太关注硬件的功能了。
但是厚厚的 HAL 库的手册,还得细细地读 ...

还没研究过HAL库手册,现在都是直接用HAL库函数,然后有问题就分析库函数,啃DATASHEET
dongnanxibei 发表于 2016-6-28 13:22 | 显示全部楼层
HAL库如何操作底层硬件,比如选择串口。
 楼主| wjroy11 发表于 2016-6-29 10:02 | 显示全部楼层
dongnanxibei 发表于 2016-6-28 13:22
HAL库如何操作底层硬件,比如选择串口。

UART_HandleTypeDef  huart1;
对huart1进行波特率、引脚等的配置,做好初始化
然后去调用huart1就是对串口1操作了。
dongnanxibei 发表于 2016-6-29 12:38 | 显示全部楼层
wjroy11 发表于 2016-6-29 10:02
UART_HandleTypeDef  huart1;
对huart1进行波特率、引脚等的配置,做好初始化
然后去调用huart1就是对串 ...

噢,原来这样,这个宏是在UART相关的头文件里吗
 楼主| wjroy11 发表于 2016-6-29 14:46 | 显示全部楼层
dongnanxibei 发表于 2016-6-29 12:38
噢,原来这样,这个宏是在UART相关的头文件里吗

HAL库头文件里有
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

59

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部