3、搭建MDK集成開發環境
實驗二 ARM開發工具MDK集成開發環境的熟悉
一、實驗目的:
1、 掌握MDK建立工程、設置工程的方法;
2、 掌握MDK編譯工程、鏈接工程的方法;
3、 掌握MDK仿真調試的方法;
二、實驗內容
新建一個工程,將實驗原理中控制LED閃爍的程序拷貝到工程源文件,正確設置工程屬性,編譯無誤後燒寫到開發板觀察現象。
三、實驗原理:
Keil公司(該公司已被ARM公司收購!!)開發的ARM開發工具MDK(Microcontroller Development Kit),是用來開發基於ARM核的系列微控制器的嵌入式應用程序。它適合不同層次的開發者使用,包括專業的應用程序開發工程師和嵌入式軟件開發的入門者。MDK
註意:下面源代碼盡量嘗試理解,後續課程會詳細講解,本次實驗課的重點不是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燈的亮滅!
總結:
建立工程、設置工程、建立文件、把文件添加到工程,設置斷點單步調試!
來自為知筆記(Wiz)
3、搭建MDK集成開發環境