SysTick 每 1ms 触发一次中断:
#include "stm32f4xx.h"
void SysTick_Handler(void) {
// SysTick 中断处理函数,每 1ms 触发一次
HAL_IncTick(); // 更新系统滴答计数(若使用 HAL 库)
}
void SysTick_Init(uint32_t ticks_per_second) {
// 配置 SysTick 每 1ms 触发一次
uint32_t ticks = SystemCoreClock / ticks_per_second; // SystemCoreClock 为 HCLK 频率
SysTick->LOAD = ticks - 1; // 设置重装载值
SysTick->VAL = 0; // 清零当前计数器值
SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | // 使用 HCLK 作为时钟源
SysTick_CTRL_TICKINT_Msk | // 使能中断
SysTick_CTRL_ENABLE_Msk; // 启用 SysTick
}
|