ARM开发环境下对stm32简单程序编译及使用protues完成对51程序的设计及仿真

   日期:2020-10-06     浏览:110    评论:0    
核心提示:文章目录本次作业目的:前言一、二、使用步骤1.引入库2.读入数据总结本次作业目的:*1.* 安装mdk5软件和stm32包,熟悉mdk开发环境,完成一个stm32的简单程序的编译。安装过程可参考 网上或者“STM32底座实验指导书”第1章。示例程序可以参考网上代码,或者“STM32底座实验指导书”第 3章的“LED闪烁”。(注意,没有硬件之前,只能做程序的编译和仿真测试,无法下载到硬件上运行)*2.* 安装并熟悉Proteus 电路仿真软件,完成一个51程序设计和仿真,可参考:http://m

提示:本文为课程作业,存在很多不足。

文章目录

  • 一、本次作业目的
  • 二、MDK5.0软件和stm32包的安装及个别问题
  • 三、MDK开发环境下对stm32简单程序的编译
    • 3.1 创建项目
    • 3.2 源文件的创建及编译
  • 四、安装protues然后完成一个51程序的设计和仿真
    • 4.1 在keil上完成流水灯的编程
    • 4.2 在protues画好流水灯原理图
    • 4.3 仿真
  • 总结

一、本次作业目的

1. 安装mdk5软件和stm32包,熟悉mdk开发环境,完成一个stm32的简单程序的编译。安装过程可参考 网上或者“STM32底座实验指导书”第1章。示例程序可以参考网上代码,或者“STM32底座实验指导书”第 3章的“LED闪烁”。(注意,没有硬件之前,只能做程序的编译和仿真测试,无法下载到硬件上运行)
2. 安装并熟悉Proteus 电路仿真软件,完成一个51程序设计和仿真,可参考:http://m.elecfans.com/article/581557.html

二、MDK5.0软件和stm32包的安装及个别问题

在官网或者其他来源下载mdk5.0安装包
Ps:官网下载较慢,建议使用其他来源进行下载

下载好安装包后按照安装步骤进行安装即可

针对我在安装时出现的问题以及解决方法
我在使用注册机时出现了以下情况

这里是因为我没有使用管理员权限登录
我们这里退出去,以管理员身份运行程序再进行注册

下图为注册成功后界面显示

由于这个只能用到2020年,所以可能会过期,建议使用2032版本的 注册机

之后我们再从官网或者其他来源下载安装stm32
Ps:下载好后直接双击文件进行安装即可

三、MDK开发环境下对stm32简单程序的编译

如下示例:

3.1 创建项目

点击项目-->选择新uVsion项目

选择芯片

点击cancel

项目创建成功

3.2 源文件的创建及编译

  1. 添加启动文件startup_stm32f10x_hd.s

双击Source Group 1

找到startup_stm32f10x_hd.s文件点击添加 (注意文件类型,避免在目录下找不到该文件)


2. 创建源文件main.c及代码输入

右键单击Source Group 1(如图选择Add New......)

创建main.c源文件

输入代码

代码如下:

#include<stdio.h>
void SystemInit(void)
{ 
	printf("Hello World\n");
}
int main(void)
{ 
	SystemInit();
	return 0;
}
  1. 编译main.c文件

点击如图所示按键进行编译

编译成功(存在警告)


警告解决办法(在第十行后面加一个回车按键)

四、安装protues然后完成一个51程序的设计和仿真

由于之前的课程中已经安装protues软件以及keil c51,所以这里不展示安装过程
设计的51程序为流水灯程序

4.1 在keil上完成流水灯的编程

新建项目 -->search处直接搜索AT89C51

同上添加.c文件后编写程序

代码如下:

#include "reg51.h" //引用头文件reg51.h
#include <intrins.h> //引用intrins.h函数,用于_nop_()指令

void delay_ms(int a)                     //创建delay_ms,设置延迟时间 a
{ 
	int i,j;                             //定义变量i,j
	for(i=0;i<a;i++)                     
	{ 
		for(j=0;j<1000;j++) _nop_();     //_nop_等同于NOP指令,完成一个机器周期,清空存储的内容

	}
}

void main(void)
{ 
	while(1)
	{ 
		P0=0xfe;                       //P0口8个引脚被赋值成11111110,此时P0.0为低电平
		delay_ms(100);                 //周期内循环,完成循环后_nop_清空内容
		P0=0xfd;                       //P0口8个引脚被赋值成11111101,此时P0.1为低电平
		delay_ms(100);
		P0=0xfb;                       //P0口8个引脚被赋值成11111011,此时P0.2为低电平
		delay_ms(100);
		P0=0xf7;                       //P0口8个引脚被赋值成11110111,此时P0.3为低电平
		delay_ms(100);
		P0=0xef;                       //P0口8个引脚被赋值成11101111,此时P0.4为低电平
		delay_ms(100);
		P0=0xdf;                       //P0口8个引脚被赋值成11011111,此时P0.5为低电平
		delay_ms(100);
		P0=0xbf;                       //P0口8个引脚被赋值成10111111,此时P0.6为低电平
		delay_ms(100);
		P0=0x7f;                       //P0口8个引脚被赋值成01111111,此时P0.7为低电平
		delay_ms(100);
	}
}

生成.hex文件
点击如图目标选项 --> 点击Output -->勾选Create HEX File -->然后再进行编译 -->Hex文件生成成功




4.2 在protues画好流水灯原理图

原理图如下

添加Hex文件
双击AT89C51 --> 点击Program File处文件夹 --> 找到之前生成的.hex文件 --> 添加成功

4.3 仿真

(部分仿真截图)


以上就是本次作业的全部内容

总结

这次的作业内容比上次作业较复杂,有之前学习过的51程序的设计及仿真,也有没学过的在mdk5开发环境下对stm32简单程序的编译。总的来说,还是有很多的收获。

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服