发布网友 发布时间:2022-04-20 14:39
共1个回答
热心网友 时间:2023-07-27 22:05
创建另外的两个线程。我按照StartDefaultTask的代码,在 MX_FREERTOS_Init(void)内用osThreadCreate创建另外两个线程,分别为LEDTask和MeasureTempTask。
当三个线程同时创建的话,OS跑不起来,连StartDefaultTask都没有执行。
如果我第一次使用STM32CubeMx,创建了一个简单的FreeRTOS代码,默认生成的StartDefaultTask线程,我测试过,如果在StartDefaultTask线程内,只创建其中任意的两个线程,OS就可以跑起来。
FreeRTOS本身可以执行多个线程,但STM32CubeMx好像是用CMSIS来重新封装FreeRTOS,是不是CMSIS*了执行线程的数量?
另外,OS除了执行StartDefaultTask线程外,只执行另外创建的第一个线程。硬件平台是STM32F103RCT6。根据原代码,在freertos.c文件内的函数 MX_FREERTOS_Init(void)内,调用osThreadCreate创建线程