博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ARM开发环境入门
阅读量:2085 次
发布时间:2019-04-29

本文共 2664 字,大约阅读时间需要 8 分钟。

ARM开发环境入门

学习目的

1、安装mdk5软件和stm32包,熟悉mdk开发环境,完成一个stm32的简单程序的编译。

2、安装并熟悉Proteus 电路仿真软件,完成一个51程序设计和仿真。

实验步骤

安装MDK并完成一个简单程序编译

1、根据指引完成安装

在这里插入图片描述

获取license注册MDK

在这里插入图片描述

在这里插入图片描述
获取License进行使用

2、新建一个project文件

在这里插入图片描述

3、选取一个STM芯片

在这里插入图片描述

4、新建一个文件写入如下代码

在这里插入图片描述

#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)) //PA8typedef  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

5、运行结果

在这里插入图片描述

安装Proteus ,完成一个51程序设计和仿真

1、根据指引安装proteus

在这里插入图片描述

2、新建一个文件

在这里插入图片描述

3、点击图片所在位置分别添加进去需要的芯片和元件

在这里插入图片描述

在这里插入图片描述

4、将各元件拖出连出需要的元件图

在这里插入图片描述

5、在MDK中写入所需要的代码

在这里插入图片描述

在这里插入图片描述
找到需要的芯片库文件

6、添加文件写入需要的代码

在这里插入图片描述

源代码

#include 
#include
void delay_ms(int a) {
int i,j; for(i=0;i

运行结果

在这里插入图片描述
右键点击target选择output生成hex文件
在这里插入图片描述
在这里插入图片描述

7、将代码导入到仿真系统中

单击芯片找到自己在MDK中生成的hex文件

在这里插入图片描述

8、运行结果

在这里插入图片描述

实验总结

这次实验旨在让我们安装并开始接触MDK和Proteus,根据网上别人的教程和不断摸索最后还是做出了一个非常简单的实验。以后需要多动手会更理解该软件的运用。

转载地址:http://zivqf.baihongyu.com/

你可能感兴趣的文章
使用notePad修改将文件格式保存后不起作用
查看>>
如何查询oracle会话及锁 如何查锁了哪张表?如何杀掉会话
查看>>
Git常用命令速查手册
查看>>
Redis运维利器 -- RedisManager
查看>>
分布式之REDIS复习精讲
查看>>
分布式之数据库和缓存双写一致性方案解析
查看>>
Redis集群
查看>>
Oracle 查看和扩展表空间
查看>>
记一次线上Java程序导致服务器CPU占用率过高的问题排除过程
查看>>
Java 内存溢出(java.lang.OutOfMemoryError)的常见情况和处理方式总结
查看>>
从cpu和内存来理解为什么数组比链表查询快
查看>>
CentOS7下使用YUM安装MySQL5.6
查看>>
JVM内存空间
查看>>
Docker 守护进程+远程连接+安全访问+启动冲突解决办法 (完整收藏版)
查看>>
从零写分布式RPC框架 系列 2.0 (4)使用BeanPostProcessor实现自定义@RpcReference注解注入
查看>>
Java 设计模式 轻读汇总版
查看>>
Paxos学习笔记及图解
查看>>
深入解析Spring使用枚举接收参数和返回值机制并提供自定义最佳实践
查看>>
数据序列化框架——Kryo
查看>>
布隆过滤器(BloomFilter)——应用(三)
查看>>