IAR基于固件库建立STM32工程

 本文以 STM32F103C8T6 为例,进行工程的建立。本文建立工程的目录如下,各个文件夹的作用在图中标注。
在这里插入图片描述

1. ST官网下载相应的固件库

 可以参考 ST官网下载固件库 - 百度经验 或者 ST官网下载固件库 - CSDN博客

2. 复制启动文件

 STM32F10x_StdPeriph_Lib_V3.5.0\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\iar 文件夹下面的 .s 文件复制到自己的工程文件夹下的bsp目录下。具体使用哪个启动文件要依据自己的芯片型号和FLASH大小进行选择,本例中FLASH大小为64KB,选择md.s
在这里插入图片描述
 其中 ld:低密度产品,FLASH小于64K
   md:中等密度产品,FLASH=64 or 128
   hd:高密度产品,FLASH大于128

3. 复制 system 相关文件

 STM32F10x_StdPeriph_Lib_V3.5.0\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x 下的 .c 和 .h 文件复制到自己的工程目录下的bsp目录下。 在这里插入图片描述

4. 复制 driver 文件

 STM32F10x_StdPeriph_Lib_V3.5.0\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver 下的 inc 和 src 文件夹复制到自己的工程目录下的 driver 目录下。
在这里插入图片描述

5. 复制 .icf 链接文件

 STM32F10x_StdPeriph_Lib_V3.5.0\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template\EWARM 下的4个 .icf 文件复制到自己的工程目录下的bsp目录下。
 .icf 是链接文件,对于基本的应用,这个.icf文件足以满足你的工程需要。但有时也会需要改动,比如当你的项目要添加外部RAM时就要修改一下icf。可参考下面两篇文章 STM32中stm32f0xx_flash.icf文件的作用详解菜鸟详解iar的icf文件
在这里插入图片描述
复制之后要在选项中对路径进行修改
在这里插入图片描述

6. 复制中断相关文件

 STM32F10x_StdPeriph_Lib_V3.5.0\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template 下的3个文件复制到自己的工程目录下的bsp目录下,具体文件见下面截图。
在这里插入图片描述

7. 效果展示

 至此所有文件均已复制完毕。最终文件夹显示结果如下图所示。
 bsp 目录如下:
在这里插入图片描述
 doc 目录如下:
在这里插入图片描述
 driver 目录如下:

在这里插入图片描述
 usr 目录如下:
在这里插入图片描述](https://img-blog.csdnimg.cn/20191218095146692.png)

8. FILE错误处理

 找到选项,将Library设置为Full即可
在这里插入图片描述

9. 头文件路径设置

在这里插入图片描述

STM32的keil开发环境移植到IAR开发环境,分为六步走。 首先安装IAR编译环境,这个自行安装。 第一步 新建文件夹 新建一个文件夹命名“LED_CTRL”,在这个文件夹下再建立三个文件夹, CMSISI:放系统启动相关文件 ,FWLIB:放库文件 USER.:放用户自己写的文件 如下图: 第二步 拷贝文件 在keil下其实也有相对应的文件,我么们考过来就可以了。 下图是keil工程下的文件: 下面我们开始拷贝: 1. 拷贝CMSIS文件 2. 拷贝FWLIB文件 3. 拷贝USER文件 4. 拷贝剩余的其他用户自己写的程序(其实这些文件放哪都可以,根据自己的习惯吧) 拷贝完成如下图: 第三步 新建工程 打开软件 新建工程 点击OK 命名led_temp保存到LED_CTRL下 然后就会得到下面的界面。 第四步 添加分组及文件 开始往工程中添加文件 1. 新建分组:add group 好了,分组完成。 2.添加文件 a.往CMSIS添加文件:system_stm32f10x.c、startup_stm32f10x_md.s CMSIS->add->add files 路径如下: b.往FWLIB添加文件:"stm32f10x_gpio.c" "stm32f10x_rcc.c" "stm32f10x_spi.c" "stm32f10x_usart.c",(这里是因为工程中使用到了一部分的外围,所以需要自己根据工程需求添加) c.往USER中添加: "stm32f10x_it.c" "main.c",另外还有其他的用户自己写的文件led.c、nrf24l01.c、uart.c 。 到此,文件添加完成。 第五步 配置工程 同样选中“led_temp”然后右键,选择Options.就会出现配置界面,如下图 。 a. 选择工程使用的芯片型号,stm32f103c8t6,这里自己根据自己设置哦。 b.Library Configuration的Library要设置为Full,这样才能使用printf(); b. 进入C/C++Compiler,添加文件路径和所需的宏定义。 到此路径添加完成,下面添加宏定义。 不记得的,可以打开芯片的头文件查找即可。 到此,宏定义添加完成。 c. 进入Linker配置链接文件,点击进入,在IAR环境中已经存在,你选择和自己芯片匹配的就好了。 d. 进入Debugger配置,选择自己程序的下载方式。 选择下载到flash 到此,工程配置完成。 第六步 编译工程 同样选中”led_temp”右键-》Rebuild all 弹出文件名设置 同样设置为“led_temp”点击保存。 第六步 解决编译错误问题 弹出好多的错误: 解决办法: 1.core_cm3.h重命名为core_cm3.h.old 再次编译: 出现错误: 解决办法:继续进入工程配置,General Options->Library Configuration:Library 选FULL,右下角选择Use CMSIS 我们会看到,错误已经没有了,但是有很多的警告,如下图 解决办法:startup_stm32f10x_md.s文件中的”SECTION .text:CODE:REORDER”都要改为“SECTION .text:CODE: NOROOT:REORDER” 方法很简单,用Notepad++打开然进行替换即可。 首先,要去掉文件的只读模式,然后在修改。 好了,全部修改完成。保存,并恢复为只读模式,然后再编译工程工程编译结果无错误,无警告,移植到此结束,完美。 。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值