【平头哥RVB2601创意应用开发】+RTC电子时钟
<p align="left" style="text-align:left">RTC是一种重要的实时时钟计时器,用它可以辅助数据采集时间的标记。此外,它还能方便地实现电子时钟的制作,图1就是它的运行效果。</p><p>图1 电子时钟</p>
<p>在设计过程中,主要涉及的头文件有:stdio.h、soc.h及rtc.h。</p>
<p>所涉及的RTC函数主要有:RTC初始化函数csi_rtc_init)、RTC数据值设置函数及RTC时间获取函数csi_rtc_get_time()。</p>
<p>实现显示效果的主程序为:</p>
<pre>
<code class="language-cpp">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;
}</code></pre>
<p>在RTC的时间设置方面比较有特点,其参数取值范围如图2所示。</p>
<p> </p>
<p>图2 参数取值范围</p>
<p> </p>
<p>在时间参数按如下内容设置时,其运行效果如图3所示。</p>
<p> base_time.tm_year = 122;</p>
<p> base_time.tm_mon = 4;</p>
<p> base_time.tm_mday = 11;</p>
<p> base_time.tm_hour = 0;</p>
<p> base_time.tm_min = 0;</p>
<p> base_time.tm_sec = 0;</p>
<p>图3 计时效果</p>
兄弟呀,这么晚还在交作业,别把自己身体搞跨了! lugl4313820 发表于 2022-5-11 07:01
兄弟呀,这么晚还在交作业,别把自己身体搞跨了!
<p>尽量吧,否则也被催呀!</p>
页:
[1]