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完成即可。
同样的方法,我们可以找到电阻、电容和LED等电子元器件。CAP–电容,CRYSTAL–晶振,RES–电阻。
然后把这些元器件如下图所示连接到一起。晶振电路可以画也可以不画。
三、效果演示
可以看到led灯在交替闪烁。
四、总结
以上就是本讲的内容,本文仅仅简单介绍了stm32+protues的使用,实现了简单点亮一颗led的功能。理论上来说可以再添加一个delay延时函数,实现led闪烁功能的,但经过用实物和仿真进行对比测试,stm32和protues仿真的时间和实际是不一致的。
Protues8.13安装包:链接:https://pan.baidu.com/s/1XZ34XmNRREWW0e0euZB6ww?pwd=cf2l
提取码:cf2l
相关代码和工程放在gitee上:gitee链接
评论(0)
您还未登录,请登录后发表或查看评论