ARM开发环境入门——mdk5的安装及简单程序的编译和Proteus程序设计仿真

本文主要是介绍ARM开发环境入门——mdk5的安装及简单程序的编译和Proteus程序设计仿真,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

ARM开发环境入门

文章目录

  • ARM开发环境入门
  • 前言
  • 一、mdk5软件和stm32包的安装
    • (1)mdk5软件的安装
    • (2)stm32包的安装
  • 二、stm32“LED闪烁”程序编译
    • 1.打开mdk5软件,建立一个工程
    • 2.创建一个文本,输入代码,保存为.c文件
    • 3.将.c文件加入到工程下
    • 4.编译
  • 三、Proteus程序设计和仿真
    • 1.在keil4软件编译程序
    • 2.在Proteus软件上设计电路
    • 3.Proteus与Keil4的联调
  • 总结
  • 参考文献


前言

本文主要介绍了安装mdk5软件和stm32包的过程,并编译一个stm32简单的程序编译——“LED闪烁”和用Proteus电路仿真软件完成一个51程序设计并仿真——“数码管显示1到F”

一、mdk5软件和stm32包的安装

(1)mdk5软件的安装

1.右键点击安装包 ,以管理员身份运行,出现安装向导界面,
点击“Next”。
在这里插入图片描述
2.勾选“I agree to….”,点击“Next”。
在这里插入图片描述
3.选择软件和支持包路径(可以保持默认),点击“Next”。
在这里插入图片描述
4.填写名字等信息,点击“Next”。
在这里插入图片描述
5.安装过程等几分钟。
在这里插入图片描述
6.安装过程中弹出下面界面,点击“确定”。
在这里插入图片描述
7.安装完成,点击“Finish”。
在这里插入图片描述

(2)stm32包的安装

1.双击 Keil.STM32F1xx_DFP.2.1.0.pack,如下图。
在这里插入图片描述
2.选择 MDK5 的安装路径,点击“Next”开始安装,如下图。
在这里插入图片描述
3.安装完成,点击“Finish”,如下图。
在这里插入图片描述

二、stm32“LED闪烁”程序编译

1.打开mdk5软件,建立一个工程

首先点击project,选择“New uVision project”,如下图所示:
在这里插入图片描述
编辑工程名和保存路径:
在这里插入图片描述
选择合适的stm32的芯片:
在这里插入图片描述
并进行如下的勾选:
在这里插入图片描述
这样一个工程就创建完成了。

2.创建一个文本,输入代码,保存为.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);}
}

点击保存为.c文件:
在这里插入图片描述

3.将.c文件加入到工程下

点击"Add Existing Files to Group…"
在这里插入图片描述
选择之前保存的.c文件:
在这里插入图片描述

4.编译

在这里插入图片描述
运行结果如下:
在这里插入图片描述

三、Proteus程序设计和仿真

1.在keil4软件编译程序

建立工程的过程类似mdk5,下图是输入代码:
在这里插入图片描述
代码如下:

#include<reg51.h>
unsigned char code tab[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
main()
{
unsigned int j;
unsigned char i;
while(1)
{
for(i=1;i<=15;i++)
{
P1=tab[i];
for(j=0;j<=30000;j++);
}
}
}

编译:
在这里插入图片描述

2.在Proteus软件上设计电路

建立工程然后选择相应的元器件,连接线路如下:
在这里插入图片描述

3.Proteus与Keil4的联调

(1)keil4软件
在Keil软件上单击“Project菜单/Options for Target”选项或者点击工具栏的“option for ta rget”按钮 。
在这里插入图片描述

弹出窗口,点击“Debug”按钮,出现如图所示页面。
在出现的对话框里在右栏上部的下拉菜单里选中“Proteus VSM Monitor-51 Driver”。并且还要点击一下“Use”前面表明选中的小圆点。
在这里插入图片描述

再点击“Setting”按钮。
在这里插入图片描述

设置通信接口,在“Host”后面添上 “127.0.0.1”,如果使用的不是同一台电脑,则需要在这里添上另一台电脑的IP地址(另一台电脑也应安装Proteus)。在“Port”后面添 加“8000”。设置好的情形如图所示,点击“OK”按钮即可。最后将工程编译,进入调试状态,并运行。
(2)Proteus软件
进入Proteus的ISIS,鼠标左键点击菜单“Debug”,选中“use romote debuger monitor”,如图所示。此后,便可实现Keil与Proteus连接调试。
在这里插入图片描述
最后必须右击单片机加载hex文件,开始调试。
在这里插入图片描述
最后运行仿真,仿真结果如下:
在这里插入图片描述
在这里插入图片描述

总结

就是今天要讲的内容,本文仅仅简单介绍了mdk5和stm32包的安装,并用stm32进行了简单的程序编译,还复习了怎样用Proteus电路仿真软件完成一个51程序设计并仿真,谢谢观赏。

参考文献

1.STM32底座实验指导书
2.Proteus8与Keil4的连接调试教程

这篇关于ARM开发环境入门——mdk5的安装及简单程序的编译和Proteus程序设计仿真的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/917862

相关文章

从入门到精通MySQL联合查询

《从入门到精通MySQL联合查询》:本文主要介绍从入门到精通MySQL联合查询,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下... 目录摘要1. 多表联合查询时mysql内部原理2. 内连接3. 外连接4. 自连接5. 子查询6. 合并查询7. 插入查询结果摘要前面我们学习了数据库设计时要满

Python中win32包的安装及常见用途介绍

《Python中win32包的安装及常见用途介绍》在Windows环境下,PythonWin32模块通常随Python安装包一起安装,:本文主要介绍Python中win32包的安装及常见用途的相关... 目录前言主要组件安装方法常见用途1. 操作Windows注册表2. 操作Windows服务3. 窗口操作

从入门到精通C++11 <chrono> 库特性

《从入门到精通C++11<chrono>库特性》chrono库是C++11中一个非常强大和实用的库,它为时间处理提供了丰富的功能和类型安全的接口,通过本文的介绍,我们了解了chrono库的基本概念... 目录一、引言1.1 为什么需要<chrono>库1.2<chrono>库的基本概念二、时间段(Durat

Visual Studio 2022 编译C++20代码的图文步骤

《VisualStudio2022编译C++20代码的图文步骤》在VisualStudio中启用C++20import功能,需设置语言标准为ISOC++20,开启扫描源查找模块依赖及实验性标... 默认创建Visual Studio桌面控制台项目代码包含C++20的import方法。右键项目的属性:

SQLite3 在嵌入式C环境中存储音频/视频文件的最优方案

《SQLite3在嵌入式C环境中存储音频/视频文件的最优方案》本文探讨了SQLite3在嵌入式C环境中存储音视频文件的优化方案,推荐采用文件路径存储结合元数据管理,兼顾效率与资源限制,小文件可使用B... 目录SQLite3 在嵌入式C环境中存储音频/视频文件的专业方案一、存储策略选择1. 直接存储 vs

解析C++11 static_assert及与Boost库的关联从入门到精通

《解析C++11static_assert及与Boost库的关联从入门到精通》static_assert是C++中强大的编译时验证工具,它能够在编译阶段拦截不符合预期的类型或值,增强代码的健壮性,通... 目录一、背景知识:传统断言方法的局限性1.1 assert宏1.2 #error指令1.3 第三方解决

SpringBoot开发中十大常见陷阱深度解析与避坑指南

《SpringBoot开发中十大常见陷阱深度解析与避坑指南》在SpringBoot的开发过程中,即使是经验丰富的开发者也难免会遇到各种棘手的问题,本文将针对SpringBoot开发中十大常见的“坑... 目录引言一、配置总出错?是不是同时用了.properties和.yml?二、换个位置配置就失效?搞清楚加

从入门到精通MySQL 数据库索引(实战案例)

《从入门到精通MySQL数据库索引(实战案例)》索引是数据库的目录,提升查询速度,主要类型包括BTree、Hash、全文、空间索引,需根据场景选择,建议用于高频查询、关联字段、排序等,避免重复率高或... 目录一、索引是什么?能干嘛?核心作用:二、索引的 4 种主要类型(附通俗例子)1. BTree 索引(

Redis 配置文件使用建议redis.conf 从入门到实战

《Redis配置文件使用建议redis.conf从入门到实战》Redis配置方式包括配置文件、命令行参数、运行时CONFIG命令,支持动态修改参数及持久化,常用项涉及端口、绑定、内存策略等,版本8... 目录一、Redis.conf 是什么?二、命令行方式传参(适用于测试)三、运行时动态修改配置(不重启服务

Python中对FFmpeg封装开发库FFmpy详解

《Python中对FFmpeg封装开发库FFmpy详解》:本文主要介绍Python中对FFmpeg封装开发库FFmpy,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、FFmpy简介与安装1.1 FFmpy概述1.2 安装方法二、FFmpy核心类与方法2.1 FF