OpenEdv-开源电子网

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

关于原子的空闲任务钩子函数实验

[复制链接]

12

主题

101

帖子

0

精华

高级会员

Rank: 4

积分
963
金钱
963
注册时间
2016-3-16
在线时间
109 小时
发表于 2017-5-1 21:46:24 | 显示全部楼层 |阅读模式
15金钱
[mw_shl_code=c,true]//开始任务函数
void start_task(void *p_arg)
{
        OS_ERR err;
        CPU_SR_ALLOC();
        p_arg = p_arg;

        CPU_Init();
#if OS_CFG_STAT_TASK_EN > 0u
   OSStatTaskCPUUsageInit(&err);          //统计任务               
#endif
       
#ifdef CPU_CFG_INT_DIS_MEAS_EN                //如果使能了测量中断关闭时间
    CPU_IntDisMeasMaxCurReset();       
#endif

#if OS_CFG_APP_HOOKS_EN                                //使用钩子函数
        App_OS_SetAllHooks();//初始化钩子指针                       
#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);         
        OS_CRITICAL_EXIT();        //退出临界区
}[/mw_shl_code]

请问为什么这里开始任务退出临界区为什么不挂起或删除开始任务呢?这样不会一直运行开始任务吗,这样就会一直创建其他任务呀,感觉不能理解,求助。

最佳答案

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

自己添加任务删除或者挂起,估计是写例程的时候漏写了
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
发表于 2017-5-1 21:46:25 | 显示全部楼层
自己添加任务删除或者挂起,估计是写例程的时候漏写了
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165287
金钱
165287
注册时间
2010-12-1
在线时间
2107 小时
发表于 2017-5-2 00:31:09 | 显示全部楼层
哪个例程?
回复

使用道具 举报

12

主题

101

帖子

0

精华

高级会员

Rank: 4

积分
963
金钱
963
注册时间
2016-3-16
在线时间
109 小时
 楼主| 发表于 2017-5-2 08:16:21 | 显示全部楼层

例7-1 UCOSIII空闲任务钩子函数的使用
回复

使用道具 举报

12

主题

101

帖子

0

精华

高级会员

Rank: 4

积分
963
金钱
963
注册时间
2016-3-16
在线时间
109 小时
 楼主| 发表于 2017-5-2 11:48:53 | 显示全部楼层
zuozhongkai 发表于 2017-5-2 10:04
自己添加任务删除或者挂起,估计是写例程的时候漏写了

奥奥。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-2 00:24

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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