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、定时器中断实现精确计时、多中断优先级嵌套实验

相关推荐
尼喃3 小时前
OVP/OCP过压过流保护芯片选型表:2A、3A、5A与10A方案怎么选
嵌入式硬件
无敌贵点大王8 小时前
嵌入式软件面试经(自用)
c语言·stm32·单片机·学习·mongodb·面试·职场和发展
NYFEA9 小时前
NF532重磅上新:高集成度13.56MHz非接触式控制器
嵌入式硬件
我是海飞9 小时前
使用杰理 AC7925B 实现 Windows电脑 USB 副屏
windows·单片机·电脑·嵌入式·杰理
我是海飞10 小时前
杰理 JL703N SDK 实现 AI 自动化调试:自动进入下载模式、下载、重启与日志抓取
人工智能·单片机·自动化·音视频·杰理
Zwawa10 小时前
PID 的三个参数之外:位置式、增量式和反馈控制
c语言·单片机·嵌入式
创界工坊工作室10 小时前
29-基于单片机的万年历设计
stm32·单片机·嵌入式硬件·proteus
zhangzhangkeji10 小时前
stm32 HAL 库改写 江协科大的程序
stm32
木由里予10 小时前
NAND 这门生意
运维·服务器·网络·单片机
国科安芯11 小时前
在轨服务与空间机器人任务中跨飞行器CANFD互连的共模与单粒子问题综述
嵌入式硬件·机器人·canfd·低轨卫星·商业航天·抗辐射