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

   日期:2020-10-08     浏览:209    评论:0    
核心提示: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.自动更新支持包,也可以

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 的了解肯定不够,所以在这里面肯定有很多问题,希望大家指正。

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服