24bit 的向下递减计数器,计数器每计数一次的时间是 1/SYSCLK,一般设置 SYSTICK 为168MHz(以STM32F407为例); 当重装载数值寄存器的值递减到0的时候,系统定时器就产生一次中断,以此循环往复; 一般用于产生时基,维持系统心跳 CTRL 寄存器 bit[2] CLKSOURCE, 时钟源选择,0-AHB/8,1-AHB bit[1] TICKINIT, 1-SysTick倒计数到0时产生异常请求(即中断) bit[0] ENABLE,1-使能 RELOAD 重装载值寄存器 当计数到0时,重新装载到数值寄存器的值 SysTick 属于内核外设,跟普通外设的中断优先级有些区别,并没有抢占优先级和子优先级的说法; // System Tick Configuration, The function initializes the System Timer and its interrupt, and starts the System Tick Timer. // param [in] ticks Number of ticks between two interrupts. __STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) { // 参数检查,重载值最大是24位 if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) { return (1UL); } /* set reload register */ SysTick->LOAD = (uint32_t)(ticks - 1UL); NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* Load the SysTick Counter Value */ SysTick->VAL = 0UL; // 时钟源选择 AHB 168MHz,计数到0时产生中断,使能系统定时器 SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | SysTick_CTRL_TICKINT_Msk | SysTick_CTRL_ENABLE_Msk; return (0UL); } SysTick 初始化函数 如下代码,配置 ticks 为 SystemCoreClock / 1000,即 168K,即计数168K次时,产生一次中断; 而计数一次的时间是:1/CLKAHB,即 1/168M 秒,所以计数168K次用时 1ms,意即 每ms产生一次 SysTick 中断; 在 SysTick 中断处理函数中可以累加经过的 毫秒值,从而达到记录时间的目的;Systick 简介
SysTick 寄存器讲解
寄存器 功能 CTRL 控制及状态寄存器 LOAD 重装载数值寄存器 VAL 当前数值寄存器 CALIB 校准数值寄存器 bit[23~0] 低24位有效
VAL 当前数值寄存器
SysTick 配置库函数
用库函数编程时,我们只需要使用 SysTick_Config() 进行配置即可,函数如下,在 cm4.h 文件中:void SysTick_Init(void){
/* SystemFrequency / 1000 1ms中断一次
* SystemFrequency / 100000 10us中断一次
* SystemFrequency / 1000000 1us中断一次
*/
if (SysTick_Config(SystemCoreClock / 1000))
{
/* Capture error */
while (1);
}}延时函数 和 SysTick 中断处理函数
static __IO u32 TimingDelay;void delay_ms(__IO u32 nTime){
TimingDelay = nTime;
while (TimingDelay != 0);}void TimingDelay_Decrement(void){
if (TimingDelay != 0x00)
{
TimingDelay--;
}}void SysTick_Handler(void){
TimingDelay_Decrement();}
上一篇:STM32学习(三)串口实验
下一篇:stm32 freertos 任务不能调度(启动)可能原因
推荐阅读最新更新时间:2026-03-25 11:08
- 用于 7VIN 至 16VIN、1.5V 和 1.2V 输出的 LTM4628EV DC/DC 模块稳压器的典型应用电路
- 使用 Analog Devices 的 LTC3728LIGN 的参考设计
- DER-406 - 适用于 A19 灯的 5.76 W 高 PF 非隔离降压-升压型 TRIAC 调光 LED 驱动器
- ADR5045B 5V 输出精密微功率并联模式电压基准的典型应用
- LT3970EDDB-3.42 2.5V 降压转换器的典型应用
- MC78M08BDTG 8V 电流调节器的典型应用
- LT1021DCN8-5 精密电压基准的典型应用
- DER-282 - 100W, 扁平(11 mm), LLC DC-DC转换器
- REF193 低压差开尔文连接电压基准的典型应用电路
- LT3088EM 线性稳压器用于添加软启动的典型应用

stm32驱动屏IC rm68042
Azure RTOS ThreadX内核用户手册,含SMP多核(中文版)
现代雷达系统的信号设计
BFR340T






京公网安备 11010802033920号