搭建并配置keil嵌入式开发环境教程及stm32应用实例
目錄
- 一.keil環境搭建
- 1.keil的安裝
- 2.注冊器的注冊
- (1)運行注冊器
- (2)開始—keil圖標-以管理員身份運行
- (3)File–Lincense Management–Single-User Lincense
- (4)將注冊碼復制到Keil的New Lincense ID Code空白處,點擊Add LIC,點擊Close。支持包安裝
- 二、構建stm32程序
- 1.新建工程
- 2.配置環境
- 3.新建main.c文件編寫源碼。
- 4.程序的運行過程
- 5.編譯程序
- 6.stm32程序的仿真調試
- 三、總結
- 四、參考文獻
一.keil環境搭建
1.keil的安裝
mdk531安裝
鏈接:https://pan.baidu.com/s/1ttrDhv6kXgAvPiYINf9iGw
提取碼:1234
注冊器
鏈接:https://pan.baidu.com/s/1T11pBKpD6xc-cNmXBskcaw
提取碼:1234
支持包
鏈接:https://pan.baidu.com/s/1a7UDSVeLC4ktHNN9lV9oIA
提取碼:1234
通過以上下載mdk531和注冊器,安裝mdk,自行更改軟件路徑和支持包路徑,填寫相關信息,等待安裝完成,點擊Finish。
2.注冊器的注冊
(1)運行注冊器
(2)開始—keil圖標-以管理員身份運行
(3)File–Lincense Management–Single-User Lincense
找到CID,復制CID中的內容填寫到注冊器的CID空白處,將注冊器中Target選擇為ARM,點擊Generate,得到注冊碼。
(4)將注冊碼復制到Keil的New Lincense ID Code空白處,點擊Add LIC,點擊Close。支持包安裝
點擊運行下載的支持包,Finish即安裝完成。
二、構建stm32程序
1.新建工程
Project–>New μVision Project,新建項目,在彈窗中設置工程項目的名稱和路徑為test1的文件
2.配置環境
Project-Options for Target ‘Target 1’-STM32F103ZE
配置相應的運行環境
3.新建main.c文件編寫源碼。
//宏定義,用于存放stm32寄存器映射 #define PERIPH_BASE ((unsigned int)0x40000000)//AHB #define APB2PERIPH_BASE (PERIPH_BASE + 0x10000) #define GPIOA_BASE (APB2PERIPH_BASE + 0x0800) //GPIOA_BASE=0x40000000+0x10000+0x0800=0x40010800,該地址為GPIOA的基地址 #define GPIOB_BASE (APB2PERIPH_BASE + 0x0C00) //GPIOB_BASE=0x40000000+0x10000+0x0C00=0x40010C00,該地址為GPIOB的基地址 #define GPIOC_BASE (APB2PERIPH_BASE + 0x1000) //GPIOC_BASE=0x40000000+0x10000+0x1000=0x40011000,該地址為GPIOC的基地址 #define GPIOD_BASE (APB2PERIPH_BASE + 0x1400) //GPIOD_BASE=0x40000000+0x10000+0x1400=0x40011400,該地址為GPIOD的基地址 #define GPIOE_BASE (APB2PERIPH_BASE + 0x1800) //GPIOE_BASE=0x40000000+0x10000+0x0800=0x40011800,該地址為GPIOE的基地址 #define GPIOF_BASE (APB2PERIPH_BASE + 0x1C00) //GPIOF_BASE=0x40000000+0x10000+0x0800=0x40011C00,該地址為GPIOF的基地址 #define GPIOG_BASE (APB2PERIPH_BASE + 0x2000) //GPIOG_BASE=0x40000000+0x10000+0x0800=0x40012000,該地址為GPIOG的基地址 #define GPIOA_ODR_Addr (GPIOA_BASE+12) //0x4001080C #define GPIOB_ODR_Addr (GPIOB_BASE+12) //0x40010C0C #define GPIOC_ODR_Addr (GPIOC_BASE+12) //0x4001100C #define GPIOD_ODR_Addr (GPIOD_BASE+12) //0x4001140C #define GPIOE_ODR_Addr (GPIOE_BASE+12) //0x4001180C #define GPIOF_ODR_Addr (GPIOF_BASE+12) //0x40011A0C #define GPIOG_ODR_Addr (GPIOG_BASE+12) //0x40011E0C #define BITBAND(addr, bitnum) ((addr & 0xF0000000)+0x2000000+((addr &0xFFFFF)<<5)+(bitnum<<2)) #define MEM_ADDR(addr) *((volatile unsigned long *)(addr))#define LED0 MEM_ADDR(BITBAND(GPIOA_ODR_Addr,8)) //#define LED0 *((volatile unsigned long *)(0x422101a0)) //PA8 //定義typedef類型別名 typedef struct {volatile unsigned int CR;volatile unsigned int CFGR;volatile unsigned int CIR;volatile unsigned int APB2RSTR;volatile unsigned int APB1RSTR;volatile unsigned int AHBENR;volatile unsigned int APB2ENR;volatile unsigned int APB1ENR;volatile unsigned int BDCR;volatile unsigned int CSR; } RCC_TypeDef;#define RCC ((RCC_TypeDef *)0x40021000) //定義typedef類型別名 typedef struct { volatile unsigned int CRL; volatile unsigned int CRH; volatile unsigned int IDR; volatile unsigned int ODR; volatile unsigned int BSRR; volatile unsigned int BRR; volatile unsigned int LCKR; } GPIO_TypeDef; //GPIOA指向地址GPIOA_BASE,GPIOA_BASE地址存放的數據類型為GPIO_TypeDef #define GPIOA ((GPIO_TypeDef *)GPIOA_BASE)void LEDInit( void ) {RCC->APB2ENR|=1<<2; //GPIOA 時鐘開啟GPIOA->CRH&=0XFFFFFFF0;GPIOA->CRH|=0X00000003; }//粗略延時 void Delay_ms( volatile unsigned int t) {unsigned int i,n;for (n=0;n<t;n++)for (i=0;i<800;i++); }int main(void) {LEDInit();while (1){LED0=0;//LED熄滅Delay_ms(500);//延時時間LED0=1;//LED亮Delay_ms(500);//延時時間} }保存文件,切記保存文件時將文件名改為main.c,確保文件存儲類型為c文件。
4.程序的運行過程
右鍵 Source Group 1- Add Existing Files to Group-(即添加main.c文件)
選擇main.c-add
Source Group 1下出現了main.c
5.編譯程序
編譯完成,0個錯誤,0個警告,表示編譯成功。
6.stm32程序的仿真調試
魔法棒-Debug-Use Simulator - ULINK2/ME Cortex Debugger -Settings
Settings保證Port為JTAG,Reset設置為SYSRESEETREQ返回ok即可
開始調試
記錄build生成的 hex文件各段的大小,了解Hex文件格式及其前8個字節內容含義;
學習在沒有硬件條件下進行仿真調試的方法,觀察ARM寄存器變化狀況。
三、總結
由于沒有接入硬件設施僅僅只是進行了一個簡單的軟件調試,其調試結果展現不太直觀,如果想要更加直觀的展現這個LED燈程序展現則需要將程序下載至stm32的單片機上運行,這篇文章的重點僅僅是如何安裝MDK軟件、建立工程、如何編寫代碼、編譯程序、仿真調試的基礎教程,希望能幫到你。
四、參考文獻
STM32入門教程----閃爍LED
簡單的stm32程序的編譯
總結
以上是生活随笔為你收集整理的搭建并配置keil嵌入式开发环境教程及stm32应用实例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怎么删除feed php,怎样关闭或删除
- 下一篇: CIO40: IT从之“CRM”与“OA