完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
使用FreeRTOS创建了4个任务,但是始终只有前两个任务执行,如果注释掉第二个任务后,就会第一个和第三个执行,注释掉第一个任务,只有第二个和第三个任务执行,不知道是哪里有问题,还请个位高手指点一下,谢谢!
创建任务原码:static void TESK_LED1(void const *argument); static void TESK_LED2(void const *argument); static void TESK_LED3(void const *argument); static void TESK_LED4(void const *argument); static void SystemClock_Config(void); static void Error_Handler(void); void Start_Task( void * pvParameters ); /* Private functions ---------------------------------------------------------*/ //定义开始任务堆栈大小和任务优先级 #define START_TASK_SIZE 120 #define START_TASK_PRIO 1 //定义LED1任务堆栈大小和任务优先级 #define LED1_TASK_SIZE 120 #define LED1_TASK_PRIO 4 //定义LED2任务堆栈大小和任务优先级 #define LED2_TASK_SIZE 120 #define LED2_TASK_PRIO 5 //定义LED3任务堆栈大小和任务优先级 #define LED3_TASK_SIZE 120 #define LED3_TASK_PRIO 2 //定义LED4任务堆栈大小和任务优先级 #define LED4_TASK_SIZE 120 #define LED4_TASK_PRIO 3 /** * @brief Main program * @param None * @retval None */ TaskHandle_t START_TASK_Handel_t;//任务句柄 TaskHandle_t LED1_TASK_Handel_t; TaskHandle_t LED2_TASK_Handel_t; TaskHandle_t LED3_TASK_Handel_t; TaskHandle_t LED4_TASK_Handel_t; int main(void) { /* STM32F4xx HAL library initialization: - Configure the Flash prefetch, instruction and Data caches - Configure the Systick to generate an interrupt each 1 msec - Set NVIC Group Priority to 4 - Global MSP (MCU Support Package) initialization */ HAL_Init(); /* Configure the system clock to 180 MHz */ SystemClock_Config(); /* Configure LED1 and LED3 */ BSP_LED_Init(LED1); BSP_LED_Init(LED2); BSP_LED_Init(LED3); BSP_LED_Init(LED4); //创建开始任务 xTaskCreate((TaskFunction_t) Start_Task, (char* ) "start_tesk", (uint16_t ) START_TASK_SIZE, (void * ) NULL, (UBaseType_t ) START_TASK_PRIO, (TaskHandle_t *) &START_TASK_Handel_t ); //开启任务调度器 vTaskStartScheduler(); } void Start_Task( void * pvParameters ) { taskENTER_CRITICAL(); //进入临界区 //创建TESK_LED1任务 xTaskCreate((TaskFunction_t) TESK_LED1, (char* ) "LED1_tesk", (uint16_t ) LED1_TASK_SIZE, (void * ) NULL, (UBaseType_t ) LED1_TASK_PRIO, (TaskHandle_t *) &LED1_TASK_Handel_t ); //创建TESK_LED2任务 xTaskCreate((TaskFunction_t) TESK_LED2, (char* ) "LED2_tesk", (uint16_t ) LED2_TASK_SIZE, (void * ) NULL, (UBaseType_t ) LED2_TASK_PRIO, (TaskHandle_t *) &LED2_TASK_Handel_t ); //创建TESK_LED3任务 xTaskCreate((TaskFunction_t) TESK_LED3, (char* ) "LED3_tesk", (uint16_t ) LED3_TASK_SIZE, (void * ) NULL, (UBaseType_t ) LED3_TASK_PRIO, (TaskHandle_t *) &LED3_TASK_Handel_t ); //创建TESK_LED4任务 xTaskCreate((TaskFunction_t) TESK_LED4, (char* ) "LED4_tesk", (uint16_t ) LED4_TASK_SIZE, (void * ) NULL, (UBaseType_t ) LED4_TASK_PRIO, (TaskHandle_t *) &LED4_TASK_Handel_t ); vTaskDelete(START_TASK_Handel_t);//执行1次后删除开始任务 taskEXIT_CRITICAL();//退出临界区 } static void TESK_LED1(void const *argument) { while(1) { BSP_LED_On(LED1); vTaskDelay(1000); BSP_LED_Off(LED1); vTaskDelay(1000); } } static void TESK_LED2(void const *argument) { while(1) { BSP_LED_On(LED2); vTaskDelay(200); BSP_LED_Off(LED2); vTaskDelay(800); } } static void TESK_LED3(void const *argument) { while(1) { BSP_LED_On(LED3); vTaskDelay(50); BSP_LED_Off(LED3); vTaskDelay(50); } } static void TESK_LED4(void const *argument) { while(1) { BSP_LED_On(LED4); vTaskDelay(100); BSP_LED_Off(LED4); vTaskDelay(800); } } |
|
相关推荐
5个回答
|
|
非常感谢各位的热心解答,问题已解决,是因为我给系统分配的内存不够用了,增加内存就可以了;
#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 4 * 1024 ) ) /* 2 Kbytes */ 更改为:以下大小就ok啦; #define configTOTAL_HEAP_SIZE ( ( size_t ) ( 8 * 1024 ) ) /* 2 Kbytes */ |
|
|
|
|
|
|
|
把四个任务优先级改成一样的试试,或者把延时时间全部设为一样看看。
|
|
|
|
看配置文件 #define INCLUDE_vTaskDelay 1 这个有没有定义为1
|
|
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
795 浏览 0 评论
1154 浏览 1 评论
2530 浏览 5 评论
2863 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2713 浏览 6 评论
keil5中manage run-time environment怎么是灰色,不可以操作吗?
1074浏览 3评论
195浏览 2评论
459浏览 2评论
370浏览 2评论
M0518 PWM的电压输出只有2V左右,没有3.3V是怎么回事?
455浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 12:16 , Processed in 1.134027 second(s), Total 58, Slave 49 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号