发现FreeRTOS V10.2.1 一个好像BUG的问题

2019-12-09 19:13发布

  1. void vTask1(void)
  2. {
  3. //        xTaskNotifyGive(xHandleTaskGame);                                //发出信号量
  4.         while(1)
  5.         {
  6.                 vTaskSuspend(xHandleTask2);                                        //挂起任务
  7.                 vTaskResume(xHandleTask2);                                        //恢复任务
  8.                 vTaskDelay(100);
  9.         }
  10. }

  11. void vTask2(void)
  12. {
  13.         uint32_t count=0;
  14.         while(1)
  15.         {
  16.                 ulTaskNotifyTake(pdTRUE,portMAX_DELAY);                //等待信号量
  17.                 count ++;
  18.         }
  19. }
复制代码

两个任务TASK1 TASK2,TASK1只要挂起和恢复TASK2,TASK2的任务信号ulTaskNotifyTake(pdTRUE,portMAX_DELAY)就变得有效,count++;

测试MCU STM32F030R8T6;FreeRTOS Kernel V10.2.1;

测试和优先级无关,堆栈没有溢出


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
flash3g
1楼-- · 2019-12-10 00:55
把所有任务去掉,保留这两个任务,还是一样问题
RAMILE
2楼-- · 2019-12-10 06:53
vTaskResume    和  notify   操作的是一个标识字???
flash3g
3楼-- · 2019-12-10 08:07
RAMILE 发表于 2019-11-16 23:07
vTaskResume    和  notify   操作的是一个标识字???

TASK2的句柄
flash3g
4楼-- · 2019-12-10 11:02
 精彩回答 2  元偷偷看……
styleno1
5楼-- · 2019-12-10 14:08
楼主定位到问题位置了吗?
ulTaskNotifyTake()返回值非零吗?
flash3g
6楼-- · 2019-12-10 18:46
styleno1 发表于 2019-11-18 09:46
楼主定位到问题位置了吗?
ulTaskNotifyTake()返回值非零吗?

这个问题分析了几天没找到原因,最后把任务信号量改成独立创建的信号量算是解决了问题。

刚测试你说的问题了,返回值是0。

一周热门 更多>