更换STM32芯片类型引发keil下载Error Flash download failed-Cortex-M3问题的解决


1、改变flsah download 对应的型号:spa

主菜单中打开Flash->Configure Falsh Tools配置窗口,切换到“Utilities"页。3d


按“Setting"按钮进入“Flash download setup"配置窗口blog


而后一路按“OK”按钮退出配置窗口。ip


在“Flash download setup"配置窗口点击“Add”按钮进入“Add Flash Programming Algorlthm"窗口get


在“Add Flash Programming Algorlthm"窗口,根据你实际使用的芯片选择flash

2、更改启动文件:xxxx.s 文件 产品

 




把之前芯片对应的启动文件改成如今对应的文件  一般路径为:\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\armit

关于型号的选择:配置

cl:互联型产品,stm32f105/107系列
vl:超值型产品,stm32f100系列
xl:超高密度产品,stm32f101/103系列
ld:低密度产品,FLASH小于64K
md:中等密度产品,FLASH=64 or 128
hd:高密度产品,FLASH大于128
定时器


3、更改对应的宏:

在KEIL下能够在项目的选项C/C++/PREPROMCESSOR symbols的Define栏里定义,好比STM32F10X_CL
也能够在STM32F10X.H里用宏定义
#if !defined (STM32F10X_LD) && !defined (STM32F10X_LD_VL) && !defined (STM32F10X_MD) && !defined (STM32F10X_MD_VL) && !defined (STM32F10X_HD) && !defined (STM32F10X_XL) && !defined (STM32F10X_CL)
      
   #define STM32F10X_HD           
#endif


4、若是芯片差异较大:如最大主频率不一样,要更改程序中的定时器操做等 
如  system_stm32f10x.c的系统主频率,依实际状况修改
#if defined (STM32F10X_LD_VL) || (defined STM32F10X_MD_VL)

 #define SYSCLK_FREQ_24MHz  24000000
#else

#define SYSCLK_FREQ_72MHz  72000000
#endif

5、flash地址misc.h中的NVIC_VectTab_Flash 0x08000000 要与KEIL选项target的IROM1的地址一致,若是是IAP程序,依ISP程序占用大小,APP的FLASH地址向后延,好比0X8002000,那么KEIL选项target的IROM1的地址也要就0x8002000,SIZE由于ISP占用了2000,因此就为0x40000-0x2000,即只能填写0X3E000


总结:总之所改的芯片跟之前的芯片在引脚定义 、寄存器操做 变化不大 。一般更改 第一步、第二部就能够移值到新的芯片上运行!!!