stm32fxx_STUclock.c 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. #include "stm32f1xx_hal.h"
  2. #include "rtc.h"
  3. #include "stm32fxx_STUclock.h"
  4. uint16_t clockTest_sysClockCount=0;
  5. /*配置RTC时钟源为LSI(40KHZ),分频后,计时基准频率1Khz,计时周期1ms*/
  6. void STU_ClockTestInit(void)
  7. {
  8. RTC_AlarmTypeDef salarmstructure;
  9. /*配置闹钟前,清零计数寄存器*/
  10. RTC_WriteTimeCounter(&hrtc,0);
  11. /*配置RTC 闹钟中断为100ms(1分40秒为100个计数,这里周期为1ms)*/
  12. salarmstructure.Alarm = RTC_ALARM_A;
  13. salarmstructure.AlarmTime.Hours = 0x00;
  14. salarmstructure.AlarmTime.Minutes = 1;
  15. salarmstructure.AlarmTime.Seconds = 40;
  16. if(HAL_RTC_SetAlarm_IT(&hrtc,&salarmstructure,RTC_FORMAT_BIN) != HAL_OK)
  17. {
  18. /* Initialization Error */
  19. Error_Handler();
  20. }
  21. /*清零计数寄存器,和计数*/
  22. RTC_WriteTimeCounter(&hrtc,0);
  23. clockTest_sysClockCount = 0;
  24. }
  25. void HAL_RTC_AlarmAEventCallback(RTC_HandleTypeDef *hrtc)
  26. {
  27. static uint16_t sysClockCount_tmp=0;
  28. //HAL_Delay (1);
  29. sysClockCount_tmp = clockTest_sysClockCount;
  30. if(sysClockCount_tmp < 75)
  31. {
  32. while(1);
  33. }
  34. if(sysClockCount_tmp > 125)
  35. {
  36. while(1);
  37. }
  38. RTC_WriteTimeCounter(hrtc,0);
  39. clockTest_sysClockCount = 0;
  40. }