STM32实战教程:点灯实验详解

##01_点灯

**控制引脚输出高低电平,控制led灯亮灭**

准备条件

(1)看原理图,确认引脚和led的工作方式(开漏还是推挽)

(2)GPIO相关的函数学习,搭配DeepSeek食用效果更佳

(1)确认引脚

LED1 – PB0

LED2 – PB1

(2)确认输出的模式

前面有输出0/1,后面有GND,下图就是推挽模式

写1时,电流经过发光二极管,到gnd

写0时,都是低电平,二极管不导通,也就不发光

 开漏接法的原理图

左侧持续3V3,右侧控制引脚

写0,NMOS导通,接GND

写1,悬空,高阻态模式

(3)二极管发光原理

二极管导通电压是0.7V,电流2-10mA(器件的属性不用深究)

选择的电阻应该在 (3.3-0.7)V/0.002A=1300Ω到

                               (3.3-0.7)V/0.010A=260Ω之内,均可点亮LED

这里取5mA 则 2.6/0.005=520Ω,现实中没有520欧的电阻,我们取510Ω电阻

Vss即GND

图中无任何控制引脚,可能导致LED一上电就一直点亮

下图是推挽模式

下图是开漏模式

(4)创建项目

直接用别人创建的项目模板或者跟着下面的步骤一步一步来​​​​

直接用别人创建的项目模板或者跟着步骤一步一步来​​​​【STM32】STM32F103C8T6 创建工程模版详解(固件库)_stm32f103c8t6新建工程-CSDN博客

(5)使用VSCode搭配Keil5使用

(6)创建项目完成

这里直接使用别人创建好的模板

创建好后main函数最后一个括号后面要回车

原因:Keil MDK忽略警告, 包括文件末尾空白行, 未使用等警告 – svchao – 博客园

(7)时钟树简化图

时钟树:简而言之,就是,按需分配时钟信号,并确保时钟信号在整个电路中同步传输

(8)框架图简图

(9)项目创建好后,开始写代码

初期先在main函数中写,后续再模块化编程

(10)点亮LED的思路

(1)开启时钟:

        开启GPIO的时钟是为了使GPIO端口能够正常工作和进行输入输出操作

(2)GPIO的初始化

(3)控制引脚的电平

(11)GPIO初始化

(1)GPIO_InitTypeDef是一个结构体 ,这里声明一个结构体变量GPIO_InitStructure用于访问结构的成员

(2)右键转到定义

三个成员变量,分别用于设置引脚/速度/模式

引脚:

速度:

模式:

(12)实现LED的点亮

(13)代码

#include "stm32f10x.h"

int main(void)
{
	//1.使能GPIO时钟开启时钟
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); 

	//2.初始化GPIO  

	GPIO_InitTypeDef GPIO_InitStructure;
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//推挽
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
	GPIO_Init(GPIOB, &GPIO_InitStructure);	

	while (1)
	{
		/* code */
		GPIO_SetBits(GPIOB, GPIO_Pin_0);  // 设置PB0为高电平,点亮LED

	}
	

}

/*
	PB0 -led1
	PB1 -led2
	led:推挽输出模式
*/

(14)程序下载到单片机

先设置是哪种工具,再Download

板子集成了ISP功能,直接把生成的hex文件发送给单片机

##资料来源自bilibil仅做学习用途

作者:喵喵队_摸大鱼

物联沃分享整理
物联沃-IOTWORD物联网 » STM32实战教程:点灯实验详解

发表回复