我使用LPC2136做了一个项目,使用的是ZLG提供的UCOS-II V2.52的模板。其中用到了LPC2136的2个串口,波特率为115200。在调试测序时,发现串口总是莫名其妙的丢失数据,溢出标志置位。本来FIFO触发字符个数为8,后改触发字符个数为1时故障依然。经过调试后发现,当多个中断同时触发时,CPU来不及处理所致。分析中断部分源程序,发现每次中断服务程序退出时,都要查找一次最高优先级的任务,完成一次任务的切换,中断处理比较耗时,针对这个问题,我修改了部分代码,使程序在执行完所有的被挂起的中断后再进行任务的查找和切换。程序改进后效果明显,没再出现数据丢失的现象。我把我的经验和教训写在这里,希望给大家以借鉴,少走弯路,避免出现和我一样的问题。 另外,当改动STARTUP.S的启动代码时,一定要确保异常向量表的累加和为零!!!!
|