Systick如何配置预设值?
时间: 2024-09-15 09:03:04 浏览: 35
SysTick_SYSTICK定时器_
STM32微控制器中的SysTick定时器是一个基本的硬件定时器,用于提供系统时间基准,通常用于周期性的中断服务程序(ISRs)。要配置SysTick的预设值,首先需要初始化它,并设置计数器的周期。
以下是配置步骤:
1. **启用全局中断**:
首先,你需要在`RCC` (Reset and Clock Control)寄存器中开启系统时钟源,并允许SysTick中断。
```c
RCC_APB1PeriphClockCmd(RCC_APB1Periph_SYSTICK, ENABLE);
```
2. **配置 SysTick 预设值**:
使用`SysTick_Config`函数设置定时器的频率,例如如果你想要每秒产生一个中断,如果系统主频是84MHz,预设值就是7953125(因为1s = 1/(84MHz / 1000000))。这个函数会计算出实际的预设值。
```c
uint32_t ticks_per_second = SystemCoreClock / 1000000; // 1 MHz for a standard system clock
SysTick_Config(SystemCoreClock / ticks_per_second); // Set the prescaler to achieve 1 second interrupt period
```
3. **清除中断标志**:
为了首次中断生效,需要清除 SysTick 中断标志。
```c
ITConfig(SYSTICK, ITConfig_Enable);
SysTick_ClearFlag(); // Clear the SysTick interrupt flag
```
4. **启用 SysTick 中断**:
最后,在系统级打开 SysTick 中断:
```c
NVIC_InitStructure.NVIC_IRQChannel = SYSTICK_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; // Set priority as needed
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
```
阅读全文