最近做了从STM32F103到STM32F407的程序移植工作。在做这项工作之前发现网上没有太全面的移植攻略,因而确实费了一番功夫和走了一些弯路。现在程序移植工作基本做完,趁着还能记起来遇到的问题,把程序移植需要注意的点整理在这里,希望对以后做这个工作的朋友能有些帮助。
虽然我做的是F407的移植,但是大部分内容对于F40xx_41xx,乃至F4其他系列的芯片都适用。
文章如要转载请私信与我联系,并注明作者Mr.括号。
一、硬件兼容改造
先说一下硬件吧,两种芯片的大部分引脚是相同的,需要改动部分电源引脚。官方的芯片数据手册上给出了兼容版的设计图,以100引脚的为例:
其中19引脚从VSS改成VDD,49和73引脚分别从接VSS改成接电容,电容值为2.2uF。
二、系统时钟设置
F407的外部高速时钟的宏定义在system_stm32f4xx.c中。
#define HSE_BYPASS_INPUT_FREQUENCY 8000000
其中8000000代表外部时钟选用8M晶振,此处需对应实际情况修改。
时钟设置在函数SetSysClock()中进行设置,关键语句为:
RCC->PLLCFGR = PLL_M | (PLL_N << 6) | (((PLL_P >> 1)-1) << 16) |(RCC_PLLCFGR_PLLSRC_HSE) | (PLL_Q << 24);
主时钟PLL的值等为:PLL=M*N/(M*P),对应需求进行修改。
三、外设时钟使能
F