mdk5軟體和stm32包的安裝以及stm32程式“LED閃爍”除錯,用Proteus仿真一個51程式設計和仿真
一.mdk的安裝以及stm32包的安裝
1.mdk的安裝
1.1雙擊安裝包出現如下界面,點擊next,

1.2.點擊next,

1.3.把它的安裝路徑改一下,這里我們把它裝在D盤,然后繼續點擊next,

1.4.填入資訊,點擊next,

1.5.安裝程序等幾分鐘,

1.6.若安裝程序彈出如下界面,點擊安裝,

1.7.安裝完成,點擊Finish,

1.8.自動更新支持包,也可以直接退出,自己去下載安裝,

1.9.雙擊安裝包,出現以下界面,點擊next,

1.10.等待安裝完成,

1.11.點擊Finish,

二.stm32的程式例子除錯
1.mak中建立工程檔案
點擊project,點擊New uVision project 創建工程

點擊New創建一個文本檔案,

輸入程式

然后保存,自己定義檔案名后綴加.c,

保存之后將檔案添加到工程中,

進行編譯

編譯無錯

代碼例子如下:
#define PERIPH_BASE ((unsigned int)0x40000000)
#define APB2PERIPH_BASE (PERIPH_BASE + 0x10000)
#define GPIOA_BASE (APB2PERIPH_BASE + 0x0800)
#define GPIOB_BASE (APB2PERIPH_BASE + 0x0C00)
#define GPIOC_BASE (APB2PERIPH_BASE + 0x1000)
#define GPIOD_BASE (APB2PERIPH_BASE + 0x1400)
#define GPIOE_BASE (APB2PERIPH_BASE + 0x1800)
#define GPIOF_BASE (APB2PERIPH_BASE + 0x1C00)
#define GPIOG_BASE (APB2PERIPH_BASE + 0x2000)
#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 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 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;
#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;
Delay_ms(500);
LED0=1;
Delay_ms(500);
}
}
三.proteus中仿真51單片機的實體流水燈
1.仿真電路

原件如下圖:

2.在keil c51,輸入以下代碼,編譯生成hex檔案
#include <reg51.h>
void delay(void)
{
unsigned char i ,j;
for(i=0;i<250;i++)
for(j=0;j<250;j++);
}
void main(void)
{
while(1)
{
P0=0xfe;
delay();
P0=0xfd;
delay();
P0=0xfb;
delay();
P0=0xf7;
delay();
P0=0xef;
delay();
P0=0xdf;
delay();
P0=0xbf;
delay();
P0=0x7f;
delay();
}
}
3.在protues中雙擊51單片機,裝載hex檔案
點擊確定

4.進行仿真
仿真結果如圖

可以看到LED燈的閃爍,
四.總結
以上就是mdk和stm32包的安裝以及stm32程式的除錯,這里stm32沒有硬體,所以只看編譯結果,用protues和keil51做了一個流水燈的仿真實驗,因為是初學者,我對于mdk和sym32 的了解肯定不夠,所以在這里面肯定有很多問題,希望大家指正,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/163915.html
標籤:其他
上一篇:鎖相環三個引數分析
