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()
  • 周期性中断计数值会有溢出的问题,当程序连续运行可能满足溢出条件时,需要注意
相关推荐
Jason_zhao_MR2 小时前
RK3576 MIPI Camera ISP调试:主观调优与工程实战(下)
stm32·嵌入式硬件·安全·系统架构·嵌入式
ACP广源盛139246256735 小时前
iOS 27 开放 AI 生态@ACP#小型化扩展黄金风口,IX8008全面超越 ASM2806,铸就嵌入式 AI 扩展核心
人工智能·嵌入式硬件·macos·ios·计算机外设·objective-c·cocoa
smartpi_ai5 小时前
玩具产品从按键控制升级为语音控制:语音模块与MCU串口通信实战
单片机·嵌入式硬件
BreezeJuvenile7 小时前
【STM32】时钟摘取法
stm32·单片机·嵌入式硬件
崇山峻岭之间7 小时前
单片机GPIO配置
单片机·嵌入式硬件
不会武功的火柴7 小时前
SystemVerilog语法(7)-接口(interface)
嵌入式硬件·fpga开发·仿真·ic验证·rtl
深圳英康仕8 小时前
五网口六USB:一台龙芯2K3000工控机的接口配置解读
嵌入式硬件·信创·工控机·工业计算机·龙芯2k3000
lllllllccccc9 小时前
FReeRtos中断管理、临界段保护和任务调度器挂起和恢复学习
单片机·嵌入式硬件
ACP广源盛139246256739 小时前
IX8024 对标 ASM2824 @ACP#搭配昆仑芯 P800 构建 AI 服务器 PCIe4.0 高速互联架构
网络·人工智能·嵌入式硬件·电脑
踏着七彩祥云的小丑9 小时前
嵌入式测试学习第 15 天:逻辑门基础:与或非、简单逻辑电路
单片机·嵌入式硬件