打印
[STM32F4]

串口收发数据遇到的问题

[复制链接]
731|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 库的手册,还得细细地读

使用特权

评论回复
5
wjroy11|  楼主 | 2016-6-27 16:14 | 只看该作者
airwill 发表于 2016-6-25 20:52
使用这个抽象出来的 HAL 库,可以不用太关注硬件的功能了。
但是厚厚的 HAL 库的手册,还得细细地读 ...

还没研究过HAL库手册,现在都是直接用HAL库函数,然后有问题就分析库函数,啃DATASHEET

使用特权

评论回复
6
dongnanxibei| | 2016-6-28 13:22 | 只看该作者
HAL库如何操作底层硬件,比如选择串口。

使用特权

评论回复
7
wjroy11|  楼主 | 2016-6-29 10:02 | 只看该作者
dongnanxibei 发表于 2016-6-28 13:22
HAL库如何操作底层硬件,比如选择串口。

UART_HandleTypeDef  huart1;
对huart1进行波特率、引脚等的配置,做好初始化
然后去调用huart1就是对串口1操作了。

使用特权

评论回复
8
dongnanxibei| | 2016-6-29 12:38 | 只看该作者
wjroy11 发表于 2016-6-29 10:02
UART_HandleTypeDef  huart1;
对huart1进行波特率、引脚等的配置,做好初始化
然后去调用huart1就是对串 ...

噢,原来这样,这个宏是在UART相关的头文件里吗

使用特权

评论回复
9
wjroy11|  楼主 | 2016-6-29 14:46 | 只看该作者
dongnanxibei 发表于 2016-6-29 12:38
噢,原来这样,这个宏是在UART相关的头文件里吗

HAL库头文件里有

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

59

帖子

0

粉丝