RTX5同优先级任务之间调度切换,如果没有调用osDelay之类的切换,函数osThreadYield()要加上
像ThreadX,uCOS这种,没有这样的需求。使用RTX5,什么都不加是不行的,需要加上切换函数处理。函数说明:
比如这样写,是不可以的:
/*
*********************************************************************************************************
* 函 数 名: AppTaskLED
* 功能说明: LED闪烁。
* 形 参: 无
* 返 回 值: 无
* 优 先 级: osPriorityHigh2
*********************************************************************************************************
*/
void AppTaskLED(void *argument)
{
while(1)
{
bsp_LedToggle(2);
}
}
/*
*********************************************************************************************************
* 函 数 名: AppTaskMsgPro
* 功能说明: 消息处理,暂未使用。
* 形 参: 无
* 返 回 值: 无
* 优 先 级: osPriorityHigh3
*********************************************************************************************************
*/
void AppTaskMsgPro(void *argument)
{
while(1)
{
bsp_LedToggle(1);
}
}
改成下面就可以了:
/*
*********************************************************************************************************
* 函 数 名: AppTaskLED
* 功能说明: LED闪烁。
* 形 参: 无
* 返 回 值: 无
* 优 先 级: osPriorityHigh2
*********************************************************************************************************
*/
void AppTaskLED(void *argument)
{
while(1)
{
bsp_LedToggle(2);
osThreadYield();
}
}
/*
*********************************************************************************************************
* 函 数 名: AppTaskMsgPro
* 功能说明: 消息处理,暂未使用。
* 形 参: 无
* 返 回 值: 无
* 优 先 级: osPriorityHigh3
*********************************************************************************************************
*/
void AppTaskMsgPro(void *argument)
{
while(1)
{
bsp_LedToggle(1);
osThreadYield();
}
}
谢谢指导 硬汉大佬,在任务里面执行了osThreadYield(); 但是任务没有切换到其他任务这里因为什么,怎么调试比较好 硬汉大佬,在A任务里面执行了osThreadYield();和osDelay(100); 但是没有切换到B 任务和C任务,这个是为什么,应该大概怎么调试那,:lol zkm123 发表于 2024-3-27 17:28
硬汉大佬,在A任务里面执行了osThreadYield();和osDelay(100); 但是没有切换到B 任务和C任务,这个是为什 ...
看看是不是卡死在什么地方了。
页:
[1]