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

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



一、本次作业目的

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简单程序的编译。总的来说,还是有很多的收获。

猜你喜欢

转载自blog.csdn.net/aiwr_/article/details/108902835