uptime.c 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. #include "uptime.h"
  2. #include "rtc.h"
  3. #include "io_utils.h"
  4. #include "analog_input.h"
  5. #include <stdio.h>
  6. uint32_t uptime = 0;
  7. uint32_t rtc_unix = 0;
  8. //
  9. void get_uptime(uint32_t *value)
  10. {
  11. *value = uptime;
  12. }
  13. //
  14. void uptime_init(void)
  15. {
  16. crm_clocks_freq_type crm_clocks_freq_struct = {0};
  17. crm_periph_clock_enable(CRM_TMR10_PERIPH_CLOCK, TRUE);
  18. crm_clocks_freq_get(&crm_clocks_freq_struct);
  19. tmr_base_init(TMR10, 9999, (crm_clocks_freq_struct.ahb_freq / 10000) - 1);
  20. tmr_cnt_dir_set(TMR10, TMR_COUNT_UP);
  21. tmr_flag_clear(TMR10, TMR_OVF_FLAG);
  22. nvic_priority_group_config(NVIC_PRIORITY_GROUP_4);
  23. nvic_irq_enable(TMR1_OVF_TMR10_IRQn, 5, 0);
  24. tmr_counter_enable(TMR10, TRUE);
  25. tmr_interrupt_enable(TMR10, TMR_OVF_INT, TRUE);
  26. }
  27. void TMR1_OVF_TMR10_IRQHandler(void)
  28. {
  29. if (tmr_flag_get(TMR10, TMR_OVF_FLAG) != RESET)
  30. {
  31. tmr_flag_clear(TMR10, TMR_OVF_FLAG);
  32. uptime++;
  33. rtc_unix = RTC_GetUnixTime();
  34. #if defined (MDIO_88) || (MAO_4)
  35. save_mode_set_with_counter();
  36. #endif
  37. #if defined (MAI_12)
  38. ai_alarm_tim_handler();
  39. #endif
  40. }
  41. }