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

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值