- UID
- 1029342
- 性别
- 男
|
TI的LM3S1607,一开始中断优先级没有设置,采用默认值[所有优先级相同],则就是中断不可嵌套。 出现了UART通信有时会丢失数据的问题,一开始以为是硬件干扰导致的。。。。
UART的接收缓冲队列FIFO长度设置为1,即接收到字符后就触发中断。因为外部通信命令一般为多个字节连续发,所以如果UART中断来不及处理,很可能出现FIFO被覆盖的危险。
那么就会发生以下问题:
VD中断请求--->VD中断处理----->VD中断返回
UART中断请求---->挂起
UART中断请求--->挂起
如果此时连续有字节发送过来,则UART中的FIFO就会被覆盖,命令字节就会丢失。
所以UART中断优先级一定要比其他中断优先级高。。。。。
系统开发中,由于任务的重要性和及时性不同,必须定义好不同的优先级。否则就会出现这种BUG。 |
|