1.芯片类型:LM3S1811;
2.参数配置:使能接收中断、禁止FIFO;
3.问题描述:串口通过中断接收,开始运行后串口正常工作,但是系统运行一段时间后,串口莫名其妙地不再进中断,通过芯片的另一个串口读出芯片相关寄存器如下:
show armreg 4000d018 value = 455(0x1c7) 可以发现,bit8(RI)已经置位,但是并没有进到中断,并且RXFE(bit4)和RXFF(bit6)都置位,
怀疑可能是进入中断后,清除了中断标志,但是没有读串口Buf,导致相关标志仍然为1,致使不再进中断。
show armreg 4000d004 value = 8(0x08) 可以看到OE(bit3 -overrun error)标志位1,说明串口接收出现了溢出错误。
4.问题补充:另外除了串口中断外,还有定时器中断;并且定时器中断函数中有一个比较耗时的函数需要执行,把这个函数移到定时器外面后长时间运行没再出现过上述问题,但是的确不知道是何种原因导致上述串口接收不进中断的现象。求高手指点。
此帖出自
小平头技术问答
从分析来看,有可能是串口溢出导致的问题。
所以,解决办法,就是每次进入串口中断都要检测一下串口的状态,读取 buf 里边的内容,哪怕内容没有用。
一周热门 更多>