使用bat命令快速完成移植——把STM32F407的keil版程序移植到IAR for ARM上进阶版
上次说了使用正点原子的Keil历程创建好一个IAR工程,如果每次都这样,还是有点麻烦的,有没有更简单的方法呢?当然有,使用Ctrl + C 和 Ctrl + V绝对是每个人使用的次数最多的快捷键,没有之一。那么废话少说,开始

首先,在上次建立的IAR文件中新建一个“IAR移植修改命令.bat”文件,就是我们后面要用到的主角,

里面的内容,::后面的绿色为注释

目标,使用移植成功的“实验0 Template工程模板”来完成“实验1 跑马灯实验”的移植

代码:
::set"yuanlaidemingzi= 跑马灯实验"
::原来的名字
::set "xianzaidemingzi=zyxy"
::修改IAR目录下的文件名
ren 跑马灯实验.* Template工程模板.*
::进入目录中的IAR\settings文件夹
cd settings
::修改IAR\settings目录下的文件名
ren 跑马灯实验.* Template工程模板.*
::返回上一层,进入项目文件夹\IAR
cd..
::返回上一层,进入项目文件夹\实验0 Template工程模板
cd..
::进入目录中的\实验0 Template工程模板\SYSTEM\usart文件夹
cd SYSTEM\usart
@echo off
::打开目录下的文件“usart.c”,主要是修改里面的支持printf函数的几句
for %%i in (usart.c) do (
(for /f "delims=" %%a in ('type "%%~fi"') do (
::把每一行的内容,赋值给 foo
set "foo=%%a"
::开启,延迟变量
setlocal enabledelayedexpansion
::3个在前一行添加的内容
if "!foo:~,5!"=="#if 1" echo #define IAR //使用IAR时,使能该句支持printf函数,使用keil时屏蔽掉
if "!foo:~,36!"=="#pragma import(__use_no_semihosting)" echo #ifndef IAR
if "!foo:~,14!"=="FILE __stdout;" echo #endif
:: 一个替换
set "foo=!foo:_sys_exit(int x)=void _sys_exit(int x)!"
echo,!foo!
endlocal
::写到usart1.c
))>usart1.c
)
::删除usart.c
del usart.c
::修改文件 usart1.c 为 usart.c
ren usart1.c* usart.c*
pause
exit


OK,开始Ctrl + C 和 Ctrl + V,
以已经移植成功的“实验0 Template工程模板”为基础,把其中建里的“IAR”文件夹 Ctrl + C

Ctrl + V到我们要移植的工程文件夹里面

打开复制的IAR文件夹 →在文件“IAR移植修改命令.bat”上右键 →编辑

打开文件后,如下图所示的两个地方的名字需要为修改之前工程的名字,我修改之前的为“Template工程模板”

如下图所示的两个地方的名字需要为修改之后工程的名字,我修改之后的为“跑马灯实验”,保存一下,关闭文件。

打开,目录\实验1 跑马灯实验\SYSTEM\usart →usart.c 文件,可以看到,内容在IAR中编译会报错,无法支持printf函数

双击文件“IAR移植修改命令.bat”,结果如下,可以看到,该目录下的文件名已经改变

打开\实验1 跑马灯实验\IAR\settings 可以看到文件名也已经改变

打开,目录\实验1 跑马灯实验\SYSTEM\usart →usart.c 可以看到如图所示的四个地方已经修改

致辞,工程移植完成了一大半

打开IAR for ARM →Project →Add Existing...

选择文件 跑马灯实验.ewp 打开

如下图所示,选择 编译 提示新的工作空间,

提示,选择是

可以编译成功,至此移植成功,以后就可以像打开其它IAR工程一样,直接打开.eww的工作空间文件就OK

使用ST-LINK下载运行,OK,就不演示了
愿你走出半生
归来仍是少年
————————2020年4月13日22:20:08