OpenEdv-开源电子网

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

ucosii无法调用钩子函数 OSTaskIdleHook (void)

[复制链接]

33

主题

77

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
314
金钱
314
注册时间
2015-11-20
在线时间
76 小时
发表于 2019-7-25 21:32:00 | 显示全部楼层 |阅读模式
1金钱
空闲钩子函数原型如下:
#if OS_CPU_HOOKS_EN > 0 && OS_VERSION >= 251
void  OSTaskIdleHook (void)
{
#if OS_APP_HOOKS_EN > 0
    App_TaskIdleHook();
#endif
}
#endif
调用该函数的前提是OS_APP_HOOKS_EN > 0,在os_cfg.h文件中宏定义是:#define OS_APP_HOOKS_EN           0u,所以把他改成:#define OS_APP_HOOKS_EN           1u,后进行编译报错,恢复后无报错。难道是ucosii不支持使用钩子函数吗?

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

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165353
金钱
165353
注册时间
2010-12-1
在线时间
2108 小时
发表于 2019-7-26 02:44:41 | 显示全部楼层
回复

使用道具 举报

1

主题

15

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
455
金钱
455
注册时间
2018-10-12
在线时间
62 小时
发表于 2020-1-3 22:36:34 | 显示全部楼层
嗨,我是新手,刚好也遇到了这个问题。目前我学习的是ucosII的291版本,也是想用OS_TaskIdle的钩子函数App_TaskIdleHook。上述条件版本号已经符合,再把OS_APP_HOOKS_EN设置为1,的确有许多错误。追踪发现是这个开关还控制着其他的一些钩子函数,而这些钩子函数相当于连坑它也没预留。需要咱们自己写,由于有好几个,我就偷懒,OS_APP_HOOKS_EN依然为0,如图片这样,就可以用了。就是不太清楚这个钩子函数App_TaskIdleHook该写在哪里比较好?我现在写在了os_task.c的最下面,

void          App_TaskIdleHook        (void)
{
        static int num;
        num++;
        if(num%50000==0)
        {
                printf("Idle Task Running 50000 times!\r\n");
        }
}       


但是它与空闲任务OS_TaskIdle里面我屏蔽的那几行,效果一样!

void  OS_TaskIdle (void *p_arg)
{
#if OS_CRITICAL_METHOD == 3u                     /* Allocate storage for CPU status register           */
    OS_CPU_SR  cpu_sr = 0u;
#endif



    p_arg = p_arg;                               /* Prevent compiler warning for not using 'p_arg'     */
    for (;;) {
        OS_ENTER_CRITICAL();
        OSIdleCtr++;
//                                if(OSIdleCtr%500000 == 0)
//                                {
//                                        printf("Idle Task Running 500000 times!\r\n");
//                                }                       
        OS_EXIT_CRITICAL();
        OSTaskIdleHook();                        /* Call user definable HOOK                           */
    }
}


目前我还不清楚,哪种方法合适
QQ图片20200103223045.png
QQ图片20200103223119.png
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-25 20:12

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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