1,首先需要打开电脑的Proteus8.6软件。
2,点击菜单栏file,找到New Project,单击。
3,修改工程名字和工程路径。
4,单击next直到finished并完成建立工程。
5,在键盘上按字母P或者找到工作区的P按钮,跳出搜索元器件界面,输入STM32F103R6、RES和LED-RED找到对应的器件,双击。
6,在工作区,完成STM32电路连接,并双击StM32F103R6,设置晶振为8M。
7,并设置Proteus电源,避免运行出现错误。
扩展资料:
Proteus功能特点
Proteus软件具有其它EDA工具软件(例:multisim)的功能。这些功能是:
1.原理布图
2.PCB自动或人工布线
3.SPICE电路仿真
革命性的特点
1.互动的电路仿真
用户甚至可以实时采用诸如RAM,ROM,键盘,马达,LED,LCD,AD/DA,部分SPI器件,部分IIC器件。
2.仿真处理器及其外围电路
可以仿真51系列、AVR、PIC、ARM、等常用主流单片机。还可以直接在基于原理图的虚拟原型上编程,再配合显示及输出,能看到运行后输入输出的效果。配合系统配置的虚拟逻辑分析仪、示波器等,Proteus建立了完备的电子设计开发环境。
参考资料:百度百科-Proteus
1、首先打开proteus,在元器件选择框输入LED灯。
2、然后放置一个电阻,一端连接至按键端,一段连接至小灯连接口。
3、最后同时连接后按键断开时,LED点亮,当按键闭合时,LED熄灭。
①配置所需的GPIO管脚,也就是PA2和PA3。
②从程序来看,高电平点亮,低电平熄灭。
图画错了。
1.二极管支路中的电阻,阻值太大了,应改成 470欧姆~1K左右。
2.二极管,你画的方向,是向右的,那么,左边就不应该接地了,应该接上+5V。
proteusstm32利用独立按键数码管显示数字
实验环境
本次实验是通过Proteus+MDK一起模拟完成的。Proteus模拟实际电路,MDK编译代码。Proteus版本是8.13,MDK版本是5.21。需要注意的是,Proteus需要安装8.8以上版本,器件库里面要支持STM32F103C6。
• 实验目的
通过一个按键控制数码管0~9循环显示,并且把对应数字发给串口。通过接收串口数据,控制数码管0~9循环显示。实验目的,学会按键检测方法,这边用的是开源库multi_button,学会串口怎么用。
Proteus硬件电路
虚拟串口示意
• 主控:
STM32F103C6(本来想用C8的,但是Proteus只有C6,本质上只有Flash和SRAM大小的区别,所以没有必要纠结)
• 时钟:
没有用外部晶振,因为Proteus只支持一种时钟树,所以这里采用内部晶振,做实验够了,内部晶振配置为40MHz。
• 复位电路:
复位电路如图,包含了上电复位电路一个10K电阻(图上用的是100K实际应该都是可以的)+一个100nF电容。按键复位电路,包含了一个自复位按键,按下后,RST管脚就会短路到GND,MCU就会复位。
•电路上还要接一个Proteus虚拟串口,在自己电脑上也要用虚拟串口软件虚拟一对串口出来,上图所示,PC端我们用的是COM5,那么Proteus端我们用COM4。
• IO说明:
→ 我们利用PA0~PA6来控制7段数码管,高电平点亮;
→PB0用作LED的控制,指示程序状态;
→PB4作为按键输入状态读取;
→PA9,PA10是串口输入输出;
2.代码概述
目录结构
• 代码目录概述:
→APP文件夹:主要包含应用函数的.C文件。
→BSP文件夹:主要包含底层硬件驱动的.C文件。
→MDK-ARM文件夹:主要包含STM32的启动的.S文件。
→StdPeriph_Driver文件夹:主要包含ST官方提供的标准外设驱动.C文件(不是HAL库哦)。
→CMSIS文件夹:系统内核配置文件,标准库自带的。
→按键驱动使用的是multi_button。
→串口接收0x09这个代码1次就会反转数码管1次,0~9循环。
→按键按1次就会反转数码管1次,0~9循环。
→按键按下LED灯亮,松开灭。
【不用开发板学习STM32】串口收发+按键控制数码管显示(文末获取代码及工程文件)
,模块如下:
1
把工程项目模板重新复制一份,改名为“点亮一个LED灯”
在USR文件夹下创建led文件夹
led文件夹下面新建以下两个文件
bsp_led.c
bsp_led.h
2
然后我们用keil打开这个工程项目
点击如下图圈上的图标
3
新建一个led文件夹
然后我们把刚新建的文件导入到led文件夹
4
在bsp_led.h文件里
#ifndef __BSP_LED_H__
#define __BSP_LED_H__
#include "stm32f10x.h"
#define LED1_GPIO_CLK RCC_APB2Periph_GPIOB
#define LED1_GPIO_PORT GPIOB
#define LED1_GPIO_PIN GPIO_Pin_5
void LED_GPIO_Config(void);
#endif
5
在bsp_led.c文件里
#include "./led/bsp_led.h"
void LED_GPIO_Config(void)
{
GPIO_InitTypeDef GPIO_InitStruct;
//打开外设时钟
RCC_APB2PeriphClockCmd(LED1_GPIO_CLK,ENABLE);
//配置初始化结构体
GPIO_InitStruct.GPIO_Pin = LED1_GPIO_PIN;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_10MHz;
//调用外设初始化函数,把配置好的结构体成员写到寄存器里面
GPIO_Init(LED1_GPIO_PORT,GPIO_InitStruct);
}
6
在main.c文件里
#include "./led/bsp_led.h"
void delay(uint32_t count);
int main(void)
{
LED_GPIO_Config();
while(1)
{
GPIO_SetBits(LED1_GPIO_PORT,LED1_GPIO_PIN);
delay(0xfffff);
GPIO_ResetBits(LED1_GPIO_PORT,LED1_GPIO_PIN);
delay(0xfffff);
}
}
void delay(uint32_t count)
{
for (;count!=0;count--);
}
本文标签:stm32用proteus点亮小灯