SysTick 定时器

文章目录

寄存器

SysTick控制和状态寄存器(SysTick->CTRL)

名称 描述
16 COUNTFLAG 当 SysTick 定时器递减计数到 0,该位自动变成 1,如果 TICINT 设置为 1,会产生 SysTick 异常。同时,重装载寄存器 SysTick->LOAD 中的值会载入到当前计数器 SysTick->VAL。读该寄存器或清除计数器则该位清零
2 CLKSOURCE 时钟源选择,0 外部参考时钟(STCLK),1 使用内核时钟
1 TICKINT 允许产生异常配置,1 允许异常
0 ENABLE SytTick 定时器使能,1 使能
  • 当 CLKSOURCE 设置为0,选择参考时钟时,由 RCC 模块中的寄存器 RCC_CCIPR1完成 SysTick 时钟源的选择

Bits 23:22 SYSTICKSEL[1:0]: SysTick 时钟源选择:

00: HCLK/8 selected

01: LSI selected

10: LSE selected

11: reserved

SysTick重装载值寄存器(SysTick->LOAD)

  • 位[23:0]:重装载值

SysTick当前值寄存器(SysTick->VAL)

  • 位[23:0]:SysTick当前计数值,写入任何值,清除该寄存器

SysTick校准值寄存器(SysTick->CALIB)

  • 提供了SysTick的校准值。目前,很少使用,芯片供应商一般通过其他的可替代方案

使用方法

  • 在具备嵌入式实时操作系统(RTOS)的软件中,很多RTOS已经支持了SysTick
  • 在未使用RTOS的软件中,可以通过CMSIS-CORE提供的接口函数下面的函数,使用处理器时钟作为时钟源,让SysTick按参数 ticks 产生周期性的中断,中断优先级为最低
c 复制代码
uint32_t SysTick_Config(uint32_t ticks);

//按当前系统时钟的千分之一(周期是1ms)产生中断
SysTick_Config(SystemCoreClock / 1000);

产生周期性的中断

  • CubeMX生成的代码,已经自动完成,并将中断周期设置为1ms

初始化

c 复制代码
HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority);

阻塞延时

c 复制代码
void HAL_Delay(uint32_t Delay);

非阻塞延时

  • 获取当前中断计数值,并以此为计数初值,根据需要,通过查询判断延时
c 复制代码
uint32_t HAL_GetTick(void);
c 复制代码
if(HAL_GetTick() >= led1_delay)
{
    led1_delay = HAL_GetTick() + 500;
    HAL_GPIO_TogglePin(Led1_GPIO_Port, Led1_Pin);
}

注意

  • SysTick定时器中的寄存器只能在特权状态下访问
  • 若使用嵌入式OS,则SysTick会被OS占用,不能再被应用任务使用
  • SysTick会在调试暂停时,停止计数,也会在某些休眠状态中停止计数
  • 利用CubeMX生成的初始化代码中,SysTick中断因为优先级最低,所以不能在其他的中断中调用依赖SysTick中断计时的函数,比如 HAL_Delay()
  • 周期性中断计数值会有溢出的问题,当程序连续运行可能满足溢出条件时,需要注意
相关推荐
llilian_161 小时前
IRIG-B码产生器立足用户痛点,提供精准授时解决方案
大数据·数据库·功能测试·单片机·嵌入式硬件·测试工具
busideyang8 小时前
为什么推挽输出不能接收串口数据,而准双向口可以?
c语言·stm32·单片机·嵌入式硬件·嵌入式
济6179 小时前
STM32定时器进阶:从模式控制器完全指南,一文学会TRGI/TRGO---STM32 HAL库专栏
stm32·单片机·嵌入式·stm32hal库编程
鲨辣椒100869 小时前
单片机在线演绎《当幸福来敲门》------ 中断机制
单片机·嵌入式硬件
小白学电子_12 小时前
proteus仿真51单片机通过定时器控制红绿灯
嵌入式硬件·51单片机·proteus
鲨辣椒1008613 小时前
51单片机初相识
单片机·嵌入式硬件·51单片机
独处东汉13 小时前
freertos开发空气检测仪之完结_Air_check_App 工程概览与使用说明
stm32·单片机·嵌入式硬件·freertos
爱喝纯牛奶的柠檬15 小时前
基于STM32的4*4矩阵软键盘驱动
stm32·嵌入式硬件·矩阵
电子工程师成长日记-C5116 小时前
51单片机低频信号发生器
单片机·嵌入式硬件·51单片机