OpenEdv-开源电子网

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

关于UCOS任务的问题,两个任务不能共存

[复制链接]

12

主题

43

帖子

0

精华

初级会员

Rank: 2

积分
50
金钱
50
注册时间
2018-10-12
在线时间
28 小时
发表于 2020-1-8 14:52:31 | 显示全部楼层 |阅读模式
10金钱
有两个任务莫名其妙不能共存,一共存就死机,以前没这个问题的
这是建立的四个任务
OSTaskCreate(ADC_TASK,(void *)0,
                     &ADC_TASK_STK[ADC_TASK_STK_SIZE],
                     ADC_TASK_PRIO);
           OSTaskCreate(DS1302_TASK,(void *)0,
                     &DS1302_TASK_STK[DS1302_TASK_STK_SIZE],
                     DS1302_TASK_PRIO);
           OSTaskCreate(USART_TASK,(void *)0,
                     &USART_TASK_STK[USART_TASK_STK_SIZE],
                      USART_TASK_PRIO);
       
          OSTaskCreate(USART1_TASK,(void *)0,
                     &USART1_TASK_STK[USART1_TASK_STK_SIZE],
                      USART1_TASK_PRIO);

这是任务的其他信息
OS_STK  ADC_TASK_STK[ADC_TASK_STK_SIZE];
OS_STK  DS1302_TASK_STK[DS1302_TASK_STK_SIZE];

OS_STK  USART_TASK_STK[USART_TASK_STK_SIZE];
OS_STK  USART1_TASK_STK[USART1_TASK_STK_SIZE];


#define  ADC_TASK_PRIO     7
#define  ADC_TASK_STK_SIZE  1200

#define  DS1302_TASK_PRIO     21
#define  DS1302_TASK_STK_SIZE  1200

#define  USART_TASK_PRIO      14
#define  USART_TASK_STK_SIZE  1200

#define  USART1_TASK_PRIO      20
#define  USART1_TASK_STK_SIZE  1200

其中的ADC_TASK和USART1_TASK不能共存,在一起就死机,把任一一个注释掉,其他三个任务都可以跑

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

12

主题

43

帖子

0

精华

初级会员

Rank: 2

积分
50
金钱
50
注册时间
2018-10-12
在线时间
28 小时
 楼主| 发表于 2020-1-8 14:55:51 | 显示全部楼层
这是ADC任务的程序
void  ADC_TASK(void  *p_arg)
        {                                
                 /*#if OS_CRITICAL_METHOD == 3                     
      OS_CPU_SR  cpu_sr = 0;
     #endif */
                u8  ADC_msg = 1;
               
                (void)p_arg;
                DMA_Cmd(DMA1_Channel1, ENABLE);
          ADC_SoftwareStartConvCmd(ADC1, ENABLE);
                while(1)
                {
                                while(DMA_GetFlagStatus(DMA1_FLAG_TC1)==RESET);//μè′y′«êäíê3é·ñÔòμúò»Î»êy¾YèYò×¶aê§
                                DMA_ClearFlag(DMA1_FLAG_TC1);
                                ADC_filter();       
                                Water_Control();
                                ADC_SET();
                          ss++;
                          Write_Addres_NUM(0x0005,ss);
                          if(ss >= 100)
                          {
                                  ss = 0;
                          }
                                OSMboxPost(GUIMBox,(void  *)&ADC_msg);
                                OSTimeDlyHMSM(0,0,0,800);
                }
        }
回复

使用道具 举报

12

主题

43

帖子

0

精华

初级会员

Rank: 2

积分
50
金钱
50
注册时间
2018-10-12
在线时间
28 小时
 楼主| 发表于 2020-1-8 14:56:26 | 显示全部楼层
这是USART1任务的程序

void USART1_TASK(void  *p_arg)
        {
                /*#if OS_CRITICAL_METHOD == 3                     
    OS_CPU_SR  cpu_sr = 0;
    #endif*/
                u8 err;               
                (void)p_arg;
                while(1)
                {
                         cco++;
                        Write_Addres_NUM(0x0004, cco);
                        if(cco >= 100)
                        {
                                cco = 0;
                        }
          OSTimeDlyHMSM(0,0,0,500);
           }
        }
回复

使用道具 举报

12

主题

43

帖子

0

精华

初级会员

Rank: 2

积分
50
金钱
50
注册时间
2018-10-12
在线时间
28 小时
 楼主| 发表于 2020-1-8 14:57:23 | 显示全部楼层
本帖最后由 洛阳花开 于 2020-1-8 15:04 编辑

我也修改过优先级,也不管用。我也没看出来这两个任务那里有问题,只要两个都在,程序就死机,注释掉其中一个,就没事
回复

使用道具 举报

1

主题

882

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3071
金钱
3071
注册时间
2018-2-7
在线时间
285 小时
发表于 2020-1-8 16:35:01 | 显示全部楼层
会不会是任务的堆栈太大了
回复

使用道具 举报

12

主题

43

帖子

0

精华

初级会员

Rank: 2

积分
50
金钱
50
注册时间
2018-10-12
在线时间
28 小时
 楼主| 发表于 2020-1-8 17:05:31 | 显示全部楼层
HXYDJ 发表于 2020-1-8 16:35
会不会是任务的堆栈太大了

我把这两个任务中的任一一个任务注释掉,跑另外三个任务就没事,堆栈也是这么大。堆栈大了也有坏处吗
回复

使用道具 举报

28

主题

294

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1790
金钱
1790
注册时间
2018-3-26
在线时间
294 小时
发表于 2020-1-8 18:34:25 | 显示全部楼层
是任务堆栈小了吧,死机就加大看看,或者仿真找到在哪死机的,看能找到原因不
茵茵猪头
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-20 03:02

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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