stm32f105使用12M外部晶振
生活随笔
收集整理的這篇文章主要介紹了
stm32f105使用12M外部晶振
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
cl:互聯(lián)型產(chǎn)品,stm32f105/107系列
vl:超值型產(chǎn)品,stm32f100系列
xl:超高密度產(chǎn)品,stm32f101/103系列
ld:低密度產(chǎn)品,FLASH小于64K
md:中等密度產(chǎn)品,FLASH=64 or 128
hd:高密度產(chǎn)品,FLASH大于128
STM32F105和107是互聯(lián)型產(chǎn)品。在system_stm32f10x.c中他們的晶振默認是25M的。 為什么是25M呢?我猜可能是因為網(wǎng)絡PHY的關(guān)系,以太網(wǎng)需要100M的時鐘頻率。 使用25M的晶振方便網(wǎng)絡時鐘的生成。
25M晶振換12M晶振需要更改庫文件的兩個地方
stm32f10x.h #if !defined HSE_VALUE#ifdef STM32F10X_CL #define HSE_VALUE ((uint32_t)12000000) /*!< Value of the External oscillator in Hz */#else #define HSE_VALUE ((uint32_t)8000000) /*!< Value of the External oscillator in Hz */#endif /* STM32F10X_CL */ #endif /* HSE_VALUE */原25000000改為12000000
還有system_stm32f10x.c中的SetSysClockTo72函數(shù) #ifdef STM32F10X_CL/* Configure PLLs ------------------------------------------------------*//* PLL2 configuration: PLL2CLK = (HSE / 3) * 10 = 40 MHz *//* PREDIV1 configuration: PREDIV1CLK = PLL2 / 5 = 8 MHz */RCC->CFGR2 &= (uint32_t)~(RCC_CFGR2_PREDIV2 | RCC_CFGR2_PLL2MUL |RCC_CFGR2_PREDIV1 | RCC_CFGR2_PREDIV1SRC);RCC->CFGR2 |= (uint32_t)(RCC_CFGR2_PREDIV2_DIV3 | RCC_CFGR2_PLL2MUL10 |RCC_CFGR2_PREDIV1SRC_PLL2 | RCC_CFGR2_PREDIV1_DIV5);修改一下PLL2和PREDIV1的配置就可以了。
這樣修改之后時鐘配置上就與使用25M晶振時一模一樣了。
vl:超值型產(chǎn)品,stm32f100系列
xl:超高密度產(chǎn)品,stm32f101/103系列
ld:低密度產(chǎn)品,FLASH小于64K
md:中等密度產(chǎn)品,FLASH=64 or 128
hd:高密度產(chǎn)品,FLASH大于128
STM32F105和107是互聯(lián)型產(chǎn)品。在system_stm32f10x.c中他們的晶振默認是25M的。 為什么是25M呢?我猜可能是因為網(wǎng)絡PHY的關(guān)系,以太網(wǎng)需要100M的時鐘頻率。 使用25M的晶振方便網(wǎng)絡時鐘的生成。
25M晶振換12M晶振需要更改庫文件的兩個地方
stm32f10x.h #if !defined HSE_VALUE#ifdef STM32F10X_CL #define HSE_VALUE ((uint32_t)12000000) /*!< Value of the External oscillator in Hz */#else #define HSE_VALUE ((uint32_t)8000000) /*!< Value of the External oscillator in Hz */#endif /* STM32F10X_CL */ #endif /* HSE_VALUE */原25000000改為12000000
還有system_stm32f10x.c中的SetSysClockTo72函數(shù) #ifdef STM32F10X_CL/* Configure PLLs ------------------------------------------------------*//* PLL2 configuration: PLL2CLK = (HSE / 3) * 10 = 40 MHz *//* PREDIV1 configuration: PREDIV1CLK = PLL2 / 5 = 8 MHz */RCC->CFGR2 &= (uint32_t)~(RCC_CFGR2_PREDIV2 | RCC_CFGR2_PLL2MUL |RCC_CFGR2_PREDIV1 | RCC_CFGR2_PREDIV1SRC);RCC->CFGR2 |= (uint32_t)(RCC_CFGR2_PREDIV2_DIV3 | RCC_CFGR2_PLL2MUL10 |RCC_CFGR2_PREDIV1SRC_PLL2 | RCC_CFGR2_PREDIV1_DIV5);修改一下PLL2和PREDIV1的配置就可以了。
這樣修改之后時鐘配置上就與使用25M晶振時一模一樣了。
總結(jié)
以上是生活随笔為你收集整理的stm32f105使用12M外部晶振的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: windows 10家庭版关闭Defen
- 下一篇: gdb set写text/code段错误