本帖最后由 xxs-133546 于 2016-8-10 17:35 编辑
开发环境: kds3.2, ksdk1.2
Kds+pe+ksdk自动建立的工程,
Pe设置了一个定时器组件,定时时间是1000000us (1s),中断服务程序:
void hwTim0_OnTimeOut(void* data)
ADC采样任务Adc_task()不被执行,其它任务能正常执行,调试器查看该任务状态如下:
State: Unhandled Interrupt
Task Error Code: MQX_UNHANDLED_INTERRUPT(0X0041)
要如何解决才能保证Adc_task()能执行?
相关代码如下:
/* * 定义事件组常量 */ enum_lwevent_group_t { event_timer = ((1uL) << (0)) /* 定时器PIT0 事件位 */ }; event_t lwevent_group; // 定义轻量级事件组 主任务 void main_task(os_task_param_t task_init_data) { while (1) { /* Write your code here ... */ _lwevent_create(&lwevent_group, kEventAutoClear); // 创建轻量级事件组,自动清零
OSA_TimeDelay(10); /* Example code (for task release) */ } }
定时器中断服务程序 void hwTim0_OnTimeOut(void* data) { /* Write your code here ... */ // PIT0 定时中断, 置事件位 _lwevent_set(&lwevent_group, event_timer); }
AD采样任务 void Adc_task(os_task_param_t task_init_data) { /* Write your local variable definition here */ while (1) { /* Write your code here ... */ _lwevent_wait_for(&lwevent_group, event_timer, FALSE, NULL); //代码省略 _lwevent_clear(&lwevent_group, event_timer); OSA_TimeDelay(10); /* Example code (for task release) */ } }
|