1.开发环境
KEIL:MDK V5.21
配置方式参考正点原子官方提供
固件库版本:STM32F4xx_DSP_StdPeriph_Lib_V1.8.0
下载链接:[点击链接](https://my.st.com/content/my_st_com/en/products/embedded-software/mcu-mpu-embedded-software/stm32-embedded-software/stm32-standard-peripheral-libraries.html#products)
MCU:STM32F401RCT6
易出现问题点:*停留在LDR R0, =SystemInit位置
2.相关文件配置
请参考正点原子的文件放置进行配置,配置后效果如下
配置完成后,我这里使用的外部晶振是8M,需要对stm32f4xx.h以及system_stm32f4xx.c进行修改
1.stm32f4xx.h文件修改晶振参数
在下图位置将文件默认的25M改成8M晶振配置(注意是定义了STM32F401XX的位置,因为我使用的MCU属于STM32F401XX系列)
2.system_stm32f4xx.c文件修改
在文件的开头找到STM32F401XX时钟的相关默认配置,由于F401的最大系统时钟频率只能是84M,我们在进行配置的时候也不能超过这个最大频率,如果不了解某个MCU,可以使用STM官方提供的STM32CubeMX进行查看时钟配置
如上图,我们只需要修改PPL_M的分频值,将25改成8分频
我这里使用的最大值84MHz,也可以配置42MHz,具体可以自己定义,建议配置成整数
HCLK计算方法:外部晶振HSE / PLL_M * PLL_N / PLL_P=8M/8*336/4=84M
配置完成后在option→C/C++ Define中添加STM32F401XX_HD,STM32F401xx
当我上面全部配置完成后,debug下载程序总是停止在 LDR R0, =SystemInit位置,起初以为是时钟没有位置正确,后面查看stm32f4xx.h文件USE_STDPERIPH_DRIVER定义没有打开,打开USE_STDPERIPH_DRIVER后就正常了,这里不定义在option→C/C++ Define中添加USE_STDPERIPH_DRIVER也是可以的。