stm32之SysTick定時器

在做項目用到時間片輪詢架構 故用SysTick做中斷。芯片型號爲 stm32f051c8t6

一.我們先看f0的sysTick的時鐘來源以及配置。

從數據手冊可以看到 systick 來源於 HCLK  看下圖

是 HCLK還是HCLK/8 是由寄存器 CTRL的第三位決定的   看下圖

我們查看core_cm0.h中的 SysTick_Config函數可知 時鐘選擇爲 HCLK  看下圖

二、那麼HCLK的時鐘又是多少呢?(這裏粗略講一下,詳細的可以看我以前寫的 ”STM32F107(互聯網型)外部晶振用25MHZ 而STM32F103卻用8MHZ的原因及其時鐘來源分析“  這篇文章

在  SetSysClock()函數我們可以看到:

那麼 SYSCLK時鐘又是多少呢? 我們結合時鐘分配圖可以算出 48MHZ (我這裏採用的是 內部晶振8M)

 

三、因此我們systick的時鐘爲48MHZ  那麼怎麼定時間呢?看數據手冊可以知道 LOAD寄存器決定中斷的時間:

 

 48MHZ時鐘    計數 48次 就是  1us 

我這裏計數 48000 那麼就是 1ms 中斷一次!!

 

 

 

 

發佈了40 篇原創文章 · 獲贊 59 · 訪問量 15萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章