本专栏所有源资料都免费获取,无任何隐形消费。
注意事项:STM32仿真会存在各种各样BUG,且尽量按照同样仿真版本使用。本专栏所有的仿真都采用PROTEUS8.15。
本文已经配置好STM32F103C8T6系列,在PROTUES仿真里,32单片机一般只用一种型号,如需其他型号,可改名。
本次功能实现基于STM32的LED灯闪烁,此为Proteus仿真演示:
基于STM32的LED灯闪烁
LED灯与单片机相连:
1.原理
STM32F103C8T6是一款32位ARM Cortex-M3内核的微控制器,它具有丰富的周边外设和功能,可用于各种应用场景。
驱动LED灯的原理是通过控制GPIO(通用输入/输出)引脚输出高电平或低电平来控制LED灯的亮灭。在STM32F103C8T6中,每个GPIO引脚都可以独立配置为输入或输出模式,并且可以通过寄存器操作来控制它们的状态。
具体步骤如下:
1. 配置GPIO引脚:根据所连接的LED灯的引脚,选择一个GPIO引脚作为控制LED的引脚,然后将其配置为输出模式。例如,如果选择将LED连接到PC13引脚,可以通过配置CRL寄存器的相应位来设置PC13引脚为推挽输出模式。
2. 设置引脚状态:通过修改ODR(输出数据寄存器)寄存器的相应位来控制GPIO引脚的状态。设置为高电平则LED亮,设置为低电平则LED灭。
3. 循环控制:为了保持LED的状态,可以将上述两个步骤放置在一个无限循环中,这样LED就会一直保持亮或灭的状态。
以下是使用STM32F103C8T6和库函数的代码示例:
如图所示,首先点击图左的led.c文件,然后可以看到图右的LED引脚配置。由图可知,可以配置单片机的PA1、PA2等引脚为LED引脚,如需更改引脚,可自行修改。
2.仿真引脚连接
在本次仿真中,选择PA8引脚连接LED灯,并且连接GND,这样给与高电平,则LED灯点亮;给与低电平,LED灯熄灭。
3.主函数代码配置:
#include "stm32f10x.h"
#include "usart.h"
#include "delay.h"
#include "sys.h"
#include "led.h"
#include "key.h"
int main(void)
{
LED_Init(); //初始化与LED连接的硬件接口
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);// 设置中断优先级分组2
RCC_SYSCLKConfig(RCC_SYSCLKSource_HSI);
delay_init();
while(1)
{
LED0 = 1;
delay_ms(1000);
LED0 = 0;
delay_ms(1000);
}
}