将Keil工程移植到IAR中-stm32F1标准库+freeRTOS

在项目应用中,随着代码量的增加,Keil的编译速度实在是难以忍受,虽然最新的Keil版本在编译速度上有了很大的提升,但是在一些地方和IAR还是有一些差距,虽然IAR的兼容性是真的让人头疼,但是项目要求,现在要将一个可运行的Keil工程移植到IAR上。

虽然代码不会更改,但是移植过程还是让很多新手头疼的,现在记录一下移植过程。

我使用的是stm32F103REt6   使用的是标准库V3.5.0   FreeRtos V8.2.1

现在我们的cubmx已经很好用了,可以直接生成工程,但是有时开发项目对IAR的版本及RTOS的版本有要求,而且目前使用的都是stm32的HAL库。目前只说移植方法,不纠结更好的工具。

 

首先在将我们的文件都移植到IAR工程中。

 

1.右键项目名称--》options--》General Options--》target,选择自己的芯片

将Keil工程移植到IAR中-stm32F1标准库+freeRTOS

 

2.在options-->c/C++ compiler-->Preprocessor中

将Keil工程移植到IAR中-stm32F1标准库+freeRTOS

添加上自己各个文件夹的路径,不然会因为找不到指定文件而报错的。

 

同时Defined symbols 添加宏定义

USE_STDPERIPH_DRIVER

STM32F10X_HD(是MD,HD根据芯片选择)

 

3.Assembler-->Preprocessor中

 

添加上FreeRtosConfig.h所在的路径,不然.s文件会报一个找不到该文件的错误

将Keil工程移植到IAR中-stm32F1标准库+freeRTOS

 

4.linker中添加上我们的.icf文件路径

将Keil工程移植到IAR中-stm32F1标准库+freeRTOS

在我们的keil中我们可能没有这个文件,那么这个文件从哪去找呢??

在我们下载的st标准库3.50的这个路径下可以找到

W_STM32054_V3.5.0\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template\EWARM

将Keil工程移植到IAR中-stm32F1标准库+freeRTOS

.icf中定义了定义了芯片存储空间的大小,ROM的大小和起始、结束地址。

,定义RAM的大小和起始、结束地址。

所以这个文件是十分重要的。

5.Freertos相关文件的复制,具体的可以看一下我之前写的FreeRTos的移植方法。但是这里出现问题了,本能的将Keil下的rtos相关文件移植到IAR下,编译出现了很多报错,主要集中在port.c中,这个文件是平台相关的文件,keil的和IAR的这个文件是不一样的,故从FreeRtos v8.1.0的源码中找到IAR适配的文件复制到该路径下进行替换

FreeRTOSV8.2.1\FreeRTOSV8.2.1\FreeRTOS\Source\portable\IAR\ARM_CM3

 

其他的配置如debug的都是常规的不细说了。

 

6.如果你想在之前的项目上直接更改变成新的项目,需要改项目名称

只需要在你的IAR工程路径下\toolchain\EWARM

将Keil工程移植到IAR中-stm32F1标准库+freeRTOS

将这几个格式的文件以Text的格式打开,然后修改里面的标题,然后在将他们本身在重命名一下就可以了。

 

注:需要标准库3.5.0的和Freertos V8.1.0包的可以留言邮箱