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

来源:互联网 发布:淘宝质量好的女装品牌 编辑:程序博客网 时间:2024/05/17 20:28


一、改变flsah download 对应的型号:

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


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


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


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


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

二、更改启动文件:xxxx.s 文件 

 




把以前芯片对应的启动文件改为现在对应的文件  通常路径为:\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm

关于型号的选择:

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


三、更改对应的宏:

在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


四、如果芯片差别较大:如最大主频率不同,要更改程序中的定时器操作等 
如  system_stm32f10x.c的系统主频率,依实际情况修改
#if defined (STM32F10X_LD_VL) || (defined STM32F10X_MD_VL)

 #define SYSCLK_FREQ_24MHz  24000000
#else

#define SYSCLK_FREQ_72MHz  72000000
#endif

五、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


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





0 0
原创粉丝点击