W806串口接收进入中断的次数

发布于 2022-06-17 19:41:03
W806使用中断方式接收数据,仅打开UART_INTS_RL和 UART_INTS_RTO两个中断

我设置了两个变量,用来统计在接收的时候进入中断的总次数INT_Count和接收用的次数INT_RX_Count,并且打印每次读取FIFO中的数据个数;

现测试,发送一条153字节的数据,打印情况如下:

RF:16
RF:0
RF:16
RF:0
RF:16
RF:0
RF:16
RF:0
RF:16
RF:0
RF:16
RF:0
RF:16
RF:0
RF:16
RF:0
RF:16
RF:0
RF:9
INT_Count=19,INT_RX_Count=18

从上面打印的结果看,仅接收进入中断18次,但其中一半读取的是0值,我尝试在读取后复位RXFIFO,降低系统主频至40MHz,情况仍然是这样的,显然资源浪费了
现在有两个疑问,1.设定的16字节触发中断,为什么会出现0值触发?2.如何避免这种情况,提高效率?

查看更多

关注者
0
被浏览
1.4k
2 个回答
ZYQ
ZYQ 2022-06-18
我已不再支持W80X任何相关问题的回复,请大家不要私信,有问题找 isme 谢谢

建议代码问题的话,不要进行文字叙述,只看你的打印,陌生的变量理解起来真的很难的

si26
si26 2022-06-20
这家伙很懒,什么也没写!

@ZYQ 感谢您的回答!只是您的回答对我来说没有任何帮助。我大概也知道应该是代码的问题,或者说应该是对这个U使用过程中规避一些坑的用法不熟悉;我如果贴代码,只知道是串口部分的,具体贴哪段,如果知道了就不用在这里寻求帮助了。所以,现在反馈的是测试过程和现象;如果您理解不了,还请原谅,个人表达能力有限。
值得庆幸的是,这个问题目前在群友4061N的帮助下已经解决!在次表示感谢!
下面我们说一下这个研究这个问题的原因,
我的串口部分程序是基于原厂固件库修改而来的,因原厂固件库有很多bug,0.6.0版本中断发送方式是不能正常工作的,此处改了两个地方,还有接收完后对指针进行减操作,在频繁大批量传输时很不安全且会数据错乱!
在校正了这些问题后,串口操作时仍然会偶尔死机的情况……由此特做了以上的测试!
官方固件对处理中断的操作是先清中断标识,然后读取FIFO,会出现以上测试的情况;群友4061N的分析,是清过中断后,由于FIFO中还存在数据,二次触发了中断!
最终,在读取完FIFO后再清一次中断,即可解决双倍中断的情况!
希望各位在使用串口的时候特别注意!
至于我在项目中出现的死机情况是否跟此有关,后续会做进一步测试,到时再告知大家,谢谢!
再次感谢群友4061N的帮助!

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览