stm32 RTC如何获取ms计时

Posted zhulaoda

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了stm32 RTC如何获取ms计时相关的知识,希望对你有一定的参考价值。

  最近做个CAN记录器,想保存时间但是RTC只记录到秒,不能保存ms。百度没看到解决方法。自己捣鼓了一下。

  RTC有个亚秒寄存器,通过计算可以得到ms级计时。

技术图片

    RTC_TimeTypeDef stimestructure;
    RTC_DateTypeDef sdatestructure; 

    while (1)
    {
        /* USER CODE END WHILE */
        HAL_RTC_GetTime(&hrtc, &stimestructure, RTC_FORMAT_BIN);
        HAL_RTC_GetDate(&hrtc, &sdatestructure, RTC_FORMAT_BIN);
        
        // 亚秒值
        printf("%.3f,%d 
",(255.0-stimestructure.SubSeconds)/256, HAL_GetTick());
        
//        printf("%02d/%02d/%02d ",2000 + sdatestructure.Year, sdatestructure.Month, sdatestructure.Date);
//        printf("%02d:%02d:%.3f 
",stimestructure.Hours, stimestructure.Minutes,stimestructure.Seconds+(255.0-stimestructure.SubSeconds)/256);
        HAL_Delay(10);
        /* USER CODE BEGIN 3 */

    }

技术图片

技术图片

 

以上是关于stm32 RTC如何获取ms计时的主要内容,如果未能解决你的问题,请参考以下文章

如何设置 stm32f4 实时时钟(RTC)以在亚秒寄存器中获取有效值?

2019年9月19日星期四(STM32)

stm32 RTC 掉电后数据保存在哪里

STM32 RTC 初始化期间超时

stm32为啥要两个晶振

HAL库 STM32CubeMX实现RTC时钟