热度 20
2012-1-12 21:28
9596 次阅读|
0 个评论
程序其中的一个任务调用了Task_sleep(100),结果睡死在里面,用ROV查看任务的状态,Blocked阻塞,但是阻塞点是Unknown. 这是因为没有添加clock模块到系统的原因,或者设置的系统心跳的定时器为NULL或者USER,这种情况下,有关tick的API 还可以照常调用,但是除了超时值0或者forever外其他值都无效. 用ROV查看clock模块的状态,可以看到系统的心跳驱动源配置为NULL,然后计时的值也恒定不变,为0. 查看timer模块,也可以看到,系统心跳的定时器没有,就是用来do timetick的. 解决方法是: 1.在runtime里面打开clock manager. 2.添加clock模块,设置如下,tick源为定时器,至于那个定时器,看系统配置,28335是0,1,2三个定时器. 3.编译运行,然后暂停,ROV查看clock模块,可以看到系统添加了一个clock,ticks值会心跳了. 4.clock模块驱动源配置为timer,就是依赖timer来完成,所以系统自动生成了一个无名timer,来完成dotick的功能.