野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 15596|回复: 3

UCOS-II 多任务,三个LED同时闪烁卡死

[复制链接]
发表于 2018-7-5 11:40:44 | 显示全部楼层 |阅读模式
在UCOS-II多任务实验中,两个LED闪烁任务运行没问题,当三个LED闪烁任务同时运行时,程序就卡死在void HardFault_Handler(void)
了,请教大神,有人知道是什么问题吗?
*************************************************************************
int main(void)
{
        BSP_Init();
        OSInit();
        OSTaskCreate(Task_Start,(void *)0,
                &startup_task_stk[STARTUP_TASK_STK_SIZE-1],STARTUP_TASK_PRIO);
       
        OSStart();
        return 0;
}

**********************************************************************
void Task_Start(void *p_arg)
{
        (void)p_arg;
       
        OSTaskCreate(Task_LED1,(void *)0,
                           &task_led1_stk[TASK_LED1_STK_SIZE-1],
                     TASK_LED1_PRIO);

        OSTaskCreate(Task_LED2,(void *)0,
                           &task_led2_stk[TASK_LED2_STK_SIZE-1],
                     TASK_LED2_PRIO);

        OSTaskCreate(Task_LED3,(void *)0,
                           &task_led2_stk[TASK_LED3_STK_SIZE-1],
                     TASK_LED3_PRIO);

        while(1)
        {
                OSTimeDlyHMSM(0,0,0,50);
        }
}

void Task_LED1(void *p_arg)
{
        (void)p_arg;
       
        while(1)
        {
                LED1(ON);
                OSTimeDlyHMSM(0,0,0,100);
                LED1(OFF);
                OSTimeDlyHMSM(0,0,0,100);
        }
}

void Task_LED2(void *p_arg)
{
        (void)p_arg;
       
        while(1)
        {
                LED2(ON);
                OSTimeDlyHMSM(0,0,0,200);
                LED2(OFF);
                OSTimeDlyHMSM(0,0,0,200);
        }
}

void Task_LED3(void *p_arg)
{
        (void)p_arg;
       
        while(1)
        {
                LED3(ON);
                OSTimeDlyHMSM(0,0,0,300);
                LED3(OFF);
                OSTimeDlyHMSM(0,0,0,300);
        }
}

**************************************************************************
#ifndef __APP_CFG_H__
#define __APP_CFG_H__

#define STARTUP_TASK_PRIO       4
#define TASK_LED1_PRIO          5
#define TASK_LED2_PRIO          6
#define TASK_LED3_PRIO          7

#define STARTUP_TASK_STK_SIZE   80
#define TASK_LED1_STK_SIZE      80
#define TASK_LED2_STK_SIZE      80
#define TASK_LED3_STK_SIZE      80

#endif


回复

使用道具 举报

发表于 2018-7-5 13:39:04 | 显示全部楼层
任务堆栈是定义在哪里的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-7-6 14:26:42 | 显示全部楼层
笑你像狗 发表于 2018-7-5 13:39
任务堆栈是定义在哪里的

APP_CFG.H头文件里
回复 支持 反对

使用道具 举报

发表于 2018-7-10 15:31:51 | 显示全部楼层
把下面这些调大
#define STARTUP_TASK_STK_SIZE   80
#define TASK_LED1_STK_SIZE      80
#define TASK_LED2_STK_SIZE      80
#define TASK_LED3_STK_SIZE      80
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2025-12-7 05:39 , Processed in 0.041618 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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