uptime.c 1000 B

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