STM32F429 Discovery IAR工程建立与 LED点亮
一般在电脑上我们安装好编程环境后为了测试一下是否工作正常,一般都会写一
个最简单的程序测试一下,这就是经典的"Hello World"了.但在单片机系统上,想要
输出一个"Hello World"看起来并不像是一个开始,而像是一个结果,并且这个过程并
不是那么简单.
对于单片机来说,最简单的操作应该就是 GPIO的输入输出了,那就在单片机 GPIO
上接一个 LED,让点亮 LED来代替输出"Hello World"向这世界问好吧.
软件环境: IAR For ARM 6.7
硬件环境: STM32F429 Discovery
目标: 点亮位于单片机 PG13, PG14两个引脚上的两个 LED.
STM32F429 Discovery LED相关部分电路如下, 可以看出只要引脚输出高电平,
LED即会被点亮.
http://www.DevLabs.cn
一.STM32F4工程
模板
个人简介word模板免费下载关于员工迟到处罚通告模板康奈尔office模板下载康奈尔 笔记本 模板 下载软件方案模板免费下载
的建立.
1.在 ST官网下载 STM32F429 Discovery的固件包,地址为:
http://www.st.com/web/catalog/tools/FM116/SC959/SS1532/PF259090.
2.建立一个文件夹,取名为 Template. 因为 STM32工程的建立并不像 51那样简
单,所以我们建立一个工程模板,以便以后使用.
3.在 Template文件夹中新建三个文件夹,分别取名为 user, startup, inc, 分
别用于存放库模块头文件, 启动文件, 用户自己编写的文件.
4.将 STM32F429I-Discovery_FW_V1.0.1\Libraries\CMSIS\Include 这个文件
夹中的 core_cm4.h, core_cm4_simd.h, core_cmFunc.h, core_cminstr.h 四个文件
复制到 Template\inc 文件夹中.
5.将 STM32F429I-
Discovery_FW_V1.0.1\Libraries\CMSIS\Device\ST\STM32F4xx\Include 中的
STM32F4xx.h, system_stm32f4xx.h两个文件也复制到 Template\inc 文件夹中.
6.将 STM32F429I-Discovery_FW_V1.0.1\Projects\Template 文件夹中的
stm32f4xx_conf.h复制到 Template\inc文件夹中.
7.将 STM32F429I-
Discovery_FW_V1.0.1\Libraries\CMSIS\Device\ST\STM32F4xx\Source\Templates\
iar 下的 startup_stm32f429_439xx.s 复制到 Template\startup 文件夹中.
8.将 STM32F429I-
Discovery_FW_V1.0.1\Libraries\CMSIS\Device\ST\STM32F4xx\Source\Templates
下的 system_stm32f4xx.c 复制到 Template\user 文件中.
9.将 STM32F429I-Discovery_FW_V1.0.1\Projects\Demonstration\EWARM 下的
STM32F4XX_flash.icf 复制到 Template文件夹中.
10.在 user文件夹中新建一个 C文件,命令为 main.c .
http://www.DevLabs.cn
这时候 Template文件夹的结构应该如下:
\---Template
| stm32f4xx_flash.icf
|
+---inc
| core_cm4.h
| core_cm4_simd.h
| core_cmFunc.h
| core_cmInstr.h
| stm32f4xx.h
| stm32f4xx_conf.h
| system_stm32f4xx.h
|
+---startup
| startup_stm32f429_439xx.s
|
\---user
main.c
system_stm32f4xx.c
一共三个文件夹, 11个文件.
二.工程的建立.
1.先将模板复制一份,重新命名.这里我要做的是点亮一个 LED,所以就将文件夹
命名为 LED.
http://www.DevLabs.cn
2.打开 IAR, 选择 Project->Create New Projece.. ,弹出如下对话框, 点击确
定, 保存工程.
3.保存工程, 将工程名称依然取为 LED, 如图.
4.在工程名上右击, 选择 Add->Add Group...在弹出的对话框中填入 startup,
http://www.DevLabs.cn
回车,建立 startup组.
5.继续上一步操作, 建立 inc和 user组.
6.在组名字上右击, 选择 Add->Add File...,将 inc文件夹中的所有头文件添加
到 inc组下.
7.按照上一步操作, 在 user和 startup组中添加相应文件夹中的文件.完成后工
程结构应该如图所示.
8.选择 File->Save Workspace, 保存工作空间, 取名也为 LED.
9.右击工程名, 选择 Option..., 在弹出的对话框中,选择 Device, 单击右边的
按钮,选择 MCU型号为 STM32F429ZI.
http://www.DevLabs.cn
点击 c/c++ Compiler ,在右边选择 Preprocessor选项卡, 在下面添加如下内
容(如图):
http://www.DevLabs.cn
点击 Linker, 选择 Override default, 选择文件为 STM32F4xx_flash.icf.
点击 Debugger, 选择 Driver为 ST-LINK:
http://www.DevLabs.cn
选择 Download选项卡,选择 Use flash loader选项:
点击 ST-LINK, 选择 Interface为 SWD, 然后确定返回.
http://www.DevLabs.cn
10.按 F7 Make工程,这时候应该会有一大堆错误弹出来, 提示找不到头文件. 因
为在 STM32F4XX_conf.h中默认添加了所有模块的头文件, 而我们没有将对应的头文
件复制进来, 以报错了. 打开 STM32F4XX_conf.h, 将包含头文件的那几行全部注释
掉,现在重新编译应该就不会有错误了.
三.点亮 LED.
终于到了这一步.
上一步的准备工作做完后就可以真刀实枪的干了,在点灯的过程中我们需要使用
到 STM32的两个模块:RCC和 GPIO.
RCC是复位和时钟控制模块,在这里我们不深究,先点着灯要紧.
首先到\STM32F429I-
Discovery_FW_V1.0.1\Libraries\STM32F4xx_StdPeriph_Driver\inc 复制
STM32F4xx_gpio.h和 STM32F4xx_rcc两个头文件到 \LED\inc 文件夹中,
http://www.DevLabs.cn
到\STM32F429I-
Discovery_FW_V1.0.1\Libraries\STM32F4xx_StdPeriph_Driver\src 文件夹中复制
STM32F4xx_gpio.c和 STM32F4xx_rcc.c两个文件到 user文件夹中, 然后分别添加到
相应的组中.
此时工程结构应该为这样:
打开 inc文件夹下的 STM32F4xx.h, 在第 76行将 #define STM32F429_439xx反
注释掉, 将第 110行的#define USE_STDPERIPH_DRIVER反注释掉.
打开 STM32F4xx_conf.h, 在包含头文件的地方将 #include stm32F4xx_gpio.h
和#include stm32frxx_rcc.h反注释掉.
打开 main.c, 添加如下代码:
http://www.DevLabs.cn
#include "STM32F4xx.h"
#include "STM32F4xx_GPIO.h"
#include "STM32F4xx_RCC.h"
void LED_GPIO_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOG, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_14;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(GPIOG, &GPIO_InitStructure);
return;
}
int main(void)
{
LED_GPIO_Config();
GPIOG->BSRRL = GPIO_Pin_13;
GPIOG->BSRRL = GPIO_Pin_14;
while(1)
http://www.DevLabs.cn
{
}
}
然后按 F7编译, 完成后选择 Project->Download->Download active
application, 等待下载完成后按一个复位按钮(黑色), 你就会发现 LED被点亮了.
(全文完)
http://www.DevLabs.cn
STM32F429 Discovery IAR工程建立与LED点亮