ARM开发环境入门练习
学习目的实验步骤1.安装MDK,点击exe文件安装2.注册MDK3.安装stm324.stm32的简单程序编译源代码
5.Proteus仿真实验1.安装Proteus源代码实验结果
实验总结
学习目的
安装mdk5软件和stm32包,熟悉mdk开发环境,完成一个stm32的简单程序的编译。安装过程可参考网上或者“STM32底座实验指导书”第1章。示例程序可以参考网上代码,或者“STM32底座实验指导书”第3章的“LED闪烁”。安装并熟悉Proteus 电路仿真软件,完成一个51程序设计和仿真。
实验步骤
1.安装MDK,点击exe文件安装
2.注册MDK
打开keil,点击文件选择 license management,将复制的CID填入keygen,再点击Generate. 注意:运行前关闭系统防火墙
将新生成的ID填入,再点击Add LIC即可.
3.安装stm32
点击next安装完成即可
4.stm32的简单程序编译
点击file,新建一个,保存文件名后缀为.c 写入代码编译没有bug
源代码
#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)
#define GPIOB_ODR_Addr (GPIOB_BASE+12)
#define GPIOC_ODR_Addr (GPIOC_BASE+12)
#define GPIOD_ODR_Addr (GPIOD_BASE+12)
#define GPIOE_ODR_Addr (GPIOE_BASE+12)
#define GPIOF_ODR_Addr (GPIOF_BASE+12)
#define GPIOG_ODR_Addr (GPIOG_BASE+12)
#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))
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
->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);
}
}
5.Proteus仿真实验
1.安装Proteus
打开proteus,创建新项目 添加自己想要的芯片和组件,完成仿真电路图 生成hex文件,保存到自己能找到的文件地址 点击芯片,添加刚才保存的hex文件,确定 运行
源代码
#include <reg51.h>
#include <intrins.h>
void delay_ms(int a
)
{
int i
,j
;
for(i
=0;i
<a
;i
++)
{
for(j
=0;j
<1000;j
++) _nop_();
}
}
void main(void)
{
while(1)
{
P0
=0xfe;
delay_ms(50);
P0
=0xfd;
delay_ms(50);
P0
=0xfb;
delay_ms(50);
P0
=0xf7;
delay_ms(50);
P0
=0xef;
delay_ms(50);
P0
=0xdf;
delay_ms(50);
P0
=0xbf;
delay_ms(50);
P0
=0x7f;
delay_ms(50);
}
}
实验结果
实验总结
本次实验主要是熟悉MDK的开发环境,在MDK环境下编译一个简单的程序,过程比较复杂,需要注意的细节有很多,其次就是安装并熟悉Proteus 电路仿真软件,完成一个51程序设计和仿真,实验本不难,主要是多运用,熟悉过后,以后就会好入手。