3、搭建MDK集成开发环境
实验二 ARM开发工具MDK集成开发环境的熟悉
一、实验目的:
1、 掌握MDK建立工程、设置工程的方法;
2、 掌握MDK编译工程、链接工程的方法;
3、 掌握MDK仿真调试的方法;
二、实验内容
新建一个工程,将实验原理中控制LED闪烁的程序拷贝到工程源文件,正确设置工程属性,编译无误后烧写到开发板观察现象。
三、实验原理:
Keil公司(该公司已被ARM公司收购!!)开发的ARM开发工具MDK(Microcontroller Development Kit),是用来开发基于ARM核的系列微控制器的嵌入式应用程序。它适合不同层次的开发者使用,包括专业的应用程序开发工程师和嵌入式软件开发的入门者。MDK包含了工业标准的Keil C编译器、宏汇编器、调试器、实时内核等组件,支持所有基于ARM的设备,能帮助工程师按照计划完成项目。
注意:下面源代码尽量尝试理解,后续课程会详细讲解,本次实验课的重点不是GPIO工作原理和编程语法,重点在MDK开发环境的熟悉!!
源文件startup.s内容:
PRESERVE8
THUMB
AREA RESET, DATA, READONLY
EXPORT __Vectors
__Vectors
DCD 0x20002000 ; Top of Stack
DCD Reset_Handler ; Reset Handler
AREA |.text|, CODE, READONLY
EXPORT Reset_Handler
Reset_Handler
IMPORT led
LDR R0, =led
BX R0
ALIGN
END
源文件led.c内容:
#define GPIOF_MODER (*(volatile unsigned int *)0x40021400)
#define GPIOF_OTYPER (*(volatile unsigned int *)0x40021404)
#define GPIOF_OSPEEDR (*(volatile unsigned int *)0x40021408)
#define GPIOF_PUPDR (*(volatile unsigned int *)0x4002140C)
#define GPIOF_ODR (*(volatile unsigned int *)0x40021414)
#define RCC_AHB1ENR (*(volatile unsigned int *)0x40023830)
void Delay(unsigned int nCount)
{
for(; nCount != 0; nCount--);
}
int led(void)
{
RCC_AHB1ENR |= 0x20;
GPIOF_MODER &= (~(0x3<<20));
GPIOF_MODER |= (0x1<<20);
GPIOF_OTYPER &= (~(0x1<<10));
GPIOF_OSPEEDR &= (~(0x3<<20));
GPIOF_OSPEEDR |= (0x2<<20);
GPIOF_PUPDR &= (~(0x3<<20));
while (1)
{
GPIOF_ODR |= (0x1<<10);
Delay(0xFFFFF);
GPIOF_ODR &= (~(0x1<<10));
Delay(0xFFFFF);
}
}
本实验的电路图如下:
三、实验步骤:
1、 启动MDK:
2、 建立工程:
新建文件夹并命名为led:
双击led进入led目录:
单击保存,我们弹出如下对话框,并选中STMicroelectronics->STM32F439IG:
单击ok,弹出如下对话框:
单击“否”按钮,到此一个空的工程建立完毕,如果此时没有建立工程视图窗口,则可通过如下操作调出工程视图窗口:
3、 设置工程:
在Target1上单击右键
单击linker选项卡,并照下图设置链接起始地址:
思考:为什么如此的设置链接起始地址?
点击Debug标签
点击Settings
点击Flash DowloadàAdd
单击OKàOK
单击OK,工程设置完毕
4、 建立文件并将文件添加到工程:
这个时候不要急着输入代码,先保存文件:
保存,这个时候还不要输入代码,将文件添加到工程:
在SourceGroup1上单击右键
选中led.c,再点击add,最后close按钮;
同样方法新建startup.s并添加到SourceGroup1
5、 将上面的源代码,拷贝到对应的源文件中,保存。
6、 编译、链接:
7、 烧写程序到开发板,片内flash
8、 启动调试:
监控我们程序中所操作的GPIOF端口:
单击行号前面空白处,设置断点
点击下图RUN按钮,或按键盘F5运行到断点处
按F10或F11单步运行,同时观察GPIOF监控窗口中的变化,并观察LED灯的亮灭!
总结:
建立工程、设置工程、建立文件、把文件添加到工程,设置断点单步调试!