CN / EN
文档反馈
感谢关注汇顶文档,期待您的宝贵建议!
感谢您的反馈,祝您愉快!

Calendar

Calendar示例实现了日历以及闹钟功能。程序中会每秒打印一次当前的时间信息。

Calendar示例的源代码和工程文件位于SDK_Folder\projects\peripheral\rtc\calendar,其中工程文件在文件夹Keil_5下。

代码理解

示例工程流程图如图 26所示:

图 26 Calendar示例流程图
  1. 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:闹钟生成的分钟时间。
  2. 将初始日期设置为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)
    
  3. 设置闹钟为每个工作日的上午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);
    
  4. 获取当前的时间。代码如下:
    hal_calendar_get_time(&g_calendar_handle, &time);

测试验证

  1. 用GProgrammer下载calendar.bin至开发板。
  2. 将开发板串口连接至PC端,打开并配置GRUart。
  3. 在GRUart的Receive Data窗口中每秒打印一次当前的时间信息。

扫描关注

打开微信,使用“扫一扫”即可关注。