STM32F10x的定时器使用

//=====================================================================
//TITLE:
// STM32F10x的定时器使用
//AUTHOR:
// norains
//DATE:
// Thursday 16-September-2010
//Environment:
// NULL
//=====================================================================

Cortex-M3核心有个和以往的ARM所不同的特性,就是其有个定时器特性,可以非常方便地进行定时器中断的设置。具有同样核心的STM32F10x自然也有这个本领,所以我们现在就来看看定时器应该如何使用吧!

首先要确定最小和最大间隔。最小间隔很简单,直接设置为1ms即可;而最大间隔则有点麻烦,需要通过计算。其计算的代码如下:

SYSTICK_MAXCOUNT / (SystemFrequency / 1000);

SYSTICK_MAXCOUNT为定时器的最大记数,在CMSIS/Core/CM3/core_cm3.h文件中可以找到,定义为:

#define SYSTICK_MAXCOUNT ((1<<24) -1)

SystemFrequency为芯片的频率,这个是根据不同的芯片有不同的数值,其定义在CMSIS/Core/CM3/system_stm32f10x.c能够找到。如果CPU的频率为72MH,那么定义为:

const uint32_t SystemFrequency = SYSCLK_FREQ_72MHz;

如果是56MHz,那么定义则变更为:

const uint32_t SystemFrequency = SYSCLK_FREQ_56MHz;

对于其它的频率,也是以此类推。

那么回头看看公式的由来。因为SystemFrequency / 1000得到的结果刚好为1ms,而SYSTICK_MAXCOUNT则是定时器重新加载的最大节拍数,故两者相除即可得到最大的时间间隔。

让定时器正常工作很简单,直接调用SysTick_Config函数即可。不过,这个函数的接受的形参并不是时间,而是节拍,所以这里需要进行转换。根据前面的知识,可以很容易推断出和时间间隔所对应的节拍数:

SystemFrequency / 1000 * uiInterval;

根据此公式,可以得出SysTick_Config的调用方式:

SysTick_Config(SystemFrequency / 1000 * uiInterval );

其中uiInterval为时间间隔,单位为ms。成功设置并调用该函数之后,定时器就开始正常工作了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值