OpenEdv-开源电子网

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

求大神解答ucosIII进任务块后无法跳转!

[复制链接]

5

主题

10

帖子

0

精华

新手入门

积分
13
金钱
13
注册时间
2018-3-9
在线时间
7 小时
发表于 2019-2-15 08:53:48 | 显示全部楼层 |阅读模式
4金钱
无法进入led0_task与
led1_task的任务函数,我在这两个函数里面给予灯的高电平,测试时如果能进入这两个任务函数应该能闪烁,我尝试过直接创建多个任务函数,则会出现一个灯一直长亮(没有闪烁),另外一个灯不亮,OSTimeDlyHMSM(0,0,0,2000,OS_OPT_TIME_HMSM_STRICT,&err);发现到了这条函数无法使用。

上网查资料没找到想要的结果,在这里求大神帮忙看下能否解决,




//开始任务函数
void start_task(void *p_arg)
{
OS_ERR err;
CPU_SR_ALLOC();
p_arg = p_arg;
GPIO_AllInit();


CPU_Init();
  GPIO_SetBits(GPIOB,GPIO_Pin_12);      
#if OS_CFG_STAT_TASK_EN > 0u
   OSStatTaskCPUUsageInit(&err);   //统计任务               
#endif

#ifdef CPU_CFG_INT_DIS_MEAS_EN  //如果使能了测量中断关闭时间
    CPU_IntDisMeasMaxCurReset();
#endif

#if OS_CFG_SCHED_ROUND_ROBIN_EN  //当使用时间片轮转的时候
  //使能时间片轮转调度功能,时间片长度为1个系统时钟节拍,既1*5=5ms
OSSchedRoundRobinCfg(DEF_ENABLED,1,&err);  
#endif  

OS_CRITICAL_ENTER(); //进入临界区

//创建LED0任务
OSTaskCreate((OS_TCB  * )&Led0TaskTCB,  
     (CPU_CHAR * )"led0 task",   
                 (OS_TASK_PTR )led0_task,   
                 (void  * )0,     
                 (OS_PRIO   )LED0_TASK_PRIO,     
                 (CPU_STK   * )&LED0_TASK_STK[0],
                 (CPU_STK_SIZE)LED0_STK_SIZE/10,
                 (CPU_STK_SIZE)LED0_STK_SIZE,  
                 (OS_MSG_QTY  )0,     
                 (OS_TICK   )0,     
                 (void    * )0,     
                 (OS_OPT      )OS_OPT_TASK_STK_CHK|OS_OPT_TASK_STK_CLR,
                 (OS_ERR  * )&err);   
     
//创建LED1任务
OSTaskCreate((OS_TCB  * )&Led1TaskTCB,  
     (CPU_CHAR * )"led1 task",   
                 (OS_TASK_PTR )led1_task,   
                 (void  * )0,     
                 (OS_PRIO   )LED1_TASK_PRIO,      
                 (CPU_STK   * )&LED1_TASK_STK[0],
                 (CPU_STK_SIZE)LED1_STK_SIZE/10,
                 (CPU_STK_SIZE)LED1_STK_SIZE,  
                 (OS_MSG_QTY  )0,     
                 (OS_TICK   )0,     
                 (void    * )0,   
                 (OS_OPT      )OS_OPT_TASK_STK_CHK|OS_OPT_TASK_STK_CLR,
                 (OS_ERR  * )&err);
   
//创建浮点测试任务
OSTaskCreate((OS_TCB  * )&FloatTaskTCB,  
     (CPU_CHAR * )"float test task",   
                 (OS_TASK_PTR )float_task,   
                 (void  * )0,     
                 (OS_PRIO   )FLOAT_TASK_PRIO,      
                 (CPU_STK   * )&FLOAT_TASK_STK[0],
                 (CPU_STK_SIZE)FLOAT_STK_SIZE/10,
                 (CPU_STK_SIZE)FLOAT_STK_SIZE,  
                 (OS_MSG_QTY  )0,     
                 (OS_TICK   )0,     
                 (void    * )0,   
                 (OS_OPT      )OS_OPT_TASK_STK_CHK|OS_OPT_TASK_STK_CLR,
                 (OS_ERR  * )&err);         
OS_TaskSuspend((OS_TCB*)&StartTaskTCB,&err);  //挂起开始任务   
OS_CRITICAL_EXIT(); //进入临界区
         
         
}
//led0任务函数
void led0_task(void *p_arg)
{
OS_ERR err;
p_arg = p_arg;
while(1)
{
  GPIO_SetBits(GPIOB,GPIO_Pin_13);
  OSTimeDlyHMSM(0,0,0,2000,OS_OPT_TIME_HMSM_STRICT,&err); //延时200ms
  GPIO_ResetBits(GPIOB,GPIO_Pin_13);
  OSTimeDlyHMSM(0,0,0,1000,OS_OPT_TIME_HMSM_STRICT,&err); //延时500ms
}
}
//led1任务函数
void led1_task(void *p_arg)
{
OS_ERR err;
p_arg = p_arg;
while(1)
{
  GPIO_SetBits(GPIOB,GPIO_Pin_14);
  OSTimeDlyHMSM(0,0,0,1000,OS_OPT_TIME_HMSM_STRICT,&err); //延时200ms
  GPIO_ResetBits(GPIOB,GPIO_Pin_14);
  OSTimeDlyHMSM(0,0,0,1000,OS_OPT_TIME_HMSM_STRICT,&err); //延时500ms
}
}

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

使用道具 举报

头像被屏蔽

18

主题

184

帖子

0

精华

禁止发言

积分
258
金钱
258
注册时间
2019-1-10
在线时间
10 小时
发表于 2019-2-16 15:24:45 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

5

主题

10

帖子

0

精华

新手入门

积分
13
金钱
13
注册时间
2018-3-9
在线时间
7 小时
 楼主| 发表于 2019-2-18 08:19:37 | 显示全部楼层

可是好多天了还是没人来帮忙解答下啊
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-23 22:35

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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