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
- }
|