好久都沒有複習一下關於stm32硬體部分的知識,每次都是在不停的抄襲其他人開發板的資料和程式,自己也沒有乙個很好的總結,所以,最近打算,重新閱讀一下關於stm32資料手冊和一些晶元手冊,按照自己的想法,看看自己能不能憑藉著自己的能力重新編寫那些**。因為自己購買的stm32的開發板是正點原子的,所以,在學習過後,一般的程式中都帶有一點別人的程式的風格。
今天覆習的是關於stm32f103的滴答定時器。stm32f103是m3核心,內部自帶了乙個滴答定時器,而且,這個定時器是被**在nvic中,用於產生systick異常(異常號:15)。這個滴答定時器是24位的倒計數定時器,當計數值為0時,自動將reload暫存器中的重裝載值裝載為定時初值。
在實現us、ms定時時,我們首先應該選擇的是定時器的時鐘源。按照系統時鐘rcc初始化之後的時鐘來設定自己的時鐘,不過,我現在使用的是v3.5的版本庫,這個版本庫將system_init( ) 函式加入了啟動程式中,所以,如果我們在實現定時器的初始化之前不再進行任何時鐘設定的情況下,系統預設的時鐘是72mhz。
首先是關於滴答定時器的一些暫存器介紹。
上面的介紹了我們會使用到的三個暫存器,本來權威指南中介紹的是4個暫存器,最後乙個暫存器是校準暫存器,我暫時是沒有使用到,所以也就沒有深入的研究。
在這裡,我們選擇外部時鐘作為滴答定時器的心臟,然後設定定時器的時鐘為外部時鐘的8分頻,即9mhz。然後就是使能定時器,裝載定時值,等待定時器結束,然後關閉定時器,清空計數器計數值。總的流程就是上面介紹的步驟。
接下來,參考正點原子的函式,進行了程式設計。其實,仔細想想,別人的**真的是很優秀了,一行也不能缺少,一行也不多。
STM32 滴答定時器
在arm cortex m3核心中有乙個systick定時器,它是乙個24位的倒計數定時器,當計數到0時,它就會從load暫存器中自動重灌定時初值,只要不把ctrl暫存器中的enable清0,它就永不停。對於滴答定時器的理解主要分為下面幾項 1.滴答定時器的時鐘 看上面的圖會有乙個錯覺,以為滴答定時...
STM32F103 滴答定時器定時不准
緣由 做了五片同樣的板子,功能是使用板子上的感測器採集資料後,利用stm32f103串列埠將資料傳輸出去,就其中一片板子資料傳輸比其他的慢,原本正常使用串列埠115200波特率傳輸一幀資料只需要1s多,而那塊板子傳輸資料得十幾秒。一開始用示波器對時鐘測量都是ok的,外部晶振也是8mhz起振。在看程式...
stm32 系統滴答定時器Systick
systick定時器簡介 systick定時器就是系統滴答定時器,systick定時器,是乙個簡單的定時器,對於st的cm3,cm4,cm7核心晶元,都有systick定時器。systick定時器常用來作延時,或者實時系統的心跳時鐘,這樣可以節省mcu資源,不用浪費乙個定時器。systick定時器是...