一、SysTick 是什么?先建立直觉SysTick 全称System Tick Timer,系统滴答定时器。它是 ARM Cortex-M 内核内置的一个 24 位递减计数器,不属于 STM32 的片上外设,而是 Cortex-M3 内核自带的, 所以所有 Cortex-M 系列(M0/M3/M4/M7)都有它,代码可移植。为什么需要 SysTick?方案1:用普通 for 循环延时 void delay(uint32_t n) { for (volatile uint32_t i = 0; i n; i++); } 问题: ① n 的值和实际时间没有直接关系(依赖编译器优化级别和 CPU 频率) ② 换一块不同主频的板子,延时时间完全不同 ③ 无法获取精确的毫秒/微秒时间戳 方案2:用 TIM1/TIM2 等通用定时器延时 问题: ① 占用了一个宝贵的定时器资源 ② 其他外设可能也需要这些定时器 方案3:用 SysTick(推荐) 优点: ① 专用计数器,不占用任何通用定时器 ② 精度高,直接基于 CPU 时钟 ③ 产生精确的 1ms 心跳,为整个系统提供时间基准 ④ 所有 RTOS(FreeRTOS/RTX)也用它作系统节拍二、SysTick 内部结构SysTick 是一个24 位递减计数器,有 4 个寄存器:┌─────────────