逸云剑 发表于 2016-6-23 17:54:33

串口收发数据遇到的问题


我的串口中断接收,查询(带延时)发送。使用HAL库。

遇到了一个问题,通过各种方法,暂时应该算是解决了,但是我不知道这样做的原因是什么。。。还请大家帮我分析一下。




现象很简单:

两条查询发送数据的时间间隔太短的话,有时会造成接收中断使能的标志位被清除,从而进不了接收中断函数,但是查询发送的数据是没有问题的。




解决办法:

我把发送也改成中断方式以后这个问题暂时还没有出现。




问题:

不明白为什么发送的方式为什么会对接收中断标志位产生影响。

接收中断标志在进中断函数时清除,出中断函数之前置位。那么也就是说进中断函数处理完数据把中断标志位清除了,然后没有执行打开中断就跳出了中断函数。




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

逸云剑 发表于 2016-6-24 09:55:26

直接用的HAL库函数HAL_UART_Transmit();后来改成HAL_UART_Transmit_IT();就可以了,那个问题就不出现了。分析了一下这两个函数,里面没有会影响到接收中断的内容啊

发表于 2016-6-24 16:50:09

楼主实际测试一下,是不是因为接收溢出标志位导致的。

逸云剑 发表于 2016-6-24 17:38:29

关于接收数据溢出处理的回调函数没有重定义,也就是说即使出现了溢出,也不会执行任何操作,在出中断之前还是会打开接收中断。

逸云剑 发表于 2016-6-24 17:41:35

就是不明白为什么在中断函数中关掉了接收中断,在出中断函数前为什么没有执行打开中断的操作。
难道是处理完数据之后,由于某些原因,没有打开接收中断,就直接就跳出中断函数了?什么问题会导致这种情况呢?
页: [1]
查看完整版本: 串口收发数据遇到的问题