先前KDS+PE+MQX创建一个工程,MQX选择MQXStandard模式,用到了一个轻量级事件组,程序能正常运行, 现在又创建了一个KDS+PE+MQX,开始选择MQX Standard模式,后又改用MQX Lite模式,用到了一个轻量级事件组,结果调用了 _lwevent_wait_for(&lwevent_group, event_timer, FALSE, NULL)函数的任务不能执行, 查看调试器任务列表状态如下: State: Unhandled Interrupt TaskError Code: MQX_UNHANDLED_INTERRUPT(0X0041) 反复核对代码,调试,折腾了差不多两天,终于找到了问题所在: 1、 MQX选择MQXStandard模式,会在建立rtos_main_task.c文件,并创建main_task()任务,该任务只在启动时运行一次即被阻塞, 2、 MQX选择MQXLite模式时,不建立rtos_main_task.c文件,也不创建main_task()任务 3、 在PE中,将MQX由MQX Standard模式改为MQX Lite模式时,并不将rtos_main_task.c文件删除,该文件还残留在工程中,main_task()函数也不被调用, 4、 我一般喜欢将初始化函数方在main_task()中, _lwevent_create(&lwevent_group,kEventManualClear) 5、 因为_lwevent_create()没有执行,致使调用_lwevent_wait_for()的任务不被执行 总结 1、 KDS+PE+MQX确实能快速创建工程,免去许多初始化代码的编写工作, 2、 KDS+PE还存在很多不足,又没有好的教程和参考资料,使用的群体不多,遇到问题主要靠自己慢慢摸索,比较费时间。
|