在用STM32F103C8T6开发FreeRTOS时,程序一跑起来就在
if( listCURRENT_LIST_LENGTH( &( pxReadyTasksLists[ tskIDLE_PRIORITY ] ) ) > ( UBaseType_t ) 1 )和
while( uxDeletedTasksWaitingCleanUp > ( UBaseType_t ) 0U )
之间来回跳转,debug也收不到任何数据,有没有什么较好的解决办法?
在用STM32F103C8T6开发FreeRTOS时,程序一跑起来就在
if( listCURRENT_LIST_LENGTH( &( pxReadyTasksLists[ tskIDLE_PRIORITY ] ) ) > ( UBaseType_t ) 1 )和
while( uxDeletedTasksWaitingCleanUp > ( UBaseType_t ) 0U )
之间来回跳转,debug也收不到任何数据,有没有什么较好的解决办法?
关注让【道友老李】来帮你解答,本回答参考gpt编写,并整理提供,如果还有疑问可以点击头像关注私信或评论。
如果答案让您满意,请采纳、关注,非常感谢!问题分析: 从你描述的情况来看,在两个条件判断之间不断来回跳转,并且无法进行debug,可能是由于任务调度出现问题引起的。这种情况可能是由于任务优先级设置不当或者任务阻塞的原因导致的。 解决方法:
/* 设置任务优先级 */
vTaskPrioritySet(xTaskHandle, uxNewPriority);
/* 使任务延时 */
vTaskDelay(pdMS_TO_TICKS(1000));
/* 挂起任务 */
vTaskSuspend(xTaskHandle);
/* 获取任务堆栈使用情况 */
uxHighWaterMark = uxTaskGetStackHighWaterMark(xTaskHandle);
通过以上方法来排查并解决问题,可以帮助你解决STM32F103C8T6开发FreeRTOS时出现的任务调度问题。如果问题仍然存在,可能需要更详细的调试信息来定位问题。