test_rtc.c 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. #include <stdio.h>
  2. #include <hal_log.h>
  3. #include <hal_cmd.h>
  4. #include <sunxi_hal_rtc.h>
  5. static int callback(void)
  6. {
  7. printf("alarm interrupt\n");
  8. return 0;
  9. }
  10. static int cmd_test_rtc(int argc, const char **argv)
  11. {
  12. unsigned int enable = 0;
  13. struct rtc_time rtc_tm;
  14. struct rtc_wkalrm wkalrm;
  15. hal_rtc_init();
  16. hal_rtc_register_callback(callback);
  17. if (hal_rtc_gettime(&rtc_tm))
  18. {
  19. printf("sunxi rtc gettime error\n");
  20. }
  21. wkalrm.enabled = 1;
  22. wkalrm.time = rtc_tm;
  23. if(rtc_tm.tm_min > 0)
  24. rtc_tm.tm_min -= 1;
  25. else
  26. wkalrm.time.tm_min += 1;
  27. printf("alarm time %04d-%02d-%02d %02d:%02d:%02d\n",
  28. wkalrm.time.tm_year + 1900, wkalrm.time.tm_mon + 1, wkalrm.time.tm_mday,
  29. wkalrm.time.tm_hour, wkalrm.time.tm_min, wkalrm.time.tm_sec);
  30. if (hal_rtc_settime(&rtc_tm))
  31. {
  32. printf("sunxi rtc settime error\n");
  33. }
  34. if (hal_rtc_setalarm(&wkalrm))
  35. {
  36. printf("sunxi rtc setalarm error\n");
  37. }
  38. if (hal_rtc_getalarm(&wkalrm))
  39. {
  40. printf("sunxi rtc getalarm error\n");
  41. }
  42. if (hal_rtc_gettime(&rtc_tm))
  43. {
  44. printf("sunxi rtc gettime error\n");
  45. }
  46. //if do hal_rtc_alarm_irq_enable and hal_rtc_uninit, alarm will not work
  47. hal_rtc_alarm_irq_enable(enable);
  48. hal_rtc_deinit();
  49. return 0;
  50. }
  51. FINSH_FUNCTION_EXPORT_CMD(cmd_test_rtc, hal_rtc, rtc hal APIs tests)