没志青年
发布于 2025-12-27 / 21 阅读
0

Cortex-M 内核外设

NVIC

Systick 滴答定时器

STM32F1 使用 Cortex-M3 内核

STM32F4 使用 Cortex-M4F 内核

SysTick 定时器位于在 NVIC 中,用于产生 SYSTICK 异常,常用作 RTOS 和 Linux 操作系统的时基,在裸机中用于延时。

24位递减计数器,具有自动重载值寄存器的功能。

在STM32中,Systick通常以HCLK(AHB时钟)或HCLK/8作为运行时钟。

  • SysTick控制及状态寄存器(CTRL)

  • SysTick重装载数值寄存器(LOAD)

  • SysTick当前数值寄存器(VAL)

  • SysTick校准数值寄存器(CALIB)

  • ENABLE:1使能

  • CLKSOURCE:时钟来源。

    • 0:外部时钟。且只能是CPU时钟的8分频

    • 1:CPU时钟

  • TICKINT:

    • 0:VAL寄存器减到0时不触发异常

    • 1:VAL寄存器减到0时触发异常

  • COUNTFLAG:

若选择8分频。则时钟 72 MHz / 8 = 9MHz

定时秒:

  1. 定时时间 t(单位s) = 重装载值 * (1 / 9x10^6)

  2. 重装载值 = 定时时间 t * 9x10^6

定时ms:

定时us:

1 / 9MHz 即记一个数所需要的时间,单位是s。

在 stm32f1xx_hal.c 文件中配置中断触发时间

关于Systick定时器的寄存器说明以及函数接口都存储在内核文件misc.c以及misc.h,同时在core_cm4.h页定了关于Systick定时器的内容。