二、创建工程
首先介绍一下IAR。
IAR EmbeddedWorkbench for ARM是一套支持ARM所有处理器的集成开发环境,包含项目管理器、编辑器、C/C++编译器、汇编器、连接器和调试器。在IAR Embedded Workbench for ARM环境下可以使用C/C++和汇编语言方便地开发ARM嵌入式应用程序,比较其他的ARM开发环境,IAREmbedded Workbench for ARM具有入门容易、使用方便、代码紧凑等特点。通过其内置的针对不同芯片的代码优化器,IAR Embedded Workbench for ARM可以为ARM芯片生成非常高效和可靠的FLASH/PROMable代码。不仅有这些可靠的技术,IAR Systems还为您提供专业的全球技术支持。(此段内容来自IAR网站)
然后我们一步步创建一个工程。
1. 新建一个文件夹,命名为工程的名字,在这个文件夹里创建我们的工程。为了更好管理工程,我们先在此文件夹下新建三个文件夹,分别命名为user,inc,和startup,如下图所示:
2. 到st网站上下载这块板子的库函数例程:http://www.stmcu.org/download/index.php?act=down&id=723
3. 解压后把STM32F4-Discovery_FW_V1.1.0\Project\Demonstration\EWARM目录下的stm32f40x_flash.icf复制到新建的文件夹目录下
把STM32F4-Discovery_FW_V1.1.0\Libraries\CMSIS\Include目录下的core_cm4.h
core_cm4_simd.h core_cmFunc.h core_cmInstr.h复制到inc目录下,
然后在把STM32F4-Discovery_FW_V1.1.0\Libraries\CMSIS\ST\STM32F4xx\Include目录下stm32f4xx.h和system_stm32f4xx.h文件复制到inc目录下。inc目录下的文件如下图所示:
4. 把STM32F4-Discovery_FW_V1.1.0\Libraries\CMSIS\ST\STM32F4xx\Source\Templates\iar目录下的startup_stm32f4xx.s复制到startup目录下。
5. 把STM32F4-Discovery_FW_V1.1.0\Libraries\CMSIS\ST\STM32F4xx\Source\Templates目录下的system_stm32f4xx.c文件复制到user目录下
6. 打开IAR,点击Project->Creat New Project,出现如下对话框:
点击OK,出现如下对话框:
找到刚才建立的文件夹,打开,然后在文件名中写入工程的名字,点击保存。
7. 然后右击Files下的工程,点击Add,按下图所示点击Add Group
出现如下对话框:
输入user,点OK。
重复步骤6,在建立两个Group,分别命名为startup和inc
8. 右击inc->Add->Files,如下图所示:
然后在对话框中打开刚才创建的inc文件夹,把其中的文件全部选中,如下图所示:
点击打开。
重复步骤7,在Group startup中添加文件夹startup中的startup_stm32f4xx.s文件,在Groupuser中添加文件夹user中的system_stm32f4xx.c文件,完成后如下图所示:
9. 点击File下的图标新建一个文件,我们的主程序就写在这个文件中,点击保存,命名为mian.c吧,保存在user目录下。
10. 然后加到Group user下
11. 右击工程Options弹出如下对话框
Target页按上图所示设置
点击C/C++ Compler,点击Prerocessor页,按下图设置
点击Linker勾选Overridedefault选项,然后点击右面浏览按钮
弹出如下对话框,点击但工程目录下,打开stm32f40x_flash.icf文件,如下图所示
点击Debugger,Driver选ST-LINK
点击Download页,勾选Use flashloader选项,如下图所示
点击ST-LINK,Interface选择SWD
点击OK,工程设置完毕
因为discovery的晶振为8M,所以请在 stm32f4xx.h中改
#if !defined (HSE_VALUE)
#define HSE_VALUE ((uint32_t)8000000)
#endif
在system_stm32f4xx.c中改
#define PLL_M 8
在main.c中写入如下代码:
//file:main.c
#include<stm32f4xx.h>
void main ()
{
while(1);
}
按键盘F7键,编译连接没出错的话,就是工程建立成功了,以后就可以直接复制这个工程文件夹,然后再添加一些代码或者文件来创建新的工程了。