工具/软件:Code Composer Studio
大家好:
我在 TMS320F28377D 控制器上使用 FreeRTOS、在调用 vTaskStartScheduler ()后、遇到系统进入"非法 ISR"的问题。
下面是到目前为止我调试过的内容:
-当 vApplicationGetIdleTaskMemory()函数被定义和使用时、在 xPortStartScheduler()内调用 portRESTORE_FIRST_Context()后、代码进入非法的 ISR。
-如果我注释掉 vApplicationGetIdleTaskMemory (),那么它不会进入非法的 ISR ,但我的任务(ControlLoopTask)永远不会执行。
-我们使用 xTaskCreateStatic ()来创建任务,并将 configUSE_STATIC_ALLOCATION 设置为1。
- 我们配置了 CPUTIMER2和注册的 portTICK_ISR、启用了计时器和中断。
-任务创建:
TaskHandle_t 句柄= xTaskCreateStatic (ControlLoopTask、
"ControlTask"、
configMINIMAL_STACK_SIZE、
空、
tskIDLE_PRIORITY + 2、
xControlTaskStack、
&xControlTaskTCB);
- vApplicationGetIdleTaskMemory ():
void vApplicationGetIdleTaskMemory( StaticTask_t ** ppxIdleTaskTCBBuffer,
StackType_t ** ppxIdleTaskStackBuffer、
uint32_t *pulIdleTaskStackSize)
*ppxIdleTaskTCBBuffer =&idleTaskBuffer;
*ppxIdleTaskStackBuffer = idleTaskStack;
*pulIdleTaskStackSize = stack_size;
}
如有任何建议、将不胜感激。
谢谢!