“线程:测试”中讨论的其它部件
TI 专家您好,
我们正在使用 TMS570LC43xx 和 FreeRTOS。
要重新初始化,我们需要在删除任务之前删除任务资源,如计时器和信号等。
在调试过程中,在执行 xTimerDelete 后,代码会在“预取条目”异常时跳转。
我尝试仅删除该任务的已用资源。
此外,尝试 在这些函数之间插入小延迟。
请求指导解决此问题。
谢谢,此致,
阿尼尔
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
TI 专家您好,
我们正在使用 TMS570LC43xx 和 FreeRTOS。
要重新初始化,我们需要在删除任务之前删除任务资源,如计时器和信号等。
在调试过程中,在执行 xTimerDelete 后,代码会在“预取条目”异常时跳转。
我尝试仅删除该任务的已用资源。
此外,尝试 在这些函数之间插入小延迟。
请求指导解决此问题。
谢谢,此致,
阿尼尔
我刚刚进行了测试,创建了一个计时器,并在计时器开始后删除了它。 一切都如预期的那样好。 这是我的测试代码:
void vTimerCallback(时间处理_t xTimer )
{
TickType_t xTimeNow;
/*获取当前的刻度数。 *
xTimeNow = xTaskGetTickCount();
/*带计时器勾号的拖格式 GIOB[2:1]*/
gioTogleBit(gioPORTb,1);
// gioTogleBit(gioPORTb,2);
}
/*用户代码结束*/
Int main (无效)
{
/*用户码开始(3)*/
gioInit();
/*将高端计时器 GIO 端口 hetPort 引脚方向设置为所有输出*/
gioSetDirection (hetPORT1,0xFFFFFFFF);
gioSetDirection (gioPORTB,0xFFFF);
/*创建然后启动一些计时器。 以前启动计时器
RTOS 调度程序已启动意味着计时器将启动
RTOS 调度程序启动后立即运行。
*
xTimers = xTimerCreate
(/*只是一个文本名称,不被 RTOS 内核使用。 *
"计时器",
/*计时器周期(以嘀嗒信号为单位)必须大于0。 *
PDM_to_Ticks (1000),/*周期/时间*/
/*计时器将在过期时自动重新加载。 *
pdTRUE,
/*该 ID 用于存储计时器过期次数的计数,该计数被初始化为0。 *
(void *) 0,
/*每个计时器在回叫到期时调用相同的回叫。 *
vTimerCallback
);
IF( xTimers == NULL )
{
/*计时器未创建。 *
}
否则
{
/*启动计时器。 未指定阻止时间,和
即使是这样,也会因为 RTOS 而被忽略
计划程序尚未启动。 *
if( xTimerStart( xTimers,0)!= pdPASS )
{
/*无法将计时器设置为“活动”状态。 *
for (;;);/*故障*/
}
}
错误1
/*创建任务1 */
如果(xTaskCreate (vTask1,"Task1",configMINIMAL_STACK_SIZE,NULL,1,&xTask1Handle)!= pdTRUE)
{
无法创建/*任务*/
While (1);
}
/*创建任务1 */
如果(xTaskCreate (vTask2,"Task2",configMINIMAL_STACK_SIZE,NULL,2,&xTask1Handle)!= pdTRUE)
{
无法创建/*任务*/
While (1);
}
#endif
xTimerDelete (xTimers,0);
/*启动计划程序*/
vTaskStartScheduler();
/*永远跑*/
While (1);
/*用户代码结束*/
返回0;
}
/*用户码开始(4)*/
/*用户代码结束*/