STM32如何使用系統(tǒng)滴答定時器實現(xiàn)精準延時
插播一條信息????
直播時間:每天下午15:00到17:00,晚上19:00到21:00開啟知識直播專場?。?!
直播地址:B站主頁直播間,某音搜索“信盈達”賬號(有兩個號,分享不一樣的知識直播);
還是趕緊行動起來吧!??!??

定時器:能夠記錄時間并且達到設(shè)定時間還能有提醒功能的一種器件。
那么系統(tǒng)滴答定時器和普通的定時器有什么區(qū)別呢?
區(qū)別在于系統(tǒng)滴答定時器是捆綁在NVIC中斷體系的定時器,常用于提供操作系統(tǒng)的時間節(jié)拍為各個不同任務(wù)許以不同數(shù)目的時間片,確保沒有一個任務(wù)能霸占系統(tǒng)。

首先,讓我們了解一下讓我們了解一下系統(tǒng)滴答定時器的系統(tǒng)框圖。從框圖我們可以了解到系統(tǒng)滴答定時器主要由一個時鐘源選擇電路,一個重載值寄存器,一個24位遞減計數(shù)器以及一個控制/狀態(tài)寄存組成。

那么我們想要實現(xiàn)精準延時功能可以這樣做:
第一步:通過狀態(tài)/控制寄存器的第2位,可以選擇計數(shù)器的時鐘源,以此來決定計數(shù)器記一次數(shù)的時間。

第二步:通過重載值寄存器可以設(shè)置計數(shù)器從哪個數(shù)字遞減計數(shù)到0。

第三步:當我們設(shè)置好第一步和第二步以后,這個時候我們就可以通過計數(shù)器記一次數(shù)的時間和計數(shù)的次數(shù)即可計數(shù)出計數(shù)器計數(shù)完的時間。這個時候只需要對狀態(tài)/控制寄存器的第0位寫1,以打開計數(shù)器使其開始計數(shù)。

第四步:通過輪詢狀態(tài)/控制寄存器的第16位,如果該位為1則說明計數(shù)器計數(shù)完成,那么就完成了對應(yīng)的精準延時。

以STM32F407單片機為例,使用系統(tǒng)滴答定時器實現(xiàn)毫秒級精準延時參考代碼如下:

以STM32F407單片機為例,使用系統(tǒng)滴答定時器實現(xiàn)微秒級精準延時參考代碼如下:

結(jié)尾福利小彩蛋:????
近期信盈達推出福利活動,各項課程資料免費領(lǐng)取??!
我們有嵌入式、物聯(lián)網(wǎng)、python、單片機、C語言、PCB、Linux、硬件設(shè)計,STM32等課程資料等你來拿?。?/p>
還能加入訓(xùn)練營,和志同道合的小伙伴萌共同學(xué)習(xí),一起進步??!??
掃描下方二維碼,添加小助手,馬上領(lǐng)取資料哦(千萬記得要備注:B站+課程名字??)?


來源:文章來源于網(wǎng)絡(luò),版權(quán)歸原作者所有,如有侵權(quán),請聯(lián)系刪除。