目录

一、前言

二、Proteus8和Keil5

2.1 Proteus下载、简介

2.2 keil5 下载、简介

四、C程序

五、仿真及结果


 

一、前言

(注:一切分享和教学仅供学习或参考)

本来准备开一个有关电子硬件的大坑,还准备写CAN总线的文章,但是光是买这些器件都好贵,这时本躯想起来大学的时候学过Proteus这个仿真软件,可以直接将代码导入原理图中测试,非常强大。不过当时只是跟着老师步骤走,根本不算会这个软件,所以本躯准备开一个保姆式教学,以便初学者快速上手在Proteus点亮属于自己的第一个Led。


二、Proteus8和Keil5

已经下载好的可以不看这一章,但需要注意的是,Proteus需要下载8.15或8.17版本。

2.1 Proteus下载、简介

Proteus软件推荐大家下载8.15之后的版本,主要因为8.15后的版本适配的MCU更多,比如我们常用的stm32f103C8只有在8.15及之后的版本才能找到。

Proteus最新版下载见下链接↓

【2025最新版】Proteus下载安装保姆级图文教程(附Proteus8.17安装包)-CSDN博客


Proteus是由英国Labcenter Electronics公司开发的电子设计自动化(EDA)工具,主要用于电路设计、仿真和PCB布局。其核心功能包括:

  • 电路仿真:支持模拟电路、数字电路及混合信号电路的仿真,内置丰富的虚拟仪器(如示波器、逻辑分析仪)。
  • 微控制器仿真:提供多种MCU模型(如8051、PIC、ARM等),可直接运行编译后的固件进行协同仿真。
  • PCB设计:从原理图到PCB布局的一体化流程,支持3D预览和多种制造文件导出格式。
  • 元件库丰富:涵盖数千种常用元件模型,支持用户自定义元件。

典型应用场景包括嵌入式系统开发、教学实验、电子竞赛及工业级电路设计验证。

简单来说,这能让我们方便的进行的设计验证和测试,具有强大的电路仿真能力。(不用花冤枉钱买一堆元器件啦)

2.2 keil5 下载、简介

Keil5大家肯定不陌生了,我是很久之前下载的Keil5了,所以随便找了个链接。

Keil5下载参考下链接↓

STM32入门(一):Keil_5下载和安装教程_keil uvision5-CSDN博客


Keil5(现为Keil MDK)是ARM公司推出的嵌入式开发工具链,专注于ARM Cortex-M系列微控制器的软件开发,主要特性如下:

  • 集成开发环境(IDE):提供代码编辑、项目管理、编译调试一体化界面,支持C/C++语言。
  • 编译器与调试器:内置ARMCC编译器,支持实时调试(JTAG/SWD接口)与性能分析。
  • RTOS支持:集成μVision调试器,兼容FreeRTOS、RTX等实时操作系统。
  • 中间件与库:包含CMSIS标准库、硬件抽象层(HAL)及各类外设驱动。

广泛应用于物联网设备、汽车电子、工业控制等领域的固件开发,与Proteus联用可实现软硬件协同验证。


三、原理图

OK啊也是到了实操时间,下面开始保姆式教程↓

1.新建工程 2.设置你的工程名 3.选择工程保存的文件夹 4.点击next

5.选择你的原理图,我一般用A0 6.点击next

7.在这里我们不需要PCB,所以选不创建PCB 8.点击next

9.点击创建固件项目 10.我们这里选择Cortex-M3系列MCU 11.我们这里选择STM32F103C8单片机

12.点击next

13.点击Finish!!!

14.OK啊我们也是开始原理图设计了,现在直接把Source Code×掉,我们不用它(SC:你不必嘲笑我的废物,因为我不会成为你的IDE或调试器)。

15.在原理图上右键,可以召唤出妙妙小工具,元件中的“From Libraries”可以找到绝大多数常用元器件,在终端里可以找到我们常用的power和ground等

16.在“From Libraries”中的Keywords栏搜索元件关键词,找到后点击“确定”就可以加入我们的手牌!

17.根据这些元器件的名称一个个添加进来

18.根据我的原理图画出来吧,当然,右边这些最小系统应该是可以不画的,但是我是强迫症。


四、C程序

Keil5就不教学了,程序太简单了不描述了,直接把源程序贴出来了,在我的资源那里也可以直接免费下载Hex文件哦


main.c

#include "stm32f10x.h"                  // Device header
#include "Delay.h"

int main(void)
{
    //配置IO口——A1口为推挽输出模式、50MHz并开启;
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
	
	GPIO_InitTypeDef GPIO_InitStructure;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(GPIOA, &GPIO_InitStructure);
	
	while (1)
	{
        //打开、延时、关闭、延时实现闪烁效果
		GPIO_ResetBits(GPIOA, GPIO_Pin_1);
		Delay_ms(500);
		GPIO_SetBits(GPIOA, GPIO_Pin_1);
		Delay_ms(500);
	}
}

Delay.c

#include "stm32f10x.h"

void Delay_us(uint32_t xus)
{
	SysTick->LOAD = 72 * xus;				//设置定时器重装值
	SysTick->VAL = 0x00;					//清空当前计数值
	SysTick->CTRL = 0x00000005;				//设置时钟源为HCLK,启动定时器
	while(!(SysTick->CTRL & 0x00010000));	//等待计数到0
	SysTick->CTRL = 0x00000004;				//关闭定时器
}

void Delay_ms(uint32_t xms)
{
	while(xms--)
	{
		Delay_us(1000);
	}
}

Delay.h

#ifndef __DELAY_H
#define __DELAY_H

void Delay_us(uint32_t us);
void Delay_ms(uint32_t ms);

#endif

1.点击魔术棒 2.点击output 3.勾选创建HEX文件 4.确认并编译

 

5.在你的Keil工程文件中找到Objects文件夹

6.可以找到你的HEX文件(当然你可以自命名HEX文件的名字,这里如果你没有更改就是Project.hex)

 


五、仿真及结果

OK啊家人们,可以将两个工程联系在一起啦

1.双击你的MCU 2.更改你的MCU参数 3.点开程序文件夹 4.找到你需要的HEX文件,点击后打开

5.RUN!!!

也是闪起来了,不过csdn居然不能插入视频。

你也快来试试吧\😀/

本文章随意转载、复制、盗用,但能不能点个赞或者关注一下/(ㄒoㄒ)/~~

仅作为学习和分享

 

Logo

欢迎加入我们的广州开发者社区,与优秀的开发者共同成长!

更多推荐