- void vTask1(void)
- {
- // xTaskNotifyGive(xHandleTaskGame); //发出信号量
- while(1)
- {
- vTaskSuspend(xHandleTask2); //挂起任务
- vTaskResume(xHandleTask2); //恢复任务
- vTaskDelay(100);
- }
- }
- void vTask2(void)
- {
- uint32_t count=0;
- while(1)
- {
- ulTaskNotifyTake(pdTRUE,portMAX_DELAY); //等待信号量
- count ++;
- }
- }
复制代码
两个任务TASK1 TASK2,TASK1只要挂起和恢复TASK2,TASK2的任务信号ulTaskNotifyTake(pdTRUE,portMAX_DELAY)就变得有效,count++;
测试MCU STM32F030R8T6;FreeRTOS Kernel V10.2.1;
测试和优先级无关,堆栈没有溢出
- while( ! ulTaskNotifyTake(pdTRUE,portMAX_DELAY)); //等待信号量
复制代码测试加一个判断可以解决问题,但是我觉得这可能是FreeRTOS的bug
一周热门 更多>