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 SYSTICKSEL1: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()
  • 周期性中断计数值会有溢出的问题,当程序连续运行可能满足溢出条件时,需要注意
相关推荐
AOI小白新手上路13 小时前
江科协51单片机 17-2 红外遥控电机调速实验调试总结
单片机·嵌入式硬件·51单片机
oshan201214 小时前
零基础STM32入门教程--10-PWM 呼吸灯
stm32·单片机·嵌入式硬件
记帖15 小时前
STM32C5A3R开发(7)----ADC电压采集
嵌入式硬件·adc·dac·stm32cubeide·stm32c5·stm32cubemx2·stm32c5a3rgt6
自小吃多17 小时前
器件移动、旋转、镜像、对齐、等间距操作笔记
笔记·嵌入式硬件
jianqiang.xue18 小时前
智能体整体架构设计:四大模块与目录组织
单片机·嵌入式硬件·物联网·架构·esp32
Messy create20 小时前
【BMS-AFE-温度检测】
stm32·单片机·能源
东莞市永盛电气20 小时前
三相208V变380V变压器,出海工业设备供电适配方案
python·单片机·嵌入式硬件
Learn-Share_HY21 小时前
[IT Network]如何配置反向路徑過濾器(rp_filter),以解決路由不對稱問題?
linux·嵌入式硬件·物联网·网络协议·tcp/ip·http·iot
深圳市宝华视联1 天前
医院内网部署手术示教系统注意事项
嵌入式硬件·实时互动·音视频·实时音视频·视频编解码·嵌入式实时数据库
新晨单片机设计1 天前
S001A-基于STM32单片机超声波视力保护仪【Proteus仿真+Keil程序+原理图】
stm32·单片机·proteus