首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

嵌入式开发:中断优先级的重要性

嵌入式开发:中断优先级的重要性

TI的LM3S1607,一开始中断优先级没有设置,采用默认值[所有优先级相同],则就是中断不可嵌套。                  出现了UART通信有时会丢失数据的问题,一开始以为是硬件干扰导致的。。。。
                  UART的接收缓冲队列FIFO长度设置为1,即接收到字符后就触发中断。因为外部通信命令一般为多个字节连续发,所以如果UART中断来不及处理,很可能出现FIFO被覆盖的危险。

                 那么就会发生以下问题:
                 VD中断请求--->VD中断处理----->VD中断返回
                     UART中断请求---->挂起
                             UART中断请求--->挂起
                 如果此时连续有字节发送过来,则UART中的FIFO就会被覆盖,命令字节就会丢失。

                 所以UART中断优先级一定要比其他中断优先级高。。。。。

               系统开发中,由于任务的重要性和及时性不同,必须定义好不同的优先级。否则就会出现这种BUG。
继承事业,薪火相传
返回列表