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 \r\n",(255.0-stimestructure.SubSeconds)/256, HAL_GetTick());
        
//        printf("%02d/%02d/%02d ",2000 + sdatestructure.Year, sdatestructure.Month, sdatestructure.Date);
//        printf("%02d:%02d:%.3f \r\n",stimestructure.Hours, stimestructure.Minutes,stimestructure.Seconds+(255.0-stimestructure.SubSeconds)/256);
        HAL_Delay(10);
        /* USER CODE BEGIN 3 */

    }

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM