STM32F4實時時間精確到ms

開發板:STM32F407

1.目的:在屏幕上能顯示的實時時間精確到ms,如 時 :分:秒:毫秒;

2.方式:RTC結合systick定時器,由於RTC只能爲秒級,所以毫秒需要利用systick定時器來產生;

3.代碼:

(1)首先RTC日曆的例程官方都有提供,此處就不贅述了,這裏重點講有關systick產生毫秒計時的部分;

(2)main.c

    SysTick_Init();      //SysTick 初始化函數,在初始函數中將中斷設置爲1ms中斷一次
    while(1){
            RTC_TimeAndDate_Show();     //RTC時鐘顯示
        }

在SysTick 的中斷服務函數 SysTick_Handler()中添加如下代碼:

if(x==1000){         //x初值爲0,爲ms計次,1ms中斷一次,中斷1000次爲1秒;
        s=s+1;          
        x=0;
        if(s==60)      //s初值爲0,爲s計次,s的設定是爲了與RTC產生的s作對比,驗證其是否同步以及準確性
            s=0;
    }
    sprintf(LCDTemp5,"The MS:%0.3d",x);          //在屏幕上打印毫秒
    ILI9806G_DispStringLine_EN(LINE(8),LCDTemp5);
    x++;

}

爲了減少頻繁的ms打印對systick秒的影響,方便與RTC輸出的秒做比較,此處將秒s設置爲全局變量在RTC_TimeAndDate_Show()函數中打印。

4.結果

由屏幕顯示可以發現,systick定時器產生的秒與RTC輸出的秒同步,毫秒也可正常打印。

注:在使用GPS時鐘源與RTC精度對時時,要在RTC加一個邏輯(如果秒數大於30時分加一否則直接清零)這樣時鐘源一個信號來分鐘可正常運作,否則很可能出現分不走的情況。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章