串口收发数据遇到的问题
我的串口中断接收,查询(带延时)发送。使用HAL库。
遇到了一个问题,通过各种方法,暂时应该算是解决了,但是我不知道这样做的原因是什么。。。还请大家帮我分析一下。
现象很简单:
两条查询发送数据的时间间隔太短的话,有时会造成接收中断使能的标志位被清除,从而进不了接收中断函数,但是查询发送的数据是没有问题的。
解决办法:
我把发送也改成中断方式以后这个问题暂时还没有出现。
问题:
不明白为什么发送的方式为什么会对接收中断标志位产生影响。
接收中断标志在进中断函数时清除,出中断函数之前置位。那么也就是说进中断函数处理完数据把中断标志位清除了,然后没有执行打开中断就跳出了中断函数。
实在理解不了,还请大家指导一下!
直接用的HAL库函数HAL_UART_Transmit();后来改成HAL_UART_Transmit_IT();就可以了,那个问题就不出现了。分析了一下这两个函数,里面没有会影响到接收中断的内容啊 楼主实际测试一下,是不是因为接收溢出标志位导致的。 关于接收数据溢出处理的回调函数没有重定义,也就是说即使出现了溢出,也不会执行任何操作,在出中断之前还是会打开接收中断。 就是不明白为什么在中断函数中关掉了接收中断,在出中断函数前为什么没有执行打开中断的操作。
难道是处理完数据之后,由于某些原因,没有打开接收中断,就直接就跳出中断函数了?什么问题会导致这种情况呢?
页:
[1]