在做項目用到時間片輪詢架構 故用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 中斷一次!!