目录
前言
介绍一下单片机开发软件IAR的基本使用,以STM32f407标准库建立工程
一、开发环境搭建
1.1 IAR的安装
IAR 7.1下载链接如下,点击install进行安装,其余参考百度
https://download.csdn.net/download/weixin_44567668/87358393
注意:如果使用高版本,高版本可以兼容低版本,只需要在高版本编译保存一下原工程即可
1.2 其他工具安装
下载链接:https://download.csdn.net/download/weixin_44567668/88503033
- CH340串口驱动安装
安装方法:直接点击安装(安装失败见readme),提示预安装成功即安装成功
作用:安装了串口驱动后,电脑就能识别串口 - 串口程序下载工具mcuisp(FlyMcu)
作用:可以将.hex格式程序通过串口下载到板子里 - 串口调试助手XCOM
作用:可以通过串口收发数据 - STLINK驱动安装
作用:可以在windows下配合MDK进行程序下载和调试。
1.3 官方固件库
下载链接:https://download.csdn.net/download/weixin_44567668/88633544
二、IAR基本使用
2.1 新建工程
2.1.1 文件创建
-
新建Template文件夹,在其中创建EWARM、FWLIB、USER文件夹
-
EWARM文件添加
1)新建Debug调试文件夹
2)将链接文件stm32f4xx_flash.icf
和stm32f4xx_sram.icf
复制过来
注意:该文件在官方固件库里Project\STM32F4xx_StdPeriph_Templates\EWARM目录下,找不到官方库文件,可以直接从附件例程里复制,下同
-
FWLIB存放标准库文件
1)将STM32F4固件库\Libraries\STM32F4xx_StdPeriph_Driver里的src
,inc
(源文件和头文件)文件夹复制到FWLIB,然后创建CORE文件夹
2)CORE文件夹添加
①将启动文件startup_stm32f40_41xxx.s
(文件目录在官方库文件Libraries\CMSIS\Device\ST\STM32F4xx\Source\Templates\iar)复制过来
②将核心文件core_cm4.h
、core_cm4_simd.h
、core_cmFunc.h
以及core_cmInstr.h
(文件目录Libraries\CMSIS\Include)4个文件同样复制过来
③将时钟文件system_stm32f4xx.c
(目录Libraries\CMSIS\Device\ST\STM32F4xx\Source\Templates)复制过来,此外将文件stm32f4xx.h
和system_stm32f4xx.h
(目录Libraries\CMSIS\Device——ST\STM32F4xx\Include)复制过来
-
USER
1)创建文件夹App(用于存放应用程序)和文件夹Driver(用于存放BSP驱动文件)
2)将文件
stm32f4xx_conf.h
,stm32f4xx_it.c
,stm32f4xx_it.h
(目录Project\STM32F4xx_StdPeriph_Templates)复制到USER目录下面(复制头文件和源文件)
3)复制一份delay
,sys
和usart
文件夹到Driver里(这三个文件是正点原子的,此步可有可无)
2.1.2 创建IAR工程
-
点击File——New——Workspace,新建工作空间
-
点击Project——Create New Project创建工程,在对话框Tool chain(选择ARM)——Project template(选择Emply project)——OK
文件名Project,保存路径在EWARM文件夹里
点击Save All,文件名保存为Project,以后就可以点击Project.eww文件打开工程
2.1.3 添加工程
-
首先添加组
右击Project->Add->Add Group(CMSIS,FWLIB,USER(App,Driver))
有*号说明还没有保存
-
添加文件
1)右击工程->Add->Add Files,只添加.c文件和.s文件,其中FWLIB里添加\Template\FWLIB\src的所有文件
2)新建一个空白文件
输入如下代码:
#include "stm32f4xx.h"
int main(void)
{
while(1);
}
点击保存,将文件命名为main.c
,保存到App文件夹里
此时右击就可以把main.c文件添加进来
2.1.4 IAR选项配置
-
Project右击->Option,打开选项配置
-
通用选项General Options
1)Target——Device选择自己使用的相应芯片型号
2)Output(选择输出路径,基本不需要动)
3)Library Configration
Library选择Full,勾选CMSIS(如果需要使用某些标准的库函数接口,如我们使用的printf and scanf
注意:CMSIS是微控制器软件接口标准的意思。IAR for ARM在V5和 V6、V7版本之间存在差异,很多人用新版本IAR编译以前工程出现错误的原因就在于此
- C/C++ Compiler->Preprocessor添加路径和宏定义
1)在Additional include directories:(one per line)里添加.h头文件路径
注意:添加的路径最好是相对路径$,而不是绝对路径。使用绝对路径工程位置改变之后就会找不到文件而报错。可以点击按钮选择路径,也可以通过复制文件路径进行配置。
2)在Defined symbols添加宏定义
USE_STDPERIPH_DRIVER
STM32F40_41xxx
xVECT_TAB_SRAM
3)Optimizations->Level框中勾选Medium,这是选择了中等的代码优化选项。
-
Output Converter—— Output可以设置最终编译链接后输出的文件类型和名称。
-
Linker——Config——Linker configuration file添加链接文件
勾选Override default重设默认文件,选择我们之前复制过来的stm32f4xx_flash.icf链接文件
-
Debugger->Setup配置仿真器
1)Driver选择ST-LINK
2)Download勾选上Verify Download和Use flash loader开启下载校验
-
ST-Link->Interface选择SWD
2.2 编译和调试
-
编译
1)单独编译Compile,快捷键Ctrl+F7
2)全局编译Make,快捷键F7
-
进入调试状态
点击Download and Debug,快捷键Ctrl+D
注意:需要在Debugger——Driver选择Simulator模拟,或者用ST-Link连接设备,如果使用ST-Link则开启调试就会烧录程序
调试窗口都在View打开:
序号 | 名称 | 功能 |
---|---|---|
① | 调试断点按钮 | 打开调试界面和设置断点 |
② | 调试控制按钮 | 可以跳转调试点 |
③ | Registers | 寄存器视图 |
④ | Disassembly | 程序执行栈 |
⑤ | Watch | 可以查看全局变量值 |
⑥ | Memory | 显示内存情况 |
- 仿真进行调试
常用的调试操作是Debug——Step Over(F10)逐过程、Step Into(F11)逐条执行程序指令、Go(F5)直接把程序执行到最后。在工具栏上也有调试可以直接使用,此程序的调试过程与结果如下:
再次执行将调至main处循环执行,可以看到将寄存器R0和R1的值相加存入R2当中。结束调试点击Stop Debugging(一个红色×号)。如果在调试期间修改程序,修改完成后点击Restart Debugger重新生成仿真 - 断点问题
在该行指令的最前面点击Toggle Breakpoints(或按F9)可以设置断点。按F5 键或工具条上的Go 按钮都可以让程序执行到断点。
IAR显示所有的断点,可以在View——Breakpoints中调用断点窗口,将需要找到所有的断点并将其关闭(右击delete)
2.3 环境配置
代码页面右击Option,打开IDE Options
-
如何使用操作系统自带而IAR没有的字体?
在IAR的APPDATA文件目录中找到IarIdePm.ini文件,编辑选择自己要使用的字体名。其中Common是通用字体,TextEditor是编辑器代码字体。代码字体选用了Keil默认的Courier New字体。
-
部分文件字体显示与设置的字体不一致?
不要勾选“Auto-detect character encoding”
-
IAR显示行号
显示行号:在代码段点击右键,找到Options——Editor——Show Line Numbers 勾选上就可以了。
2.4 常用快捷键
1、F9 光标处添加/删除断点;Ctrl+F9 使能/失能断点
2、注释的快捷键:Ctrl+K;取消注释:Ctrl+Shfit+K
3、Ctrl+Shfit+空格:可以使用IAR提供的内部代码的编写,如if、for、class语句。
4、CTRL + SHIFT +I:选中某些行可以实现自动的缩进
5、TAB键:可以实现自动缩进
6、Ctrl+Shift+V:列出剪切板中所有的字符串供选择粘贴
7、Ctrl+B:智能选择光标所在括弧内的区域,多次使用可选更大的区域
8、Shift+Alt+E:打开断点窗口,列出所有断点
9、Ctrl+F:向下寻找光标所在处的单词;Ctrl+Shift+F:在文件中搜索
10、Ctrl + H:替换字符串
11、Ctrl + G:跳到指定行
12、Ctrl+1:新增垂直窗口;Ctrl+2:新增水平窗口
13、F2:跳到下一个标签处;Shift + F2 在光标处添加标签
14、F3 向下寻找上次搜索的字符;Shift+F3:向上寻找上次搜索的单词
15、F4:跳到定义处;Ctrl+F4关闭当前文件;Ctrl+Shift+4关闭除当前激活外的所有文件
附录
1、STM32f407实验IAR版本
包含常规外设实验(uart,tim等)、应用实验(gps、蓝牙等)、文件系统fatfs以及RTOS(UCOS、FreeRTOS),具体见附件
2、C语言基础
https://blog.csdn.net/weixin_44567668/article/details/129003611
3、编译报错解决方式
https://blog.csdn.net/weixin_44567668/article/details/129003692