Timer.c 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #include "stm32f10x.h" // Device header
  2. #include "AT.h"
  3. uint32_t Timer_Ms;
  4. void Timer_Init(void)
  5. {
  6. RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
  7. TIM_InternalClockConfig(TIM2);
  8. TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
  9. TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1;
  10. TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;
  11. TIM_TimeBaseInitStructure.TIM_Period = 10-1;
  12. //TIM_TimeBaseInitStructure.TIM_Prescaler = 7200-1;
  13. TIM_TimeBaseInitStructure.TIM_Prescaler = 800-1;
  14. TIM_TimeBaseInitStructure.TIM_RepetitionCounter = 0;
  15. TIM_TimeBaseInit(TIM2, &TIM_TimeBaseInitStructure);
  16. TIM_ClearFlag(TIM2, TIM_FLAG_Update);
  17. TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE);
  18. NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
  19. NVIC_InitTypeDef NVIC_InitStructure;
  20. NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;
  21. NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  22. NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;
  23. NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
  24. NVIC_Init(&NVIC_InitStructure);
  25. TIM_Cmd(TIM2, ENABLE);
  26. }
  27. void TIM2_IRQHandler(void)
  28. {
  29. if(TIM_GetITStatus(TIM2, TIM_IT_Update) == SET)
  30. {
  31. my_timer();
  32. Timer_Ms++;
  33. TIM_ClearITPendingBit(TIM2, TIM_IT_Update);
  34. }
  35. }