嵌入式系统开发,STM32使LED灯闪烁

目录

一、环境配置

一) 安装mdk5软件和stm32 pack

1.准备好安装mdk5软件和stm32包,资源链接如下

2.安装mdk5程序

3.安装stm32 pack文件

4.破解mdk5软件

 二) Mdk5的基础设置

  三) stm32简单程序编译(LED闪烁)

四)stm32仿真测试


一、环境配置

一) 安装mdk5软件和stm32 pack

1.准备好安装mdk5软件和stm32包

链接: 百度网盘 请输入提取码

提取码: 2a8j

2.安装mdk5程序

1)将资源下载解压后得到如下内容

双击点开 MDK524a.EXE应用程序,进入安装,点击Next

2.勾选 lagree to all the terms of the preceding License Agreement ,并点击Next

3.点击 Browse 选择安装路径后点击Next

4.例行的注册客户信息,不用管,随意输入姓名邮箱后点击Next

 5.点击安装

6.点击Finish结束安装。

3.安装stm32 pack文件

 1.点击解压出来的文件夹,点击支持包,选择需要的版本安装

2.安装完成

4.PoJie mdk5软件

1.解压 keygen_new2032.zip 文件,双击打开得到的 keygen_new2032.exe 应用程序

2.以管理员身份运行打开Keil uVision5,点击File--License Management.

3.复制CID,将其输入keygen_new2032.exe中的CID选项,Target选择ARM,点击Generate,得到一串代码

4.将得到的代码输入到New License ID Code(LIC)中,点击Add LIC,结束

 二) Mdk5的基础设置

为了之后编写代码时不会时不时受到麻烦,提前将程序设置好有利于代码编写

1.进入MDK5,点击Edit--Configuration… ,或者点击扳手图标,进入设置界面

 2.设置Encoding编码形式为Chinese GB2312(Simplified),即简体中文,防止从别处复制代码过来里面的中文形成乱码,Tab size设置为4

3.点击左上角配置目标选项,点击Debug,按照图示设置选项.最后点击Settings 

4.将port设置为JTAG,Reset设置为SYSRESETREQ,然后点击OK返回上一级,再点击OK返回

  三) stm32简单程序编译(LED闪烁)

 1.打开mdk5,新建一个工程

2.搜索STM32F103RB,选择后点击OK

3.选择相应选项, 点击OK,项目创建成功

4.工程创建成功后,点击新建文件,出现Text1, 将如下代码输入Text1文本框其中

//宏定义,用于存放stm32寄存器映射
#define PERIPH_BASE           ((unsigned int)0x40000000)//AHB
#define APB2PERIPH_BASE       (PERIPH_BASE + 0x10000)
#define GPIOA_BASE            (APB2PERIPH_BASE + 0x0800)
//GPIOA_BASE=0x40000000+0x10000+0x0800=0x40010800,该地址为GPIOA的基地址
#define GPIOB_BASE            (APB2PERIPH_BASE + 0x0C00)
//GPIOB_BASE=0x40000000+0x10000+0x0C00=0x40010C00,该地址为GPIOB的基地址
#define GPIOC_BASE            (APB2PERIPH_BASE + 0x1000)
//GPIOC_BASE=0x40000000+0x10000+0x1000=0x40011000,该地址为GPIOC的基地址
#define GPIOD_BASE            (APB2PERIPH_BASE + 0x1400)
//GPIOD_BASE=0x40000000+0x10000+0x1400=0x40011400,该地址为GPIOD的基地址
#define GPIOE_BASE            (APB2PERIPH_BASE + 0x1800)
//GPIOE_BASE=0x40000000+0x10000+0x0800=0x40011800,该地址为GPIOE的基地址
#define GPIOF_BASE            (APB2PERIPH_BASE + 0x1C00)
//GPIOF_BASE=0x40000000+0x10000+0x0800=0x40011C00,该地址为GPIOF的基地址
#define GPIOG_BASE            (APB2PERIPH_BASE + 0x2000)
//GPIOG_BASE=0x40000000+0x10000+0x0800=0x40012000,该地址为GPIOG的基地址
#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类型别名
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类型别名
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;
//GPIOA指向地址GPIOA_BASE,GPIOA_BASE地址存放的数据类型为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;//LED熄灭
         Delay_ms(500);//延时时间
         LED0=1;//LED亮
         Delay_ms(500);//延时时间
     }
}

 5.点击左上角保存,文件名输入设置为main.c ,点击保存

6.右键点击 Source Group 1 ,然后点击 Add Existing Files to Group …(在工程下添加main.c文件)

7.选中刚刚保存的main.c文件,点击Add ,Source Group 1文件夹下就会多出main.c文件

8.点击右上角编译程序,下方显示0错误和0警告,即编译成功

四)stm32仿真测试

点击上方按钮或者ctrl F5开始调试

因为没有接入stm32硬件设备,所以先进行程序的编译和仿真测试

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值