SysTick定时器:系统滴答定时器是一个非常基本的倒计时定时器,每隔一定的时间产生一个中断,即使是系统在睡眠模式下也能工作,它使得OS在各CM3器件间的移植过程中不必修改系统定时器的代码,将移植变得简单。滴答定时器被捆绑在NVIC中,用于产生SYSTICK异常。
功能:大多数操作系统需要一个硬件定时器来产生操作系统需要的滴答中断,作为整个系统的时基。比如,为多个任务给予不同数目的时间片,确保没有一个任务能一直抢占CPU;或者将每个定时器周期的某个时间范围赐予特定的任务,为系统提供各种定时功能。
下面来看一下SysTick相关的几个寄存器:
在V3.5库函数中,有关SysTick的相关配置在core_cm3.h中:
点击(此处)折叠或打开
/**
* @brief Initialize and start the SysTick counter and its interrupt.
*
* @param ticks number of ticks between two interrupts
* @return 1 = failed, 0 = successful
*
* Initialise the system tick timer and its interrupt and start the
* system tick timer / counter in free running mode to generate
* periodical interrupts.
*/
static __INLINE uint32_t SysTick_Config(uint32_t ticks)
{
if (ticks > SysTick_LOAD_RELOAD_Msk) return (1); /* Reload value impossible */
SysTick->LOAD = (ticks & SysTick_LOAD_RELOAD_Msk) - 1; /* set reload register */
NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1); /* set Priority for Cortex-M0 System Interrupts */
SysTick->VAL = 0; /* Load the SysTick Counter Value */
SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk |
SysTick_CTRL_TICKINT_Msk |
SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */
return (0); /* Function successful */
}
从上面可以看出,V3.5库函数默认使用HCLK作为SysTick时钟,如想用SysTick计一个很长的值,可以选用HCLK/8作为其时钟,滴答定时器的校准值固定为9000,当时钟设置为9MHZ(HCLK/8)产生1ms的时间基准。
上一篇:stm32中将结构体数据写到内部Flash时遇到的问题
下一篇:STM32最小系统设计
推荐阅读最新更新时间:2026-03-25 12:26
- 用于 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模拟串口
dm9000cep网卡通信
STM32 PMSM FOC 简介
现代雷达系统的信号设计
BFR340T






京公网安备 11010802033920号