STM32F1笔记(八)时钟
生活随笔
收集整理的這篇文章主要介紹了
STM32F1笔记(八)时钟
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
STM32有五種時鐘源
1、HSI。高速內部時鐘,RC振蕩器,頻率為8MHz。
2、HSE。高速外部時鐘,可接石英/陶瓷諧振器,或者借外部時鐘源,頻率范圍為4MHz~16MHz。
3、PLL。鎖相環(huán)倍頻輸出,其時鐘輸入源可選擇為HSI/2、HSE或者HSE/2。倍頻可選擇2~16倍,其輸出頻率最大不能超過72MHz(STM32F1)。
4、LSI。低速內部時鐘,RC振蕩器,頻率為40KHz。獨立看門狗的時鐘源只能是LSI,同事LSI還可以作為RTC的時鐘源。
5、LSE。低速外部時鐘,接頻率為32.768KHz的石英晶體。這個主要是RTC的時鐘源。
?
時鐘樹如下圖
?
?時鐘的配置可使用STM32CubeMX來作為參考
從配置圖可觀察到,當外部時鐘源為8M時,通過PLL9倍倍頻 后得到72M,即SYSCLK為72M。
其中需要注意的是,APB1上連接的是低速外設,最大時鐘為36M;
APB2上連接的是高速外設,最大時鐘為72M。
兩者連接的定時器時鐘都為72M。
?
系統(tǒng)時鐘配置函數(shù)是system_stm32f10x.c中的SystemInit(),它調用了SetSysClock();
/*** @brief Configures the System clock frequency, HCLK, PCLK2 and PCLK1 prescalers.* @param None* @retval None*/ static void SetSysClock(void) { #ifdef SYSCLK_FREQ_HSESetSysClockToHSE(); #elif defined SYSCLK_FREQ_24MHzSetSysClockTo24(); #elif defined SYSCLK_FREQ_36MHzSetSysClockTo36(); #elif defined SYSCLK_FREQ_48MHzSetSysClockTo48(); #elif defined SYSCLK_FREQ_56MHzSetSysClockTo56(); #elif defined SYSCLK_FREQ_72MHzSetSysClockTo72(); #endif/* If none of the define above is enabled, the HSI is used as System clocksource (default after reset) */ }可以看出可以通過宏定義來配置系統(tǒng)時鐘為多少。同時最后的注釋告訴我們,如果沒有任何HSE的宏定義被使能,HSI將被用為系統(tǒng)時鐘源。
例如72M的時鐘
#if defined (STM32F10X_LD_VL) || (defined STM32F10X_MD_VL) || (defined STM32F10X_HD_VL) /* #define SYSCLK_FREQ_HSE HSE_VALUE */#define SYSCLK_FREQ_24MHz 24000000 #else /* #define SYSCLK_FREQ_HSE HSE_VALUE */ /* #define SYSCLK_FREQ_24MHz 24000000 */ /* #define SYSCLK_FREQ_36MHz 36000000 */ /* #define SYSCLK_FREQ_48MHz 48000000 */ /* #define SYSCLK_FREQ_56MHz 56000000 */ #define SYSCLK_FREQ_72MHz 72000000 #endif?
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結
以上是生活随笔為你收集整理的STM32F1笔记(八)时钟的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 检查不孕不育去安阳哪家医院好
- 下一篇: 毛坯房装修多少钱一平啊?