dtcms linux encryption ios7 progressjs php项目实战 datetimepicker赋值 linuxmysql启动命令 pythonfor循环 javalabel 搭建java开发环境 javaswitch语句 java使用正则表达式 java怎么连接数据库 java时间戳转时间 java自学编程入门教程 java匿名函数 javac javaenum java定义 sql实例 图片链接生成器 快打旋风3出招表 16进制编辑器 lol语音包 自动回复机器人 js保留两位小数 什么软件买电影票便宜 论文修改软件 mtu设置多少最好 ug拔模 foobar2000插件 暴力猴 汉仪旗黑字体下载 kms工具 flash引导层动画 服务器系统安装教程 jdk11下载 kz文件怎么打开 化学式编辑器
当前位置: 首页 > 学习教程  > 编程语言

安装MDK5和编写一个STM32程序

2020/10/8 19:24:57 文章标签:

安装MDK5和编写一个STM32程序1.安装MDK5和stm322.简单编写一个stm32程序并运行1.安装MDK5和stm32 2.简单编写一个stm32程序并运行 1.1安装mdk5 1.2下载安装包,打开“mdk511.exe”开始安装 1.3根据自己需求可改变储存路径,也可直接用默认路径1.4可以随便…

安装MDK5和编写一个STM32程序

  • 1.安装MDK5和stm32
    • 2.简单编写一个stm32程序并运行

1.安装MDK5和stm32

2.简单编写一个stm32程序并运行

1.1安装mdk5
1.2下载安装包,打开“mdk511.exe”开始安装
在这里插入图片描述1.3根据自己需求可改变储存路径,也可直接用默认路径在这里插入图片描述1.4可以随便填写以下内容
1.5等待安装,点击完成。
1.6可使用注册机破解。
1.7下载安装ARM和stm

2 简单使用STM32
2.1打开keil5软件,新建一个工程
在这里插入图片描述2.2给新建工程命名在这里插入图片描述2.3选择STM在这里插入图片描述在这里插入图片描述2.4建立文件在这里插入图片描述2.5书写代码
在这里插入图片描述

//宏定义,用于存放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);//延时时间
     }
}

2.6将其保存为以.c结尾的文件
2.7在左侧source Group 1添加.c文件
在这里插入图片描述在这里插入图片描述然后Source Group 1下会出现你所添加的.c文件在这里插入图片描述2.8最后运行编译
在这里插入图片描述2.9程序仿真调试
在这里插入图片描述在这里插入图片描述

代码参考.


本文链接: http://www.dtmao.cc/news_show_250151.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?