硬汉嵌入式论坛

 找回密码
 立即注册
查看: 3369|回复: 1
收起左侧

[FreeRTOS] FREERTOS  仿真 切换任务 查看

[复制链接]

22

主题

12

回帖

21

积分

新手上路

积分
21
发表于 2016-8-12 15:14:55 | 显示全部楼层 |阅读模式
仿真条件:使用的是  F103的 FREERTOS模板工程,第一个工程,
               关闭所有外设
          //bsp_InitUart();
    //bsp_InitLed();         
    //bsp_InitKey();        
       关闭SYSTICK 滴答中断 portNVIC_SYSTICK_CTRL_REG = ( portNVIC_SYSTICK_CLK_BIT | portNVIC_SYSTICK_INT_BIT)  不让系统自动切换任务   
     所有建立的任务都是 死循环延时;



      目的:手工 调试 单步跟踪任务的切换过程
     现象:在启动函数vTaskStartScheduler  中可以启动 SVC中断,最终切换到 vTaskTaskUserIF  任务中,但是
    static void vTaskTaskUserIF(void *pvParameters)
{        
        

    while(1)
    {
        
         vTaskDelay(1000);
   
        
        
    }
}
vTaskDelay执行到,portYIELD_WITHIN_API();  这里的时候是 悬起 PENDASV中断,portNVIC_INT_CTRL_REG = portNVIC_PENDSVSET_BIT;     vPortYield这个函数执行完了 我觉得应该就执行 xPortPendSVHandler ,但是结果却是 vTaskDelay  返回了,没有启动  PENDSV  ,任务一直不能切换,   
  楼主 可以帮忙解答一下吗?资料也看了很多,现在直接仿真 结果 还是不行!
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107031
QQ
发表于 2016-8-13 10:53:44 | 显示全部楼层
这个应该是调试仿真的问题,以前好像遇到过。设置断点调试试试。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-14 17:53 , Processed in 0.160157 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表