mdk5软件和stm32包的安装以及stm32程序“LED闪烁”调试,用Proteus仿真一个51程序设计和仿真

mdk5软件和stm32包的安装以及stm32程序“LED闪烁”调试,用Proteus仿真一个51程序设计和仿真

一.mdk的安装以及stm32包的安装

1.mdk的安装

1.1双击安装包出现如下界面,点击next。

mdk5软件和stm32包的安装以及stm32程序“LED闪烁”调试,用Proteus仿真一个51程序设计和仿真_第1张图片

1.2.点击next。

mdk5软件和stm32包的安装以及stm32程序“LED闪烁”调试,用Proteus仿真一个51程序设计和仿真_第2张图片

1.3.把它的安装路径改一下,这里我们把它装在D盘,然后继续点击next。

mdk5软件和stm32包的安装以及stm32程序“LED闪烁”调试,用Proteus仿真一个51程序设计和仿真_第3张图片

1.4.填入信息,点击next。

mdk5软件和stm32包的安装以及stm32程序“LED闪烁”调试,用Proteus仿真一个51程序设计和仿真_第4张图片

1.5.安装过程等几分钟。

mdk5软件和stm32包的安装以及stm32程序“LED闪烁”调试,用Proteus仿真一个51程序设计和仿真_第5张图片

1.6.若安装过程弹出如下界面,点击安装。

mdk5软件和stm32包的安装以及stm32程序“LED闪烁”调试,用Proteus仿真一个51程序设计和仿真_第6张图片

1.7.安装完成,点击Finish。

mdk5软件和stm32包的安装以及stm32程序“LED闪烁”调试,用Proteus仿真一个51程序设计和仿真_第7张图片

1.8.自动更新支持包,也可以直接退出,自己去下载安装。

mdk5软件和stm32包的安装以及stm32程序“LED闪烁”调试,用Proteus仿真一个51程序设计和仿真_第8张图片

1.9.双击安装包,出现以下界面,点击next。

mdk5软件和stm32包的安装以及stm32程序“LED闪烁”调试,用Proteus仿真一个51程序设计和仿真_第9张图片

1.10.等待安装完成。

mdk5软件和stm32包的安装以及stm32程序“LED闪烁”调试,用Proteus仿真一个51程序设计和仿真_第10张图片

1.11.点击Finish。

mdk5软件和stm32包的安装以及stm32程序“LED闪烁”调试,用Proteus仿真一个51程序设计和仿真_第11张图片

二.stm32的程序例子调试

1.mak中建立工程文件

点击project,点击New uVision project 创建工程

点击New创建一个文本文件,
mdk5软件和stm32包的安装以及stm32程序“LED闪烁”调试,用Proteus仿真一个51程序设计和仿真_第12张图片

输入程序
mdk5软件和stm32包的安装以及stm32程序“LED闪烁”调试,用Proteus仿真一个51程序设计和仿真_第13张图片
然后保存,自己定义文件名后缀加.c,
mdk5软件和stm32包的安装以及stm32程序“LED闪烁”调试,用Proteus仿真一个51程序设计和仿真_第14张图片
保存之后将文件添加到工程中。
mdk5软件和stm32包的安装以及stm32程序“LED闪烁”调试,用Proteus仿真一个51程序设计和仿真_第15张图片
进行编译
mdk5软件和stm32包的安装以及stm32程序“LED闪烁”调试,用Proteus仿真一个51程序设计和仿真_第16张图片
编译无错
mdk5软件和stm32包的安装以及stm32程序“LED闪烁”调试,用Proteus仿真一个51程序设计和仿真_第17张图片
代码例子如下:

#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.仿真电路

mdk5软件和stm32包的安装以及stm32程序“LED闪烁”调试,用Proteus仿真一个51程序设计和仿真_第18张图片
原件如下图:
mdk5软件和stm32包的安装以及stm32程序“LED闪烁”调试,用Proteus仿真一个51程序设计和仿真_第19张图片

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文件

点击确定
mdk5软件和stm32包的安装以及stm32程序“LED闪烁”调试,用Proteus仿真一个51程序设计和仿真_第20张图片

4.进行仿真

仿真结果如图
mdk5软件和stm32包的安装以及stm32程序“LED闪烁”调试,用Proteus仿真一个51程序设计和仿真_第21张图片
可以看到LED灯的闪烁。

四.总结

以上就是mdk和stm32包的安装以及stm32程序的调试,这里stm32没有硬件,所以只看编译结果。用protues和keil51做了一个流水灯的仿真实验。因为是初学者,我对于mdk和sym32 的了解肯定不够,所以在这里面肯定有很多问题,希望大家指正。

你可能感兴趣的:(单片机,stm32)