jinglixixi 发表于 2023-1-9 16:22

[ ST NUCLEO-U575ZI-Q 测评]+ 串口屏电子时钟计时及校正

<div class='showpostmsg'> 本帖最后由 jinglixixi 于 2023-1-11 00:30 编辑

<p><br />
在环境状态检测记录仪中,时间是数据采集的基准点,因此它的作用十分作用。</p>

<p>要在串口屏上让时钟走起来,就必须有串口通信功能和RTC计时功能的配合,为此相应将这两者在程序上结合在一起。</p>

<p>经程序的调试处理,其测试效果如图1所示。</p>

<p></p>

<p>图1 串口发送时间值测试</p>

<p>&nbsp;</p>

<p>实现图1功能时间显示函数为:</p>

<pre>
<code class="language-cpp">static void RTC_TimeShow(uint8_t *showtime)
{
        RTC_DateTypeDef sdatestructureget;
    RTC_TimeTypeDef stimestructureget;
    HAL_RTC_GetTime(&amp;hrtc, &amp;stimestructureget, RTC_FORMAT_BIN);
    HAL_RTC_GetDate(&amp;hrtc, &amp;sdatestructureget, RTC_FORMAT_BIN);
        if(p!=stimestructureget.Seconds)
        {
                zl=stimestructureget.Hours/10+'0';
          zl=stimestructureget.Hours%10+'0';
          
          zl=stimestructureget.Minutes/10+'0';
          zl=stimestructureget.Minutes%10+'0';
          
          zl=stimestructureget.Seconds/10+'0';
          zl=stimestructureget.Seconds%10+'0';       
          p=stimestructureget.Seconds;
          HAL_UART_Transmit(&amp;huart2, (uint8_t *)zl,20, 5000);
        }
}
</code></pre>

<p>&nbsp;</p>

<p>对应的主程序是:</p>

<pre>
<code class="language-cpp">int main(void)
{
   HAL_Init();
   HAL_PWR_EnableBkUpAccess();
   __HAL_RCC_BACKUPRESET_FORCE();
   __HAL_RCC_BACKUPRESET_RELEASE();
   SystemClock_Config();
   SystemPower_Config();
   MX_ICACHE_Init();
   MX_RTC_Init();
   RTCStatus = 1;
   MX_USART2_UART_Init();
   while (1)
   {
       RTC_TimeShow(aShowTime);
   }
}
</code></pre>

<p>&nbsp;</p>

<p>此时,将串口屏与开发板按图2所示连接起来,即可让时钟走起来。</p>

<p> 图2 器件连接</p>

<p>&nbsp;</p>

<p>为了进行时间的校正,相应借助串口屏的参数设置界面,其工作界面及设计界面如图3和图4所示。</p>

<p>图3 工作界面</p>

<p>&nbsp;</p>

<p>图4 界面设计</p>

<p>&nbsp;</p>

<p>在图3界面中,通过触摸不同的区域可选择设置参数的类型,然后使用右侧的操作面板即可完成参数的设置。</p>

<p>在完成参数设置后,通过触摸校正日期或校正时间键就能将参数方式给开发板。</p>

<p>&nbsp;</p>

<p>以设置时间值为例,在发送校正时间后,就会在设置时间的基础上开始计时,如图5所示。</p>

<p> 图5 校正时间</p>

<p>实现显示处理的程序为:</p>

<pre>
<code class="language-cpp">while (y)
{
        HAL_UART_Receive(&amp;huart2, (uint8_t *)aRxBuffer, 7, 1000);
        if (aRxBuffer==0x4E)
    {
                tn=(aRxBuffer-'0')*16+aRxBuffer-'0';
                ty=(aRxBuffer-'0')*16+aRxBuffer-'0';
                tt=(aRxBuffer-'0')*16+aRxBuffer-'0';
                zp=aRxBuffer;
                zp=aRxBuffer;
                zp=aRxBuffer;
                zp=aRxBuffer;
                zp=aRxBuffer;
                zp=aRxBuffer;
                HAL_UART_Transmit(&amp;huart2, (uint8_t *)zp,22, 1000);
                aRxBuffer=0x0;
                MX_RTC_Init();
    }
        if (aRxBuffer==0x54)
    {
                th=(aRxBuffer-'0')*16+aRxBuffer-'0';
                tm=(aRxBuffer-'0')*16+aRxBuffer-'0';
                ts=(aRxBuffer-'0')*16+aRxBuffer-'0';
                p=ts;
                MX_RTC_Init();
                y=0;
    }
        if (Buffercmp((uint8_t *)aTxBuffer3, (uint8_t *)aRxBuffer, 5)==0)
    {
                MX_RTC_Init();
                y=0;
    }
}
</code></pre>

<p>&nbsp;</p>

<p>这样在连接串口屏后,就可达到理想的设计效果。&nbsp;</p>

<p>&nbsp;</p>

<p>&nbsp;演示视频: e8498db8a2709d0f1797038e1e8c2956</p>
</div><script>                                        var loginstr = '<div class="locked">查看本帖全部内容,请<a href="javascript:;"   style="color:#e60000" class="loginf">登录</a>或者<a href="https://bbs.eeworld.com.cn/member.php?mod=register_eeworld.php&action=wechat" style="color:#e60000" target="_blank">注册</a></div>';
                                       
                                        if(parseInt(discuz_uid)==0){
                                                                                                (function($){
                                                        var postHeight = getTextHeight(400);
                                                        $(".showpostmsg").html($(".showpostmsg").html());
                                                        $(".showpostmsg").after(loginstr);
                                                        $(".showpostmsg").css({height:postHeight,overflow:"hidden"});
                                                })(jQuery);
                                        }                </script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script>

lugl4313820 发表于 2023-1-9 18:03

串口屏是哪家的产品?这样结合起来,挺有新意!

jinglixixi 发表于 2023-1-10 00:14

lugl4313820 发表于 2023-1-9 18:03
串口屏是哪家的产品?这样结合起来,挺有新意!

<p>淘晶驰的</p>

wangerxian 发表于 2023-1-10 09:22

<p>看着还不错,后面是不是要显示波形了。</p>

jinglixixi 发表于 2023-1-10 10:12

wangerxian 发表于 2023-1-10 09:22
看着还不错,后面是不是要显示波形了。

<p>马上来</p>

okhxyyo 发表于 2023-1-12 09:38

<p>测评汇总:免费申请|ST NUCLEO-U575ZI-Q https://bbs.eeworld.com.cn/thread-1228653-1-1.html</p>
页: [1]
查看完整版本: [ ST NUCLEO-U575ZI-Q 测评]+ 串口屏电子时钟计时及校正