No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.
 
 
 
 
 

32 líneas
1.3 KiB

  1. /***********************头文件****************************/
  2. #include "timer.h"
  3. #include "led.h"
  4. /**************************************************
  5. //通用定时器3中断初始化
  6. //arr:自动重装值。
  7. //psc:时钟预分频数
  8. //定时器溢出时间计算方法:Tout=((arr+1)*(psc+1))/Ft us.
  9. //Ft=定时器工作频率,单位:Mhz
  10. //这里使用的是定时器3!
  11. **************************************************/
  12. void TIM3_Int_Init(u16 arr,u16 psc)
  13. {
  14. TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
  15. NVIC_InitTypeDef NVIC_InitStructure;
  16. RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE); //使能TIM3时钟
  17. TIM_TimeBaseInitStructure.TIM_Period = arr; //自动重装载值
  18. TIM_TimeBaseInitStructure.TIM_Prescaler=psc; //定时器分频
  19. TIM_TimeBaseInitStructure.TIM_CounterMode=TIM_CounterMode_Up; //向上计数模式
  20. TIM_TimeBaseInitStructure.TIM_ClockDivision=TIM_CKD_DIV1;
  21. TIM_TimeBaseInit(TIM3,&TIM_TimeBaseInitStructure);//初始化TIM3
  22. TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE); //允许定时器3更新中断
  23. TIM_Cmd(TIM3,ENABLE); //使能定时器3
  24. NVIC_InitStructure.NVIC_IRQChannel=TIM3_IRQn; //定时器3中断
  25. NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0x01; //抢占优先级1
  26. NVIC_InitStructure.NVIC_IRQChannelSubPriority=0x03; //子优先级3
  27. NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
  28. NVIC_Init(&NVIC_InitStructure);
  29. }