野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 28417|回复: 3

在uCOS ii 中SysTick定时器中断周期的问题

[复制链接]
发表于 2014-4-7 11:26:43 | 显示全部楼层 |阅读模式
在uCOS ii 中SysTick定时器为系统提供时钟节拍,其初始化函数是:
//***********************************//
  函数名:SysTick_init
  描述  :配置SysTick定时器
  输入  :无
  输出  :无
void SysTick_init(void)
{
    SysTick_Config(SystemFrequency/OS_TICKS_PER_SEC);初始化并使能SysTick定时器
}
//***********************************//
其中OS_TICKS_PER_SEC定义是:
#define OS_TICKS_PER_SEC        1000u   /* Set the number of ticks in one second                        */
根据 SystemFrequency 定义72MHz(野火ucos例程中使用的是STM32 的3.0库文件)

//***********************************//
1. /* ticks 常用值 */
2. SystemFrequency / 1000 // 1ms 中断一次
3. SystemFrequency / 100000 // 10us 中断一次
4. SystemFrequency / 1000000 // 1us 中断一次
//***********************************//
所以SysTick定时器的中断周期是1ms, 而非如OS_TICKS_PER_SEC定义,1s中断一次

以上理解是否正确,敬请指正。
回复

使用道具 举报

发表于 2014-4-7 11:29:43 | 显示全部楼层
OS_TICKS_PER_SEC 的意思是1s内tick的计数值,定义的是1000,所以1s内计数1000次,就是1ms中断一次。
我们的systick定时器正是这样运行的,也跟OS_TICKS_PER_SEC 的定义一致 1ms一次

这个OS_TICKS_PER_SEC 宏一定要与实际的情况一致,不然在用到ucos的延时会不准确的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-4-8 19:54:56 | 显示全部楼层
哦,我理解错了,谢谢指导!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-4-8 19:55:23 | 显示全部楼层
flyleaf 发表于 2014-4-7 11:29
OS_TICKS_PER_SEC 的意思是1s内tick的计数值,定义的是1000,所以1s内计数1000次,就是1ms中断一次。
我们 ...


哦,我理解错了,谢谢指导!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-24 00:45 , Processed in 0.041928 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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