wangrui33422 发表于 2021-11-3 21:16:25

Uart接收问题咨询

开发用的HT66F0185, 在使用串口中断的时候,Uart有2ByteFifo, 遇到问题是,Uart中断能进入,只能读出rxr里1个byte的数据, 也就是说发10个字节数据,进5次接收中断,只能读第一个字节的数据。 请问一下,哪里使用有问题,有知道的指点一下

admin 发表于 2021-11-4 09:52:02

是发10个字节只能进5次中断?如果这样的话,说明有其他中断占用时间,导致串口中断不能及时响应。可以降低波特路、或者改善其他中断占用时间。

其次2byte fifo可以在一次中断里读出。方式
if(_rxif)
{
      buff=_txr_rxr;
      if(_rxif)
      {
             buff=_txr_rxr;
       }
}

wangrui33422 发表于 2021-11-4 14:06:39

admin 发表于 2021-11-4 09:52
是发10个字节只能进5次中断?如果这样的话,说明有其他中断占用时间,导致串口中断不能及时响应。可以降低 ...

感谢 ,请问你这个是验证过的吗? 我试过好像不行,第二个if ,程序进不去。 连续读取两次读rxr的程序是在中断里处理的,应该没没什么资源占用,我测试的时候已经把一些功能关闭了,在主函数只留了LED显示,在中断里执行到不同的位置,对应led显示数字。中断执行以后,我只有第一个if执行了 ,感觉像是第一个执行完以后 rxif被清零了,所以第二个if进不去。

admin 发表于 2021-11-5 13:57:50

wangrui33422 发表于 2021-11-4 14:06
感谢 ,请问你这个是验证过的吗? 我试过好像不行,第二个if ,程序进不去。 连续读取两次读rxr的程序是 ...

当fifo没有数据了rxif会自动清0,如果第一个执行完了就清0了,说明接收中断已经及时处理了。
你仔细查看自己代码,是否其他问题。

wangrui33422 发表于 2021-11-5 19:23:24

admin 发表于 2021-11-5 13:57
当fifo没有数据了rxif会自动清0,如果第一个执行完了就清0了,说明接收中断已经及时处理了。
你仔细查看 ...

好的,谢谢
页: [1]
查看完整版本: Uart接收问题咨询