OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5956|回复: 5

移植FreeRTos后,参建开始任务后,不能进入滴答定时器

[复制链接]

1

主题

2

帖子

0

精华

新手入门

积分
5
金钱
5
注册时间
2018-9-14
在线时间
0 小时
发表于 2018-9-14 09:50:18 | 显示全部楼层 |阅读模式
1金钱
移植FreeRTos后,参建开始任务后,不能进入滴答定时器中断,同时也不能进入其他函数。屏蔽后,可以进入滴答定时器中断。

//任务优先级
#define START_TASK_PRIO                1
//任务堆栈大小       
#define START_STK_SIZE                 128  
//任务句柄
TaskHandle_t StartTask_Handler;
//任务函数
void start_task(void *pvParameters);

//任务优先级
#define LED0_TASK_PRIO                2
//任务堆栈大小       
#define LED0_STK_SIZE                 50  
//任务句柄
TaskHandle_t LED0Task_Handler;
//任务函数
void led0_task(void *pvParameters);

//任务优先级
#define LED1_TASK_PRIO                3
//任务堆栈大小       
#define LED1_STK_SIZE                 50  
//任务句柄
TaskHandle_t LED1Task_Handler;
//任务函数
void led1_task(void *pvParameters);

int main(void)
{
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);//设置系统中断优先级分组4         
        LED_Init();                                                            //初始化LED       
        delay_init(50);                                            //延时函数初始化       
  RS232_SET_Init(25,9600);  
  //RS232_printf("nihao\r\n");
//uart_init(115200);                                        //初始化串口


       
        //创建开始任务
    xTaskCreate((TaskFunction_t )start_task,            //任务函数
                (const char*    )"start_task",          //任务名称
                (uint16_t       )START_STK_SIZE,        //任务堆栈大小
                (void*          )NULL,                  //传递给任务函数的参数
                (UBaseType_t    )START_TASK_PRIO,       //任务优先级
                (TaskHandle_t*  )&StartTask_Handler);   //任务句柄        
                                                               
   vTaskStartScheduler();          //开启任务调度
                                                               
}

//开始任务任务函数
void start_task(void *pvParameters)
{
    taskENTER_CRITICAL();           //进入临界区
    //创建LED0任务
    xTaskCreate((TaskFunction_t )led0_task,            
                (const char*    )"led0_task",          
                (uint16_t       )LED0_STK_SIZE,
                (void*          )NULL,                               
                (UBaseType_t    )LED0_TASK_PRIO,       
                (TaskHandle_t*  )&LED0Task_Handler);   
    //创建LED1任务
    xTaskCreate((TaskFunction_t )led1_task,     
                (const char*    )"led1_task",   
                (uint16_t       )LED1_STK_SIZE,
                (void*          )NULL,
                (UBaseType_t    )LED1_TASK_PRIO,
                (TaskHandle_t*  )&LED1Task_Handler);         
    vTaskDelete(StartTask_Handler); //删除开始任务
    taskEXIT_CRITICAL();            //退出临界区
}


//LED0任务函数
void led0_task(void *pvParameters)
{
    while(1)
    {
      LED0=~LED0;
        vTaskDelay(500);
                        LED0=1;
    }
}   

//LED1任务函数
void led1_task(void *pvParameters)
{
    while(1)
    {
     /*   LED1=0;
        vTaskDelay(200);
        LED1=1;
        vTaskDelay(800);*/
                        LED1 =1;
    }
}


最佳答案

查看完整内容[请看2#楼]

已解决。但是现在能进入start_task(),进不了led0_task()和led1_task()
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

2

帖子

0

精华

新手入门

积分
5
金钱
5
注册时间
2018-9-14
在线时间
0 小时
 楼主| 发表于 2018-9-14 09:50:19 | 显示全部楼层
已解决。但是现在能进入start_task(),进不了led0_task()和led1_task()
回复

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
19
金钱
19
注册时间
2018-8-28
在线时间
6 小时
发表于 2018-9-17 13:27:00 | 显示全部楼层
我也遇到同样的问题   移植后   不能任务调度   LED1和LED2不能切换
回复

使用道具 举报

15

主题

40

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
354
金钱
354
注册时间
2018-7-20
在线时间
46 小时
发表于 2018-9-19 16:38:47 | 显示全部楼层
S1387473 发表于 2018-9-17 13:27
我也遇到同样的问题   移植后   不能任务调度   LED1和LED2不能切换

你的浮点测试任务能执行吗?我的浮点 测试任务能执行,灯不切换,灯显示是绿色
回复

使用道具 举报

5

主题

57

帖子

0

精华

初级会员

Rank: 2

积分
143
金钱
143
注册时间
2017-9-26
在线时间
25 小时
发表于 2018-12-13 16:18:55 | 显示全部楼层
这是动态内存创建任务的方法,很可能是你的动态内存函数相关问题(没有SDRAM或者RAM没有初始化堆)导致的。试试用静态任务创建方法。
回复

使用道具 举报

5

主题

57

帖子

0

精华

初级会员

Rank: 2

积分
143
金钱
143
注册时间
2017-9-26
在线时间
25 小时
发表于 2018-12-13 16:59:45 | 显示全部楼层
如果不想用静态方式,用动态的方式就需要把configTOTAL_HEAP_SIZE 配置的大一些,不然任务不能成功创建。
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 23:09

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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