STM32系统定时器SysTick

1. SysTick系统定时器概述

学习完STM32的中断,下来就要学习STM32的定时器。就像电话最基本的功能是与人通话一样,定时器最基本的功能就是定时(STM32有些定时器的功能强大得超乎想象,当然不是今天要学的SysTick),定时器的使用步骤无非就是设置定时时间,然后等待超时,超时会触发中断或者设置某个标志位:若是触发中断自然要去执行中断处理函数,处理函数和中断源的绑定工作在启动文件的中断向量表已经明确,我们负责实现与之对应的中断处理函数即可;若是查询标志位则轮询访问该标志位,发生改变后再执行其他处理操作。

定时器涉及到中断,那就跟前面学习的EXTI、NVIC以及中断优先级等概念扯上关系了。系统定时器SysTick是属于CM3内核中的一个外设,相关寄存器内嵌在NVIC中,所有基于CM3内核的单片机都具有这个系统定时器,这使得软件(OS)在CM3单片机可以十分容易的移植。SysTick一般用于操作系统的产生时基功能,以维持操作系统的“心跳”。

2. SysTick系统定时器相关寄存器

下图摘自《Cortex™-M3技术参考手册.pdf》-P153
这里写图片描述

标准库中core_cm3.h中对SysTick描述结构体放入封装与之对应:

typedef struct
{
  __IO uint32_t DHCSR;                        /*!< Offset: 0x00  Debug Halting Control and Status Register    */
  __O  uint32_t DCRSR;                        /*!< Offset: 0x04  Debug Core Register Selector Register        */
  __IO uint32_t DCRDR;                        /*!< Offset: 0x08  Debug Core Register Data Register            */
  __IO uint32_t DEMCR;                        /*!< Offset: 0x0C  Debug Exception and Monitor Control Register */
} CoreDebug_Type;
2.1 SysTick控制及状态寄存器(SysTick Control and Status Register)

这里写图片描述
COUNTFLAG: 若上次读取本寄存器后,SysTick已经计到0,则该位为1
CLKSOURCE: 时钟源选择位,0表AHB / 8,1表处理器时钟AHB
TICKINT: 1表SysTick倒数计数计到0时产生SysTick异常请求,0表计到0时无动作。也可以通过读取COUNTFLAG来确定计数器是否递减到0
ENABLE: SysTick定时器使能位
英文描述如下:
这里写图片描述

2.2 SysTick重装载数值寄存器(SysTick Reload Value Register)

这里写图片描述
RELOAD: 当倒数计到0时,将被重装载的值
英文描述如下:
这里写图片描述

2.3 SysTick当前数值寄存器(SysTick Current Value Register)

这里写图片描述
CURRENT: 读取时返回当前计数的值,写它则使其清零,同时清除SysTick控制及状态寄存器中的COUNTFLAG状态标志位
英文描述如下:
这里写图片描述

2.4 SysTick校准数值寄存器(SysTick Calibration Value Register)

这里写图片描述
这个校准不常用,先不理会。
英文描述如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值