Day18:系统滴答定时器 (SysTick)

SysTick 功能:

24 位递减计数器,提供精确系统时基

时钟源:HCLK/8 (9MHz) 或 HCLK (72MHz)

定时时间:(重装载值 + 1)/ 时钟频率

SysTick 配置:

// 1ms定时

void SysTick_Init(void){

SysTick->LOAD = 71999; // 72MHz/72000=1KHz(1ms)

SysTick->VAL = 0; // 计数器清零

SysTick->CTRL = 0x00000007; // 使能计数器、使能中断、选择HCLK时钟

}

// 中断服务函数

void SysTick_Handler(void){

static uint32_t tick = 0;

tick++;

if(tick % 100 == 0) // 100ms

HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_0); // 每100ms翻转LED

}

基于 SysTick 的延时函数:

void Delay_ms(uint32_t ms){

uint32_t start = SysTick->VAL;

while((start - SysTick->VAL) < ms * 72000); // 72MHz/1000=72000

}

中断总结:

中断是 STM32 实现实时性的关键机制

掌握 NVIC 配置和中断服务函数编写是进阶必备

建议练习:按键中断控制 LED、定时器中断实现精确计时、多中断优先级嵌套实验

相关推荐
fie888920 小时前
基于51单片机的航模遥控器6通道接收机程序
单片机·嵌入式硬件·51单片机
bu_shuo20 小时前
嵌入式硬件工程师VS单板硬件工程师
嵌入式硬件·电子工程师·单板硬件
llilian_1620 小时前
选择北斗导航卫星信号模拟器注意事项总结 北斗导航卫星模拟器 北斗导航信号模拟器
功能测试·单片机·嵌入式硬件·测试工具·51单片机·硬件工程
Yyq1302086968220 小时前
MH2457,‌国产 32 位屏驱 MCU‌芯片,支持‌1080P 高清显示‌与‌以太网通信‌,广泛应用于两轮车仪表盘及工控屏等领域
单片机·嵌入式硬件
爱分享的阿Q21 小时前
STM32现代化AI开发环境搭建:从Keil到VSCode+AI的范式转移
人工智能·vscode·stm32
爱吃程序猿的喵21 小时前
南邮计科电工电子实验B《RLC串联谐振电路》实验报告
单片机·嵌入式硬件
独小乐21 小时前
009.中断实践之实现按键测试|千篇笔记实现嵌入式全栈/裸机篇
linux·c语言·驱动开发·笔记·嵌入式硬件·arm
XINVRY-FPGA1 天前
XC7VX690T-2FFG1157I Xilinx AMD Virtex-7 FPGA
arm开发·人工智能·嵌入式硬件·深度学习·fpga开发·硬件工程·fpga
bubiyoushang8881 天前
利用STM32实现Modbus通信(RTU从机方案)
stm32·单片机·嵌入式硬件
cmpxr_1 天前
【单片机】常用设计模式
单片机·嵌入式硬件·设计模式