最近调试一个ucos多任务操作系统,没有使用jlink仿真,系统运行几秒钟,运行灯不亮了。
由于没有仿真,不能通过暂停查看当前程序运行在哪里。
步骤1:
通过建立一个硬件定时器,定时打印当前任务的名称,OSTCBCurPtr->NamePtr;
步骤2:
经过步骤1后,还是找不到原因,将打印消息的语句修改为通过串口直接打印,不经过任务查询输出。
经过这两部后,就能看到打印输出的语句了。
然后分析发现,是在重新初始化SPI的地方,关掉了中断,没有再打开导致了系统不调度了,导致系统不运行了。
产生SPI和以太网同时工作时,SPI产生溢出中断
分析:1.SPI的中断优先级和以太网的中断优先级哪个高
将SPI的中断优先级设置的比以太网的优先级高了,还不行