Calendar
Calendar示例实现了日历以及闹钟功能。程序中会每秒打印一次当前的时间信息。
Calendar示例的源代码和工程文件位于SDK_Folder\projects\peripheral\rtc\calendar,其中工程文件在文件夹Keil_5下。
代码理解
示例工程流程图如图 26所示:
- Calendar的初始化。
calendar_time_t time; calendar_alarm_t alarm; g_systick_flag = 0; hal_calendar_init(&g_calendar_handle);- alarm_sel:生成闹钟的方式,可选择CALENDAR_ALARM_SEL_DATE、CALENDAR_ALARM_SEL_WEEKDAY。
- alarm_date_week_mask:闹钟生成的掩码,当设置为CALENDAR_ALARM_SEL_WEEKDAY时,可选择CALENDAR_ALARM_WEEKDAY_SUN - CALENDAR_ALARM_WEEKDAY_SAT其一或任何组合;当设置为CALENDAR_ALARM_SEL_DATE时,可选择1 ~ 31。
- hour:闹钟生成的小时时间。
- min:闹钟生成的分钟时间。
- 将初始日期设置为19年5月20日8点0分0秒。代码如下:
time.year = 19; time.mon = 5; time.date = 20; time.hour = 8; time.min = 0; time.sec = 0; hal_calendar_init_time(&g_calendar_handle, &time) - 设置闹钟为每个工作日的上午8点01分。此函数必须在每次设置系统时间后重新调用。代码如下:
alarm.alarm_sel = CALENDAR_ALARM_SEL_WEEKDAY; alarm.alarm_date_week_mask = 0x3E; alarm.hour = 8; alarm.min = 1; hal_calendar_set_alarm(&g_calendar_handle, &alarm); - 获取当前的时间。代码如下:
hal_calendar_get_time(&g_calendar_handle, &time);
测试验证
- 用GProgrammer下载calendar.bin至开发板。
- 将开发板串口连接至PC端,打开并配置GRUart。
- 在GRUart的Receive Data窗口中每秒打印一次当前的时间信息。