搜索
bottom↓
回复: 3

FreeRTOS多个任务跑,会有1个任务莫名死掉,谁知道原因?

[复制链接]

出0入0汤圆

发表于 2017-11-5 13:13:30 | 显示全部楼层 |阅读模式
本帖最后由 天马行空 于 2017-11-5 13:37 编辑

static void System_Task(void *pvParameters)
{
xTaskCreate(   Task1,
                                "Sys Task",
                             640 ,
                              NULL,
                              1,       //优先级1
                              NULL );

xTaskCreate(   Task2,
                                "Sys Task",
                             320 ,
                              NULL,
                              2,       //优先级2
                              NULL );

xTaskCreate(   Task3,
                                "Sys Task",
                               320 ,
                               NULL,
                               2,    //优先级2
                               NULL );

xTaskCreate(   Task4,
                                 "Sys Task",
                             320 ,
                             NULL,
                               3,    //优先级3
                               NULL );

xTaskCreate(   Task5,
                                 "Sys Task",
                              320 ,
                               NULL,
                              3,      //优先级3
                               NULL );

SysTaskLoop(); //System Task


    while(1)  //掉坑里啦.........
            vTaskDelay(portMAX_DELAY);

}


//mani()函数里只创建了一个优先级最低的总任务
xTaskCreate(   System_Task,
                                 "Sys Task",
                              320 ,
                               NULL,
                               0,     //优先级0
                               NULL );



///////////////////////////以下是6个任务函数////////////////////////////////////////////////////////////////////////////////////////////

void SysTaskLoop(void *pvParameters)
{
     while(1) {
        //此任务没加 vTaskDelay( ),试着加了也没效果
    }



void Task1(void *pvParameters)
{
     while(1) {
        //此处略去XX行
        vTaskDelay(200);
      }

void Task2(void *pvParameters)
{
     while(1) {
        //此处略去XX行
        vTaskDelay(100);
      }

void Task3(void *pvParameters)
{
     while(1) {
        //此处略去XX行
        vTaskDelay(200);
      }

void Task4(void *pvParameters)
{
     while(1) {
        //此处略去XX行
        vTaskDelay(100);
      }

void Task5(void *pvParameters)
{
     while(1) {
        //此处略去XX行
        vTaskDelay(500);
      }



问题:之前系统只有4个任务,跑的很正常,后来加了2个任务,就出现SysTaskLoop()任务跑2、3次就死掉了。加vTaskDaly()、加大HEAP、STACK等等也效果。但其它任务都正常跑。
            再试着提高SysTaskLoop()优先级,结果死机。该试的参数都试过了,现在不知道问题出在哪里。谁能帮忙看看??

出0入0汤圆

发表于 2017-11-5 13:33:23 | 显示全部楼层
优先级0是空闲任务,不能自己定义吧。xTaskCreate(   Task1, 都是task1??? 什么鬼

出0入0汤圆

 楼主| 发表于 2017-11-5 13:36:45 | 显示全部楼层
Puppey 发表于 2017-11-5 13:33
优先级0是空闲任务,不能自己定义吧。xTaskCreate(   Task1, 都是task1??? 什么鬼

不好意思,复制错了。。。。是Task1~Task5

出0入0汤圆

发表于 2017-11-5 15:13:38 | 显示全部楼层
首先确定是增加任意任务都会导致该问题还是只有在任务里执行特定代码才会这样。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-20 00:25

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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