HC32L190求助,串口没有发送状态标志,无法找到休眠时机。
HC32L190,串口使用缓冲空中断进行发送。也就是图中的TXE:现在要做休眠,也就要并且要关闭主时钟,就要等待串口数据确实发完再关闭。
也就是要等到这个最后一个红箭头:
但是我在TXE中断中填入了最后一个数据,就要后面出现两个TC中断,才能保证数据全部发完。
问题是,因为临界区和高优先级中断的缘故,无法保证最后一次在TXE中填入数据的时机,如果填入的时机稍晚,后面就只会有一个TC中断
也就是说,TXE后面要等1个或者2个TC中断,就说明数据发完了就可以进入休眠并且关闭时钟了。
但是具体是1个还是2个TC中断,完全不知道!
这要怎么办呢?
这个芯片没有TXBusy标志位。
我想了半天也没有想到怎么解决这个问题,求助各位,多谢了。
我的理解跟你的不一样,你倒数第二个TC标志位是前面的TXBUFF发送完成的标志位,不是你最后一次填入的数据.最后一个TC标志位才是你最后一次填入的数据。
个人认为是你理解有偏差。也就是说倒数第二个TC标志位的时候你如果不继续填充数据,本次发送就已经完成了。一直往前推,也就是你要先填一个数据给TXBUFF,他才能产生一次TXE中断和TC中断。TXE标志位一般用在polling发送上,毕竟他的置位和清零都是硬件自动完成的。
页:
[1]