示例代码
RTC
示例工程通过RTC实现闹钟功能,工程目录:SDK_Folder\projects\peripheral\rtc\app_rtc。
示例工程流程图
示例工程首先初始化RTC并注册回调函数,设置RTC时间,RTC开始计时,并通过接口获取当前的时间并打印,验证RTC已经正常计时。其次,设置闹钟,并启动RTC TICK中断,每10tick产生一次中断,每1000 tick打印日志,与此同时当到达闹钟定时时间8:01时,产生闹钟定时中断,并输出相应日志。
初始化参数
- 初始日期设置:2019年5月20日8点0分0秒
app_rtc_time_t time; time.year = 19; time.mon = 5; time.date = 20; time.hour = 8; time.min = 0; time.sec = 0; time.week = 0; app_rtc_init_time(&time);
-
设置alarm为每周的上午8点01分。此函数必须在每次设置系统时间后重新调用。代码如下:
app_rtc_alarm_t alarm; alarm.alarm_sel = CALENDAR_ALARM_SEL_WEEKDAY; alarm.alarm_date_week_mask = 0xFF; alarm.hour = 8; alarm.min = 1;
- alarm_sel:选择按周报警还是按月报警,此处选择CALENDAR_ALARM_SEL_WEEKDAY(按周)。
- alarm_date_week_mask:每周具体哪天或者几天报警,0xFF表示每周每一天都报警。
重要函数
- 初始化RTC并注册回调函数
app_rtc_init(app_rtc_evt_handler)
-
设置初始化时间
app_rtc_init_time(&time)
-
获取当前时间
app_rtc_get_time(&time)
-
设置闹钟
app_rtc_setup_alarm(&alarm)
-
设置RTC TICK中断
app_rtc_setup_tick(10)
每10 tick产生一次中断
测试验证
连接开发板到PC端,打开串口助手,连接串口,查看串口日志。App current time为获取当前时间并打印的日志,Tick alarm为RTC TICK中断打印的日志,设置闹钟8:01 am,在8:01 am时中断打印Date alarm。
每秒串口打印当前时间,并设置date alarm为8:01am:
[18:02:59.277] App current time: 05.20.19 Mon 08:00:01
[18:03:00.281] App current time: 05.20.19 Mon 08:00:02
[18:03:01.286] App current time: 05.20.19 Mon 08:00:03
[18:03:02.290] App current time: 05.20.19 Mon 08:00:04
[18:03:03.294] App current time: 05.20.19 Mon 08:00:05
Set an date alarm every day at 8.01 am.
设置tick定时,每计数1000 tick,打印一次当前时间:
Set an tick alarm every 10 ms.
[18:03:16.362] Tick alarm, 05.20.19 Mon 08:00:18, 100.
[18:03:17.366] Tick alarm, 05.20.19 Mon 08:00:19, 200.
[18:03:18.368] Tick alarm, 05.20.19 Mon 08:00:20, 300.
[18:03:19.373] Tick alarm, 05.20.19 Mon 08:00:21, 400.
定时闹钟时间到:
[18:03:57.519] Tick alarm, 05.20.19 Mon 08:00:59, 4200.
[18:03:58.331] Date alarm.
[18:03:58.503] Tick alarm, 05.20.19 Mon 08:01:00, 4300.