野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 13803|回复: 7

关于修改UCOS II2.86系统滴答定时器时间的问题

[复制链接]
发表于 2015-11-17 10:36:38 | 显示全部楼层 |阅读模式
实验条件:野火STM32F103VET6早期开发板
实验工程:01.STM32-M3\野火STM32-02、程序\4-库开发系统篇\第四部分-库开发系统篇\野火M3-uCOS-II\野火M3-uCOS-II\2-野火M3-uCOS-II+LED(多任务)滴答定时器和UCOS II 2.86配置:
#define OS_TICK_STEP_EN           1u   /* Enable tick stepping feature for uC/OS-View                  */
#define OS_TICKS_PER_SEC        1000u   /* Set the number of ticks in one second                        */1ms中断一次

void SysTick_init(void)
{
  if (SysTick_Config(SystemCoreClock / OS_TICKS_PER_SEC))
  {
    /* Capture error */
    while (1);
  }
}
任务:
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);     
    }
}

结果:LED1秒闪烁5次。正常

只修改后的滴答定时器和UCOS II 2.86配置:
#define OS_TICK_STEP_EN           1u   /* Enable tick stepping feature for uC/OS-View                  */
#define OS_TICKS_PER_SEC        100u   /* Set the number of ticks in one second                        */10ms中断一次



理论结果:LED2秒闪烁1次。
看到的结果:LED1秒闪烁5次。
请大神帮忙解答一下,谢谢,致敬!
回复

使用道具 举报

发表于 2015-11-17 10:44:57 | 显示全部楼层
  LED1( ON );
        OSTimeDlyHMSM(0, 0,0,100);
        LED1( OFF);   
       OSTimeDlyHMSM(0, 0,0,100);   

每个循环200ms,1秒闪烁5次正常
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-11-17 10:59:24 | 显示全部楼层
请问这个跟
#define OS_TICKS_PER_SEC        100u   /* Set the number of ticks in one second */10ms中断一次

#define OS_TICKS_PER_SEC        1000u   /* Set the number of ticks in one second */1ms中断一次
有什么关系吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-11-17 11:00:10 | 显示全部楼层
flyleaf 发表于 2015-11-17 10:44
LED1( ON );
        OSTimeDlyHMSM(0, 0,0,100);
        LED1( OFF);   


请问这个跟
#define OS_TICKS_PER_SEC        100u   /* Set the number of ticks in one second */10ms中断一次

#define OS_TICKS_PER_SEC        1000u   /* Set the number of ticks in one second */1ms中断一次
有什么关系吗?
回复 支持 反对

使用道具 举报

发表于 2015-11-17 11:01:43 | 显示全部楼层
langwangjc 发表于 2015-11-17 10:59
请问这个跟
#define OS_TICKS_PER_SEC        100u   /* Set the number of ticks in one second */10ms中 ...

OSTimeDlyHMSM里的参数是时,分,秒,毫秒。这些上层的函数不受OS_TICKS_PER_SEC 影响,不然改一下这个OS_TICKS_PER_SEC ,上层调用的函数全都要改,那就恶心了,操作系统就没人愿意用了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-11-17 11:08:34 | 显示全部楼层
flyleaf 发表于 2015-11-17 11:01
OSTimeDlyHMSM里的参数是时,分,秒,毫秒。这些上层的函数不受OS_TICKS_PER_SEC 影响,不然改一下这个OS ...

好的,谢谢!
请问野火什么时候计划出STM32F407的开发板呢?
回复 支持 反对

使用道具 举报

发表于 2015-11-17 11:08:34 | 显示全部楼层
flyleaf 发表于 2015-11-17 11:01
OSTimeDlyHMSM里的参数是时,分,秒,毫秒。这些上层的函数不受OS_TICKS_PER_SEC 影响,不然改一下这个OS ...

当然,如果你的任务调度是10ms一次,那么这个OSTimeDlyHMSM延时如果小于10毫秒,可能就会有问题了,这些延时也是由任务调度函数来管理的,精度肯定小于调度器的精度
回复 支持 反对

使用道具 举报

发表于 2015-11-17 11:09:09 | 显示全部楼层
langwangjc 发表于 2015-11-17 11:08
好的,谢谢!
请问野火什么时候计划出STM32F407的开发板呢?

F429已经上架了,这两天就能发货。429比407强多了
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-11 15:30 , Processed in 0.028481 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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