您的位置:首页 > 其它

STM32F429之定时器

2018-03-14 15:26 204 查看
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内
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: