uptime.c 1.0 KB

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