STM32F429之定时器

F429共有14个定时器

2个高级   TIM1、TIM8

10个通用   TIM2~TIM5  TIM9~TIM14

2个基本   TM6 、TIM7     只有TIM_Prescaler和TIM_Period

1.配置优先级

    NVIC_InitTypeDef NVIC_InitStructure;
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);        中断组为0
    NVIC_InitStructure.NVIC_IRQChannel = TIM6_DAC_IRQn;     中断来源
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;     抢占优先级
    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;    子优先级
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

    NVIC_Init(&NVIC_InitStructure);

2.TIM初始化


  TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;

 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM6, ENABLE);   初始化时钟

  TIM_TimeBaseStructure.TIM_Period = 5000-1;      自动重装载值(即定时时间)

  TIM_TimeBaseStructure.TIM_Prescaler = 9000-1;    分频系数

以下在通用和高级定时器中才有
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; 计数方式向上计数
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; 分频因子
 TIM_TimeBaseStructure.TIM_RepetitionCounter=1;重复计数

  TIM_TimeBaseInit(TIM6, &TIM_TimeBaseStructure); 初始化定时器

  TIM_ClearFlag(TIM6, TIM_FLAG_Update);清除定时器中断标志位
   
  TIM_ITConfig(TIM6,TIM_IT_Update,ENABLE);开启定时器更新中断
   
    TIM_Cmd(BASIC_TIM, ENABLE);    使能定时器


3.编写中断服务函数


void  TIM6_DAC_IRQHandler (void)
{
    if ( TIM_GetITStatus( TIM6, TIM_IT_Update) != RESET )
    {    
        LED1_TOGGLE;
        TIM_ClearITPendingBit(TIM6 , TIM_IT_Update);          
    }             
}

服务函数名在stsrtup_stm32f429_439xx.s内

猜你喜欢

转载自blog.csdn.net/duidaifen3896/article/details/79554622