【平头哥RVB2601创意应用开发】+RTC电子时钟
[复制链接]
RTC是一种重要的实时时钟计时器,用它可以辅助数据采集时间的标记。此外,它还能方便地实现电子时钟的制作,图1就是它的运行效果。
图1 电子时钟
在设计过程中,主要涉及的头文件有:stdio.h、soc.h及rtc.h。
所涉及的RTC函数主要有:RTC初始化函数csi_rtc_init)、RTC数据值设置函数及RTC时间获取函数csi_rtc_get_time()。
实现显示效果的主程序为:
- int main(void)
- {
- csi_error_t ret;
- csi_rtc_time_t last_time, base_time, alarm_time;
- board_yoc_init();
- LOGD(TAG, "%s\n", aos_get_app_version());
- oled_init();
- led_pinmux_init();
- oled_pinmux_init();
- OLED_Init();
- OLED_Clear();
- OLED_ShowString(20,0,"CH2601",16);
- OLED_ShowString(20,2,"OLED & RTC",16);
- OLED_ShowString(20,4," : : ",16);
- ret = 0;
- ret = csi_rtc_init(&g_rtc, 0);
- CHECK_RETURN(ret);
- base_time.tm_year = 122;
- base_time.tm_mon = 4;
- base_time.tm_mday = 10;
- base_time.tm_hour = 23;
- base_time.tm_min = 59;
- base_time.tm_sec = 55;
- ret = csi_rtc_set_time(&g_rtc, &base_time);
- CHECK_RETURN(ret);
- while (1) {
- led_refresh();
- csi_rtc_get_time(&g_rtc, &last_time);
- OLED_ShowNum(20,4,last_time.tm_hour,2,16);
- OLED_ShowNum(44,4,last_time.tm_min,2,16);
- OLED_ShowNum(68,4,last_time.tm_sec,2,16);
- udelay(1000 * 500);
- }
- return 0;
- }
在RTC的时间设置方面比较有特点,其参数取值范围如图2所示。
图2 参数取值范围
在时间参数按如下内容设置时,其运行效果如图3所示。
base_time.tm_year = 122;
base_time.tm_mon = 4;
base_time.tm_mday = 11;
base_time.tm_hour = 0;
base_time.tm_min = 0;
base_time.tm_sec = 0;
图3 计时效果
|