lib_rtc.h 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. /*********************************************************
  2. *Copyright (C), 2017, Shanghai Eastsoft Microelectronics Co., Ltd.
  3. *文件名: lib_rtc.h
  4. *作 者: WangMX
  5. *版 本: V1.00
  6. *日 期: 2017/07/14
  7. *描 述: RTC模块程序头文件
  8. *备 注: 适用于HRSDK-GDB-ES8P508x V1.1
  9. 本软件仅供学习和演示使用,对用户直接引用代码所带来的风险或后果不承担任何法律责任。
  10. **********************************************************/
  11. #ifndef __LIBRTC_H__
  12. #define __LIBRTC_H__
  13. #include "ES8P508x.h"
  14. #include "type.h"
  15. /*RTC时钟源选择*/
  16. typedef enum
  17. {
  18. RTC_LOSC = 0x0, //外部32768HZ时钟 RTC精确计时
  19. RTC_LRC = 0x1, //内部LRC时钟 RTC非精确计时
  20. RTC_PLCK_256 = 0x2, //PLCLK/256 RTC用作普通计数器
  21. RTC_PLCK = 0x3, //PCLK RTC用作普通计数器
  22. }RTC_TYPE_CLKS;
  23. /*RTC时钟12/24小时制选择*/
  24. typedef enum
  25. {
  26. RTC_HOUR12 = 0x0, //12小时制
  27. RTC_HOUR24 = 0x1, //24小时制
  28. }RTC_TYPE_TIME;
  29. /* RTC中断源选择 */
  30. typedef enum {
  31. RTC_Interrupt_Source_Second = 0x001, // 秒中断
  32. RTC_Interrupt_Source_Minute = 0x002, // 分中断
  33. RTC_Interrupt_Source_Hour = 0x004, // 小时中断
  34. RTC_Interrupt_Source_Day = 0x008, // 天中断
  35. RTC_Interrupt_Source_Month = 0x010, // 月中断
  36. RTC_Interrupt_Source_DayALE = 0x100, // 日闹钟中断
  37. RTC_Interrupt_Source_WeekALE = 0x200, // 周闹钟中断
  38. } RTC_Interrupt_Source;
  39. /********************* RTC模块函数声明 *********************/
  40. void RTC_Init(RTC_TYPE_CLKS CLKx,RTC_TYPE_TIME HOURx);
  41. uint32_t RTC_ReadHourmode(void);
  42. uint32_t RTC_ReadSecond(void);
  43. uint32_t RTC_ReadMinute(void);
  44. uint32_t RTC_ReadHour(uint32_t *meridiem);
  45. uint32_t RTC_ReadDay(void);
  46. uint32_t RTC_ReadMonth(void);
  47. uint32_t RTC_ReadYear(void);
  48. uint32_t RTC_ReadWeek(void);
  49. ErrorStatus RTC_WriteSecond(uint32_t second);
  50. ErrorStatus RTC_WriteMinute(uint32_t minute);
  51. ErrorStatus RTC_WriteHour(uint32_t hour, uint32_t meridiem);
  52. ErrorStatus RTC_WriteDay(uint32_t day);
  53. ErrorStatus RTC_WriteMonth(uint32_t month);
  54. ErrorStatus RTC_WriteYear(uint32_t year);
  55. ErrorStatus RTC_WriteWeek(uint32_t week);
  56. uint32_t RTC_ReadWeekAlarmMinute(void);
  57. uint32_t RTC_ReadWeekAlarmHour(uint32_t *meridiem);
  58. uint32_t RTC_ReadWeekAlarmWeek(void);
  59. uint32_t RTC_ReadDayAlarmMinute(void);
  60. uint32_t RTC_ReadDayAlarmHour(uint32_t *meridiem);
  61. ErrorStatus RTC_WriteWeekAlarmMinute(uint32_t minute);
  62. ErrorStatus RTC_WriteWeekAlarmHour(uint32_t hour, uint32_t meridiem);
  63. ErrorStatus RTC_WriteWeekAlarmWeek(uint32_t week);
  64. ErrorStatus RTC_WriteDayAlarmMinute(uint32_t minute);
  65. ErrorStatus RTC_WriteDayAlarmHour(uint32_t hour, uint32_t meridiem);
  66. void RTC_InterruptEnable(RTC_Interrupt_Source src);
  67. void RTC_InterruptDisable(RTC_Interrupt_Source src);
  68. ITStatus RTC_GetITStatus(RTC_Interrupt_Source src);
  69. FlagStatus RTC_GetFlagStatus(RTC_Interrupt_Source src);
  70. void RTC_ClearITPendingBit(RTC_Interrupt_Source src);
  71. #endif
  72. /*************************END OF FILE**********************/