日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

搭建并配置keil嵌入式开发环境教程及stm32应用实例

發布時間:2023/12/20 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 搭建并配置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应用实例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。