PS:本文负责记录本人日常遇到的报错问题,以及问题描述、原因以及解决办法等,解决办法百分百亲测有效。本篇会不定期更新,更新频率就看遇到的问题多不多了······
更换工程芯片型号
问题描述
例程最开始用的芯片型号是STM32F103VE,但改成STM32F103C8之后进行程序下载,发生报错问题如下:
原因
上图显示的报错是ADC的中断相关部分出了问题,但实际上这个报错的原因是不同型号的芯片之间,他们的FLASH即闪存大小不同导致的。
解决办法
这个问题解决起来很简单,我们只需要将本来的.s启动文件换成符合我们所使用芯片的FLASH大小即可。启动文件路径在工程目录下的这个路径里:
\Libraries\CMSIS\startup
低容量:16KB 、32KB ,选择 startup_stm32f10x_ld.s 或 startup_stm32f10x_ld_vl.s
中容量 :64KB、128KB ,选择 startup_stm32f10x_md.s 或 startup_stm32f10x_md_vl.s
高容量: 256KB及以上 , 选择 startup_stm32f10x_hd.s 或 startup_stm32f10x_hd_vl.s
因为STM32F103C8的FLASH是64KB,所以我们需要将名字带ld的启动文件加入startup中;而STM32F103VE的FLASH在128到256之间,所以最开始的启动文件是带hd的。
需要注意的是,添加完成后,我们需要把之前的.s启动文件从工程中移除,否则会出现如下报错:
最后,我们需要在魔术棒的c++中,将预编译的宏改动,以本人为例的话就是将HD改成MD,效果如下: