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

相关推荐
不悔哥2 天前
开源OV-Watch:怎么做一个智能手表
单片机·开源·嵌入式
XiHongShi20162 天前
STM32F407 RTC定时器例程,建议保存
stm32·单片机·学习
优信电子2 天前
AIT1001 非接触式红外测温模块 STM32 驱动开发实战:从引脚到代码全解析
stm32·嵌入式·温度传感器·红外测温·非接触式测温·ait1001
深圳老胡2 天前
STM32F407 控制 L6470 步进电机驱动 —— 控制过程简介
笔记·stm32·单片机·嵌入式硬件·代码规范
wuyk5552 天前
《WiFi 嵌入式物联网开发全套实战》| 第 16 章 ESP32 AP+STA 双模共存原理与工程坑点
网络·stm32·物联网
女神下凡2 天前
嵌入式设计的各种存储芯片的硬件/软件设计规范,非常全面。
arm开发·单片机·嵌入式硬件
梅梅9663 天前
一款mipi转lvds的lcd调试(LT8912B)
单片机·计算机外设·电脑·显示器·pd芯片
开发笔记-阿牛3 天前
蓝牙音乐灯拆解,又一次拆到蓝牙音乐灯芯片CK6865L
人工智能·单片机·嵌入式硬件·音视频·音频
从零开始的嵌入式之旅3 天前
day47
arm开发·经验分享·笔记·嵌入式硬件
恒锐丰科技林技术员3 天前
EG1164 高压大电流升压同步整流芯片解析
经验分享·嵌入式硬件·硬件工程