w494143467 发表于 2021-1-18 21:30

【GD32E503评测】Part4:屏幕和RTC代码融合

<p><strong>1.介绍</strong></p>

<p>想了一想,有屏幕那肯定要做一些正经的东西,然后就想到了先做个简单的RTC和屏幕的结合吧,因为官方提供了RTC和屏幕的例程,那融合一下就可以了。</p>

<p><strong>2.融合开始</strong></p>

<p>首先运行一下RTC的例程,结果如下图,第一次运行时需要自己输入时间。</p>

<p class="imagemiddle" style="text-align: center;"></p>

<p>然后直接开始融合,打开屏幕显示代码,把显示部分都屏蔽了,除了边框的显示。</p>

<p class="imagemiddle" style="text-align: center;"></p>

<p>然后直接拷贝RTC的函数声明。</p>

<p class="imagemiddle" style="text-align: center;"></p>

<p>再拷贝初始化部分,和函数定义部分。</p>

<p class="imagemiddle" style="text-align: center;"></p>

<p class="imagemiddle" style="text-align: center;"></p>

<p>然后拷贝RTC的中断函数。</p>

<p class="imagemiddle" style="text-align: center;"></p>

<p>最后再自己写一个屏幕显示字符串的函数,也是唯一一个自己写的代码哈。</p>

<pre>
<code>void lcd_rtc_display(uint32_t timevar)
{
    uint32_t thh = 0, tmm = 0, tss = 0;
        char rtc_time_array = {0};

    /* compute hours */
    thh = timevar / 3600;
    /* compute minutes */
    tmm = (timevar % 3600) / 60;
    /* compute seconds */
    tss = (timevar % 3600) % 60;

    sprintf(rtc_time_array, " Time: %0.2d:%0.2d:%0.2d", thh, tmm, tss);
        for(uint8_t i = 0;rtc_time_array != '\0';i++)
        {
                lcd_char_display((35+8*i), 20, rtc_time_array, char_format);
        }
}</code></pre>

<p class="imagemiddle" style="text-align: center;"></p>

<p>最后拷贝到RTC时间刷新显示部分即可。</p>

<p class="imagemiddle" style="text-align: center;"></p>

<p>然后把显示函数放到主函数里循环就行了。</p>

<p class="imagemiddle" style="text-align: center;"></p>

<p>最终的效果如下图所示。</p>

<p class="imagemiddle" style="text-align: center;"></p>

<p><strong>3.总结</strong></p>

<p>这次融合非常快,因为代码基本没有冲突,拷贝过来直接用就可以了。后续会在这个Demo中添加其他功能,想在这个屏幕中播放视频哈~</p>

<p>这次融合的Demo代码:</p>
页: [1]
查看完整版本: 【GD32E503评测】Part4:屏幕和RTC代码融合