专栏中心

EEPW首页 > 专栏 > 疯壳AI开源无人机GPIO(遥控器指示灯控制)

疯壳AI开源无人机GPIO(遥控器指示灯控制)

发布人:fengkelisa 时间:2020-04-27 来源:工程师 发布文章
一、GPIO简介

GPIO(General-purpose input/output),通用的输入输出的简称,单片机的引脚可以供使用者自由使用,可以配置为输出,也可以配置为输入。其中输出又可以是输出高电平或者低电平。在电子电路中高电平是电压高的状态,用逻辑来表示即为1低电平是电压低的状态,用逻辑来表示即为0

STM32F103系列是意法半导体基于ARM Cortex M3内核的32位单片机,遥控器上用的主核心是48脚的STM32F103C8T6,其片上的资源与飞控主板上的主核心STM32F103CBT6基本一致,不同点在于STM32F103C8T6RAM20kBytesFlash64kBytes,而STM32F103CBT6RAM20kBytesFlash128kBytes。其引脚如下图所示。

image.png 

STM32F103C8T6GPIO的功能较多,有ABCDGPIO每组每个GPIO口都可以作为输出输出口使用之外, 还能作为复用引脚使用, 比如串口、I2CSPI 等特殊接口的引脚。 但是需要注意的是每个引脚的复用功能是有限制的, 所以硬件连接时需要注意每个引脚有哪些复用功能, 这个可以在 STM32F103的数据手册中查看。GPIO 口一共有 8 种模式,分别为:浮空输入,上拉输入,下拉输入,模拟输入, 开漏输出, 推挽输出,推挽式复用功能,开漏式复用功能如下表所示。

STM32F103GPIO工作模式

GPIO的工作模式

输入模式

输出模式

最大输出速度

1GPIO_Mode_IN_FLOATING 浮空输入
2GPIO_Mode_IPU 上拉输入
3GPIO_Mode_IPD 下拉输入
4GPIO_Mode_AIN 模拟输入

1GPIO_Mode_Out_OD 开漏输出(带上拉或者下拉)
2GPIO_Mode_AF_OD 复用开漏输出(带上拉或者下拉)
3GPIO_Mode_Out_PP 推挽输出(带上拉或者下拉)
4GPIO_Mode_AF_PP 复用推挽输出(带上拉或者下拉)

110MHZ
22MHZ
350MHZ

8种功能我们就不一一介绍了, 有兴趣可以上网搜索了解一下,这里主要讲解一下开漏输出和推挽输出的区别。
1)开漏输出
输出端相当于三极管的集电极. 需要上拉电阻才能得到高电平, 利用外部上拉电阻的驱动能力,减少IC内部的驱动,驱动能力强,适合于做电流型的驱动可达到20mA
2)推挽输出
可以输出高,低电平,连接数字器件,是由两个参数相同的三极管或 MOSFET以推挽方式连接,各负责正负半周的波形放大任务。电路工作时,两只对称的功率开关管每次只有一个导通,所以导通损耗小、效率高,既提高电路的负载能力,又提高开关速度。

总结一下:推挽输出可以输出强高低电平,连接数字器件;而开漏输出只可以输出低电平,高电平得靠外部电阻拉高。输出端相当于三极管的集电极,要得到高电平状态需要上拉电阻才行,适合于做电流型的驱动,其吸收电流的能力相对强(一般20ma以内)

二、GPIO相关寄存器

STM32F103每个GPIO端口有两个32位配置寄存器(GPIOx_CRLGPIOx_CRH)两个32位数据寄存器(GPIOx_IDRGPIOx_ODR)一个32位置位/复位寄存器(GPIOx_BSRR)一个16位复位寄存器(GPIOx_BRR)一个32位锁定寄存器(GPIOx_LCKR)

(1)GPIOx_CRL寄存器(x=A~G

image.png 

该寄存器用于配置IO0~7的输入输出模式以及速率设置。

(2)GPIOx_CRH寄存器(x=A~G

image.png 

该寄存器用于配置IO8~15的输入输出模式以及速率设置。

3GPIOx_IDR寄存器(x=A~G)

image.png 

IDRGPIO的输入数据寄存器。通过IDR寄存器可以读出IO的状态。需要注意的是IDR寄存器只能以字(16位)的形式读出。

4GPIOx_ODR寄存器(x=A~G)

image.png 

ODRGPIO的输出数据寄存器。通过ODR寄存器可以输出高低电平。

5GPIOx_BSRR寄存器(x=A~G)

image.png 

BSRRGPIO的端口位设置/清除寄存器。BSRR寄存器的高16位是清除IO位,低16位是置位IO位。需要注意的是BSRR只有在写入1的时候,相应的功能才有作用,写入0是无效的。

6GPIOx_BRR寄存器(x=A~G)

image.png 

BRRGPIO的端口位清除寄存器。BRR基础只有在写入1的时候,相应的功能才有作用,写入0无效。

7GPIOx_LCKR寄存器(x=A~G)

image.png 

LCKRGPIO的端口配置锁定寄存器。LCKR寄存器用来锁定IO口的配置,设置后,除了复位后不能再配置IO的状态。

三、GPIO实验

本节实验的内容是对遥控上的指示灯进行控制,这里和在飞控实验中周期点亮航情灯一样,也是周期点亮遥控手柄上的指示灯。

遥控手柄上接到STM32F103C8T6上的GPIO管脚的指示灯有四颗,分别是电源指示灯、连接无人机指示灯、cocobit编程模式指示灯以及紧急降落指示灯,如下图所示。

image.png 

查看原理图,可知四个LED指示灯分别对应PA8PC13PB4PB5

image.pngimage.png 

编写代码的思路如下表所示:

代码思路

1

管脚配置

1、定义结构体;

2、使能时钟;

3、填充结构体;

4、装载结构体。

2

逻辑处理

1、周期点亮LED

按照代码思路,编写代码(通过调用官方库) 如下图所示GPIO的初始化部分代码

image.png image.png

完成配置后只需要周期点亮以及关闭LED即可,如下图所示。

image.png 

其中延时函数,如下图所示。

image.png 

保存、编译、下载,就可以看到遥控手柄的四个LED指示灯周期性闪烁,如下图所示。

image.png 


专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们

关键词:

相关推荐

魅族回应破产重组手机退市传闻:正在转型

DSP算法大全C语言版本

资源下载 2007-12-29

dsp基础学习

资源下载 2007-12-29

家用配电箱常用电器元件详解

电源与新能源 2026-02-27

消息称阿斯麦新一代EUV光刻机已具备量产条件,造价约4亿美元

为什么射频模块,要先装上天线,再上电?

模拟技术 2026-02-27

数据中心的纵向扩展与横向扩展验证

瑞萨电子MCU直流无刷电动工具解决方案

视频 2012-07-03

人工智能开始简化可编程逻辑的设计流程

国网电能表解决方案

视频 2012-07-03

无线遥控LED灯参考设计

视频 2012-07-03

IDC:智能手机市场恐将因存储芯片供应短缺而下滑13%

DSP开发全过程经典

资源下载 2007-12-29

后端自动化应对日益增长的复杂度

温度压力系统PID整定简单又好的方法:PID Tuning for Improved Performance

PID控制及其在车辆上的应用

应用的RF4CE协议的射频遥控器系统

视频 2012-07-03

背面供电创造晶圆加工工具与散热屏障

消息称苹果iPad 12下周发布:升级A19芯片+ 8GB RAM

消费电子 2026-02-27

高速球型摄像头解决方案

视频 2012-07-03
更多 培训课堂
更多 焦点
更多 视频

技术专区