
STM32学习记录—SysTick定时器
5星
- 浏览量: 0
- 大小:None
- 文件类型:PDF
简介:
本篇博客详细记录了作者在学习STM32微控制器过程中关于SysTick定时器的相关内容,包括其工作原理、配置方法及应用示例。
SysTick定时器是一个24位的倒计数定时器,在STM32单片机系统中扮演着重要角色。当计数值减至0后,它会自动从RELOAD寄存器重新加载初始值,并继续循环计数,除非在SysTick控制及状态寄存器中的使能位被清除。
SysTick定时器有以下几个关键用途:
1. 生成操作系统的时钟节拍:嵌入式系统中通常需要一个定时器来产生滴答中断作为时间基准。由于SysTick与NVIC紧密集成,它可以触发SYSTICK异常(异常号15),从而提供稳定的时钟节拍。
2. 方便代码移植性:Cortex-M3处理器内建了SysTick定时器,使得基于此处理器的软件在不同设备间易于移植,因为所有Cortex-M3芯片都包含这个定时器,并且使用方式和处理逻辑保持一致。
3. 时间测量与闹钟功能:除了用于操作系统之外,SysTick还可以用作时间测量或设定闹钟的功能。不过需要注意的是,在调试模式下处理器停止运行时,SysTick也会暂停计数。
要使SysTick定时器正常工作,需要执行以下步骤:
- 配置计数器时钟源:通过设置CTRL寄存器中的CLKSOURCE位。
- 设置重载值:在RELOAD寄存器中设定初始值。
- 清除COUNTFLAG标志位:可通过读取或写入SysTick控制及状态寄存器(STCSR)或当前值寄存器(STCVR)实现。
- 启动定时器:设置CTRL寄存器中的ENABLE位以启动计时操作。
- 如果需要中断功能,还需开启相应的中断,并在服务例程中处理。
为了将SysTick用作系统时钟源:
1. 将STCSR的TICKINT位置为启用状态;
2. 若使用重定位向量表,则需设置SysTick异常的向量地址及提供相应服务例程入口点。
此外,SysTick还可以用来实现延时功能。这可以通过查询方式或中断方式来完成:查询模式是通过不断检查COUNTFLAG标志位判断计数是否结束;而中断模式则是在初始化阶段设定好定时值和中断,并在溢出时由相应的中断服务程序处理延时期满。
例如,以下是一个简单的配置函数示例,用于设置SysTick每1毫秒产生一次中断(假设系统主频为72MHz):
```c
void SysTick_Configuration(void){
// 选择AHB总线作为计数器时钟源
SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK);
// 设置SysTick优先级为3
NVIC_SystemHandlerPriorityConfig(SystemHandler_SysTick, 7);
// 每毫秒触发中断,假设系统时钟频率为72MHz
SysTick_SetReload(72000);
// 启用SysTick的中断功能
SysTick_ITConfig(ENABLE);
}
```
以上内容概述了STM32单片机中SysTick定时器的基本知识及其应用。它在嵌入式系统开发过程中非常重要,提供了可靠的时间管理和同步机制支持。
全部评论 (0)


