MDK的例程給的外部晶振是25Mhz,以24Mhz為例,介紹修改方法。
·1. 修改HSE_VALUE
在 “stm32f4xx.h" 搜索 ”HSE_VALUE" 會看到下面這句話:
#if !defined (USE_STDPERIPH_DRIVER) /** * @brief Comment the line below if you will not use the peripherals drivers. In this case, these drivers will not be included and the application code will be based on direct access to peripherals registers */ /*#define USE_STDPERIPH_DRIVER */ #endif /* USE_STDPERIPH_DRIVER */ /** * @brief In the following line adjust the value of External High Speed oscillator (HSE) used in your application Tip: To avoid modifying this file each time you need to use different HSE, you can define the HSE value in your toolchain compiler preprocessor. */ #if !defined (HSE_VALUE) #define HSE_VALUE ((uint32_t)25000000) /*!< Value of the External oscillator in Hz */ #endif /* HSE_VALUE */
意思說不用修改這里的HSE_VALUE,可以使用預編譯工具來修改,但是MDK添加 HSE_VALUE的預編譯還行,添加值我不會。
要命的是,這里的“stm32f4xx.h"是受保護的不允許修改,好在,后面有個配置的頭文件:
搜索"#include",你會看到:
#ifdef USE_STDPERIPH_DRIVER #include "stm32f4xx_conf.h" #endif /* USE_STDPERIPH_DRIVER */
打開 "stm32f4xx_conf.h"文件,添加HSE_VLAUE的定義即可。
/* Define to prevent recursive inclusion -------------------------------------*/ #ifndef __STM32F4xx_CONF_H #define __STM32F4xx_CONF_H #undef HSE_VALUE #define HSE_VALUE ((uint32_t)24000000) /*!< Value of the External oscillator in Hz */ /* Includes ------------------------------------------------------------------*/ /* Uncomment the line below to enable peripheral header file inclusion */ #include "RTE_Components.h"
你以為完了嗎,沒有!!!
2. 修改PLL_M
打開文件 "system_stm32f4xx.c" ,搜索”PLL_M", 將其修改為24:
/************************* PLL Parameters *************************************/ /* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLL_M) * PLL_N */ #define PLL_M 24
(END)