1.STM32F103-点亮第一颗LED
时间:2022-09-05 06:30:00
大家好,我来介绍一下原理图。第一张图是。LED灯的原理图,第二张是我的单片机原理图。
D1这是一个发光的二极管有竖线的位置是负极,没有竖线的位置是正极,淘宝上买的贴片二极管有色端为负极;R92为2K电阻,它起作用限流避免二极管的作用电流过大,烧坏二极管;LED正极直接连接到3.3V电压供电后,通过限流电阻限流后,将二极管所需的电流传递给LED,电流从LED正极流向负极,然后点亮LED。
LED1对应开发板PA11引脚,我们只需要给他输出一个低电平就能点亮这颗LED灯。接下来,我会通过编写程序来点亮这个LED。
打开工程文件,创建led.c和led.h新建两份文件HARDWARE并把文件夹led.c和led.h里面保存了两个文件。
下面我们将添加文件路径。
添加文件路径后,我们会led.c将文件添加到项目中,然后我们就可以了led.c和led.h在文件中编写我们的代码。
第一步是系统预处理led.h将以下代码写入文件中,然后点击保存,记得留下这个新行,否则编译器会有警告。
#ifndef __LED_H #define __LED_H #include "sys.h" #endif
解析:
第一,二行代码是指如果系统中没有名称led.h我们将定义它的头文件。
#include “sys.h” 它包含们用的gpio.h和rcc.h当我们定义时钟和引脚时,将使用此类文件。
接下来我们在led.c在文件中编写代码。在第一行中,我们首先引用头文件led.h,然后我们创建函数:void LED_UserCongif(void)我们将在这个函数中进行{}gpio一些相关的引脚配置。当我们取函数名称时,我们应该取一些易于理解的名称,以便于我们理解。
void LED_UserConfig(void){}
首先引用一个结构:
GPIO_InitTypeDef GPIO_InitStructure;我们可以把它理解为 char c;
以下是一些参数的配置,打开固件库手册,我们可以看到我们引用的GPIO_InitTypeDef结构体定义为件stm32f10x_gpio.h前面我们引用sys.h该文件包含在头文件中;GPIO_InitTypeDef它在结构体中传递了三个成员值,第一个为u16类型的GPIO_Pin,第二个位GPIO的速率,第三个为GPIO的模式。
以下是使用方法:
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;//选择PA11引脚 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;//选择2MHz速率 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//推拉输出模式 GPIO_Init(GPIOA,&GPIO_InitStructure);//初始化
在我们的固件库手册中有一个使用例子,我们可以按照这个例子编写即可
完成这个操作之后我们需要打开外设时钟,不开外设时钟的话它是不工作的
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//使用GPIOA它搭载在APB2总线上
在手册里是关于这个时钟的介绍,感兴趣的可以自己查看
最后通过另外一个函数,它可以对引脚进行低电平的输出
GPIO_ResetBits(GPIOA,GPIO_Pin_11);
在手册中我们可以查看这个函数的说明和使用过程
把我们定义的函数在led.h中声明,不声明的话是无法直接调用的
void LED_UserConfig(void);
最后把这个函数放到main函数中,同时在main函数中引用led.h头文件
#include "sys.h"
#include "led.h"
int main(void)
{
LED_UserConfig();
}
点击编译,没有出现错误,利用Stlink把程序下载到单片机里,就可以看到开发板上的led处于点亮状态了。
有用的话,留个赞👍再走吧!!
链接:https://pan.baidu.com/s/1ao4wYBzecYyZLE_rICUEzQ
提取码:5dfi
–来自百度网盘超级会员V3的分享