stm32f4定时器基本应用

stm32f4定时器基本应用

所谓的基本应用,就是只用到了它的计数功能和中断功能,没用到外部输入功能、PWM输出功能以及一些其它高级的功能。

一、定时器时钟源

STM32F4的定时器的时钟频率由硬件自动设置,分为2种情况:

  1. 如果 APB 预分频器为 1,定时器时钟频率等于 APB 域的频率。
  2. 否则,等于 APB 域的频率的两倍 (×2)。

在我使用的板子上,AHB1为4分频,AHB2为2分频

二、计算器模式

1. 递增计数模式

在递增计数模式下,计数器从 0 计数到自动重载值,然后重新从 0 开始计数并生成计数器上溢事件。

2. 递减计数模式

在递减计数模式下,计数器从自动重载值开始递减计数到 0,然后重新从自动重载值开始计数并生成计数器下溢事件。

3.中心对齐模式(递增/递减计数)

在中心对齐模式下,计数器从 0 开始计数到自动重载值 — 1,生成计数器上溢事件;然后从自动重载值开始向下计数到 1 并生成计数器下溢事件。之后从
0 开始重新计数。

三、程序解析

程序使用定时器1,设置定时器1为1秒中断。
void Time1Init(void)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
NVIC_InitTypeDef NVIC_InitStructure;

    /* 1. 使能时钟 */
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);

    TIM_DeInit(TIM1); 

    /* 2. 配置定时器参数 */
    TIM_TimeBaseStructure.TIM_Period            = 10000 - 1;               /* 定时器重装载值 */     
    TIM_TimeBaseStructure.TIM_Prescaler         = 16800;                   /* 定时器时钟分频系数 */            
    TIM_TimeBaseStructure.TIM_ClockDivision     = TIM_CKD_DIV1;     
    TIM_TimeBaseStructure.TIM_CounterMode       = TIM_CounterMode_Up;       /* 计数器模式 */
    TIM_TimeBaseStructure.TIM_RepetitionCounter = 0;                        /* 重复计数值 */
    TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure); 

    /* 3. 配置定时器中断优先级 */
    NVIC_InitStructure.NVIC_IRQChannel                   = TIM1_UP_TIM10_IRQn;
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;  
    NVIC_InitStructure.NVIC_IRQChannelSubPriority        = 1;        
    NVIC_InitStructure.NVIC_IRQChannelCmd                = ENABLE;  
    NVIC_Init(&NVIC_InitStructure);   

    TIM_ClearFlag(TIM1, TIM_FLAG_Update);

    /* 4. 使能定时器中断 */
    TIM_ITConfig(TIM1, TIM_IT_Update, ENABLE);

    /* 5. 使能定时器 */
    TIM_Cmd(TIM1, ENABLE); 
}   

四、注释

1. 定时器重载值的计算

由于APB2为2分频,故定时器时钟源的频率为168MHz,在程序中定时器1的分频系数为16800,故要产生1S定时中断的值X为:

16800/168000000*X = 1

故定时器初值为:10000 - 1

2. TIM_RepetitionCounter重复计数的作用

重复计数的值可以设定为0x00~0xff,如果设定该值为非0时,定时器中断将会在设定时间TIM_RepetitionCounter倍后产生,例如设定该值为2,那么定时器中断将会在2秒后产生。注意,该值只在定时器1和定时器8中有用。

3.TIM_ClockDivision的作用

在《STM32F4xx中文参考手册.pdf》中是这样描述的

具体什么意思,暂时不明白。

你可能感兴趣的:(stm32f4)