STM32f103+protues仿真(一) 点亮led

文章目录


前言


笔者在学51单片机的时候,如果手头上没有开发板,可以用protues仿真。我们在用stm32做项目开发时,也可以使用protues进行仿真,验证程序功能是否达到预期的效果。本篇文章是STM32f103+protues仿真的第一节,主要是基于标准库编写stm32程序,然后使用protues仿真,实现点亮led的功能。

一、程序编写

程序比较简单,主要用到3个程序文件,分别是led.c、led.h和main.c。

1.led.c

代码如下(示例)

#include "led.h"

//led初始化
void led_init(void)
{
 GPIO_InitTypeDef  GPIO_InitStructure;

 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);	 //使能C端口时钟	
 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;	             //贴片的LED
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 		 //推挽输出
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;		 //IO口速度为50MHz
 GPIO_Init(GPIOC, &GPIO_InitStructure);					
 GPIO_SetBits(GPIOC,GPIO_Pin_13);						 //PC13 输出高
}

这里主要是配置led灯的引脚相关配置,使用到stm32芯片的PC13引脚。

2.led.h

代码如下(示例):

#ifndef __LED_H
#define __LED_H	 
#include "sys.h"

#define LED0 PCout(13)  //预处理

void led_init(void);  //函数声明

		 				    
#endif

led.h主要是做预处理,用LED0宏替换PC13引脚,以及函数声明。

3.main.c

代码如下:

#include "sys.h"
#include "delay.h"
#include "led.h"  
int main(void)
{  
	led_init();     //led初始化	  
       while(1)   //循环体	 
	{
	    LED0=0;	   	 //点亮led
	}
}

主函数main.c主要是实现点亮led的功能。

4.编译

点击Options for Target,在Output选项下,勾选 Create HEX File以便于编译生成hex文件。

然后在keil 5里点击Build 编译生成hex文件

二、protues仿真

这里protues仿真软件用到目前较新8.13版本,元器件库更加丰富,文章后面提供下载链接。
详细的安装过程,这里不多讲,基本都是下一步再下一步的操作。
打开protues仿真软件后,如图1所示,直接点击新建工程。

下一步就是给工程起个名字,以及工程文件的存放位置。然后点击next.

接下来就是选择模板,这里选择ddefault默认模板即可。

接下来选择是否创建PCB布局,我们不是画板子的就选择不创建。

选择没有固件项目。然后点击next下一步,再点击finish完成即可。

接下来就是进入绘图界面了,protues提供了功能丰富的元器件库,我们可以在元器件库里找出我们需要的元器件。在左侧菜单选项卡里选择元件模式,然后点击"P"进入到元器件目录列表里。
可以在关键词搜索栏搜索stm32f103,然后右侧会出现相关的芯片型号,这里我们选择用到比较多的STM32F103C8,48引脚的芯片
然后把芯片放到放到画板的相应位置即可。
同样的方法,我们可以找到电阻、电容和LED等电子元器件。CAP–电容,CRYSTAL–晶振,RES–电阻。
然后把这些元器件如下图所示连接到一起。晶振电路可以画也可以不画。
需要注意的是,电源接口需要在终端模式下查找。
连接好元器件后,双击芯片,在编辑元件界面下的Program File选项栏里选择程序编译好的hex文件,然后还得设置时钟频率,可以设置72MHz。注意,如果不设置时钟频率,仿真运行时软件会变的特别卡顿,甚至无响应!
接下来点击开始运行。

三、效果演示

可以看到led灯在交替闪烁。

四、总结

以上就是本讲的内容,本文仅仅简单介绍了stm32+protues的使用,实现了简单点亮一颗led的功能。理论上来说可以再添加一个delay延时函数,实现led闪烁功能的,但经过用实物和仿真进行对比测试,stm32和protues仿真的时间和实际是不一致的。
Protues8.13安装包:链接:https://pan.baidu.com/s/1XZ34XmNRREWW0e0euZB6ww?pwd=cf2l
提取码:cf2l

相关代码和工程放在gitee上:gitee链接