"); //-->
一、LED
1.1 LED简介
LED(Light Emitting Diode)即为发光二极管的缩写。LED是一种在生活中非常常见的照明发光器件。LED的在我们生活中形态种类非常的多,如下图所示。
|
|
尽管LED在我们生活中形态非常地多,但这所有的LED在电路里均使用如下图所示的符号来表示。

1.2 LED发光原理
LED最重要的一个发光结构就是灯内如绿豆大小般的灯珠。虽然它的体积很小,但它却内有乾坤,如下图所示为LED内部构造。

这个结构极其复杂,一共分为好几层:最上层叫做P型半导体层、中间层为发光层、最下层叫做N型半导体层。
从物理学角度来理解:当电流通过晶片时,N型半导体内的电子与P型半导体内的空穴在发光层剧烈地碰撞复合产生光子,以光子的形式发出能量(即大家看见的光)。
二、GPIO
2.1 GPIO简介
GPIO(General-purpose input/output),通用的输入输出的简称,单片机的引脚可以供使用者自由使用,可以配置为输出,也可以配置为输入。其中输出又可以是输出“高电平”或者“低电平”。在电子电路中“高电平”是电压高的状态,用逻辑来表示即为1,“低电平”是电压低的状态,用逻辑来表示即为0。
STM32F103系列是意法半导体基于ARM Cortex M3内核的32位单片机,飞控上用的主核心是48脚的STM32F103CBT6,其引脚如下图所示。

STM32F103CBT6的GPIO的功能较多,有A、B、C、D等四组GPIO,每组每个GPIO口都可以作为输出输出口使用之外, 还能作为复用引脚使用, 比如串口、I2C、SPI 等特殊接口的引脚。 但是需要注意的是每个引脚的复用功能是有限制的, 所以硬件连接时需要注意每个引脚有哪些复用功能, 这个可以在 STM32F103的数据手册中查看。GPIO 口一共有 8 种模式,分别为:浮空输入,上拉输入,下拉输入,模拟输入,开漏输出,推挽输出,推挽式复用功能,开漏式复用功能,如下表所示。
STM32F103GPIO工作模式
GPIO的工作模式 | ||
输入模式 | 输出模式 | 最大输出速度 |
(1)GPIO_Mode_IN_FLOATING 浮空输入 | (1)GPIO_Mode_Out_OD 开漏输出(带上拉或者下拉) | (1)10MHZ |
这8种功能我们就不一一介绍了, 有兴趣可以上网搜索了解一下,这里主要讲解一下开漏输出和推挽输出的区别。
(1)开漏输出:
输出端相当于三极管的集电极. 需要上拉电阻才能得到高电平, 利用外部上拉电阻的驱动能力,减少IC内部的驱动,驱动能力强,适合于做电流型的驱动,可达到20mA。
(2)推挽输出:
可以输出高,低电平,连接数字器件,是由两个参数相同的三极管或 MOSFET以推挽方式连接,各负责正负半周的波形放大任务。电路工作时,两只对称的功率开关管每次只有一个导通,所以导通损耗小、效率高,既提高电路的负载能力,又提高开关速度。
总结一下:推挽输出可以输出强高低电平,连接数字器件;而开漏输出只可以输出低电平,高电平得靠外部电阻拉高。输出端相当于三极管的集电极,要得到高电平状态需要上拉电阻才行,适合于做电流型的驱动,其吸收电流的能力相对强(一般20ma以内)。
2.2 GPIO相关寄存器
STM32F103的每个GPIO端口有:两个32位配置寄存器(GPIOx_CRL和GPIOx_CRH)、两个32位数据寄存器(GPIOx_IDR和GPIOx_ODR)、一个32位置位/复位寄存器(GPIOx_BSRR)、一个16位复位寄存器(GPIOx_BRR)、一个32位锁定寄存器(GPIOx_LCKR)。
(1)GPIOx_CRL寄存器(x=A~G)

该寄存器用于配置IO0~7的输入输出模式以及速率设置。
(2)GPIOx_CRH寄存器(x=A~G)

该寄存器用于配置IO8~15的输入输出模式以及速率设置。
(3)GPIOx_IDR寄存器(x=A~G)

IDR是GPIO的输入数据寄存器。通过IDR寄存器可以读出IO的状态。需要注意的是IDR寄存器只能以字(16位)的形式读出。
(4)GPIOx_ODR寄存器(x=A~G)

ODR是GPIO的输出数据寄存器。通过ODR寄存器可以输出高低电平。
(5)GPIOx_BSRR寄存器(x=A~G)

BSRR是GPIO的端口位设置/清除寄存器。BSRR寄存器的高16位是清除IO位,低16位是置位IO位。需要注意的是BSRR只有在写入1的时候,相应的功能才有作用,写入0是无效的。
(6)GPIOx_BRR寄存器(x=A~G)

BRR是GPIO的端口位清除寄存器。BRR基础只有在写入1的时候,相应的功能才有作用,写入0无效。
(7)GPIOx_LCKR寄存器(x=A~G)

LCKR是GPIO的端口配置锁定寄存器。LCKR寄存器用来锁定IO口的配置,设置后,除了复位后不能再配置IO的状态。
2.3 GPIO实验
本节实验的内容是周期性点亮无人机的航情灯以及信号灯,其中航情灯在四个螺旋桨底下,而信号灯则在开关两侧。
查看原理图可以得知无人机的航情灯同一接在NPN三极管Q1上,而三极管的基极又接在了单片机的PA8上;两个信号灯分别接在了PC13和PC14上。



编写代码的思路如下表所示
1 | 管脚配置 | 1、定义结构体; 2、使能时钟; 3、填充结构体; 4、装载结构体。 |
2 | 逻辑处理 | 周期点亮LED |
按照代码思路,编写代码(通过调用官方库) 如下图所示:


完成配置后只需要周期点亮以及关闭LED即可。

其中延时如下图所示。

保存、编译、下载,如下图所示,1为保存,2为编译,3为下载。

下载代码到飞控上,就可以看到飞控的LED指示灯以及四个螺旋桨下面的航情灯周期闪烁的现象了,如下图所示。

专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们
相关推荐
[求助]cygwin下arm-elf 编译uclinux内核报错...各位帮帮忙
定时器跑飞
更高耐压、更小体积:面向汽车、航空与国防领域的MLCC
由74LS00、74LS221构成的简易脉冲信号发生器
由CC4013和CC4069等构成的单脉冲发生器
FPGA设计的良好设计方法及误区 上
三星拟借助先进封装工艺搭配HBM芯片,将手机和平板打造为端侧 AI 超强算力终端
PGM89 51Flash单片机编程器
在 pxa255 开发板里的l嵌入式系统应用
Symbian C++开发入门之概述 中
跟我来作EZ编程器
ISP(已验证).
imec旗下IC-Link正式加入台积电开放创新平台
由CD4093组成的脉冲和脉冲串发生器
求教:cygwin下arm-elf 编译uclinux内核报错...
Symbian C++开发入门之概述 下
FPGA设计的良好设计方法及误区 下
美国汽车业对中国零部件依赖加深
跟我来作ep51编程器
zsMCU实验板
全球首款原生彩色激光雷达,让机器拥有类人视觉
开发板资源:intel PXa255
FPGA设计的良好设计方法及误区 中
中国自研 “澜闪” 超算 纯CPU架构算力达1.54艾级
应用材料公司发布2026财年第二季度财务报告
苹果折叠屏 iPhone试产效果不及预期,故障问题与无折痕屏幕技术基本无关
台积电2纳米及A16制程产能年复合增长率将达70%
实用脉冲信号发生器
由CD4011构成的逻辑脉冲发生器
英飞凌推出面向能源系统2300V碳化硅模块