2020.11.2 - 将STM32F103ZE工程移植到STM32F103C8平台上(IAR工程)

首先明确一点,二者属于同一个内核CM3, 使用的标准库文件完全相同,不同的就是其启动文件和编译链接文件。

下面以IAR7.2集成开发工具上的操作举例, KEIL MDK上实质是相同操作。

步骤1

修改设备,从STM32F103ZEXX 改为STM32F103C8XX。
在这里插入图片描述

步骤2

在这里插入图片描述

步骤3

在这里插入图片描述
找到STM32F103C8XX对应的编译器链接脚本文件ICF。在安装IAR的路径下查找,路径为“D:\Program Files (x86)\IAR Systems\Embedded Workbench 7.2\arm\config\linker\ST”。
找到STMF103x8.icf文件后拷贝到上图指那个位置。
然后再点击图片上那个“EDIT”编辑按钮,修改里面的程序起始位置,或者堆栈大小。
在这里插入图片描述

步骤4

更换启动文件
在这里插入图片描述
启动文件是从官网下载下来的标准库文件夹里放着,路径为“XXXXXXX\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\iar”,选择STM32F103C8对应的启动文件就是“startup_stm32f10x_md.s”,
另外,注意一点,如果移植来操作系统,需要修改启动文件里的中断服务例名称,如“PendSV_Handler” 和 “OS_CPU_PendSVHandler”,确定移植操作系统时使用的哪个,我将“os_cpu_a.asm”里“OS_CPU_PendSVHandler”改成来“PendSV_Handler” ,所以这里迁移工程时不需要修改了。

最后

最后就是编译工程,修改错误来,因为从大引脚大容量迁移到少引脚低容量平台上,一些外设被屏蔽了,所以需要在工程中,将不能使用的外设部分去掉。