STM32F446新建工程模板遇到的5个问题总结
版权声明:本文为博主原创文章,未经博主允许不得转载。
一、宏定义:STM32F446xx,USE_STDPERIPH_DRIVER
宏定义的说明:为什么需要两个宏定义
USE_STDPERIPH_DRIVER :这个说明你在使用标准外设驱动,有自己的外设配置文件,即stm32f10x_conf.h,详细可查看stm32f10x.h中8296-8298行。关于stm32f10x_conf.h文件中的内容,是有选择的#inlude "stm32f10x_xxxx.h",这样只编译需要的外设文件,减少hex文件的体积。如果没有使用这个宏,或没有stm32f10x_conf.h文件,那么编译时会有一大堆莫名奇妙地错误,这是因为MDK中也自带了stm32f10x_xxxx.h文件,使得编译器使用MDK中.h文件,而.c文件和.h文件版本是不匹配的。注意,如果是库文件的错误,那一定是你工程配置有问题。
STM32F446xx 是根据自己的芯片型号类配置的,对于F4系统,配置的方法如下:
打开文件路径:S:\STM32F446\en.stm32f4_dsp_stdperiph_lib\STM32F4xx_DSP_StdPeriph_Lib_V1.8.0\Libraries\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm 查看自己的使用的芯片
对于STM32F446来说,宏定义STM32F44xx其实就是上图圈红圈的内容
对于STM32F407来说,宏定义STM32F40_41xxx
【注意】两个宏定义之间是用逗号隔开的
二、对于FWLIB中需不需要stm32f4xx_fsmc.c的说明
可以参考文章:STM32 FSMC的用法--LCD:https://blog.****.net/stephen_yu/article/details/10220785
三、关于包含路径的说明
固件库存放的头文件子目录是\FWLIB\inc,不是 FWLIB\src。结合自己的ADC项目
四、系统时钟配置(重要)
还有个非常重要的关键点,就是系统时钟的配置,查看 System_stm32f4xx.c 文件,把主时钟频率配置为F446匹配的180MHz。
1、系统时钟设置原理与计算公式
2、查看分频倍频系数
3、查看外部晶振的值
4、计算验证:8MHz×360/8×2=180MHz,到此为止,系统时钟已经配置为180MHz,即主频已经配置为180MHz。
五、删掉两个地方,错误和警告就没了
六、关于CORE文件夹的说明,启动文件修改为自己使用的文件
与正点原子的F407对比
注意:我用core_cmSimd(2015年编写的)替代掉core_cm4_simd(2013年编写的),编译时会发现错误,我们只需要把宏定义#define core_cm4_simd修改为#define core_cmSimd 即可解决问题