当前位置:网站首页>[Basic Tutorial of Remote Control Development 1] Crazy Shell Open Source Formation Drone-GPIO (Remote Control Indicator Light Control)
[Basic Tutorial of Remote Control Development 1] Crazy Shell Open Source Formation Drone-GPIO (Remote Control Indicator Light Control)
2022-08-02 03:28:00 【efans_Mike】
COCOFLY教程
——疯壳·无人机·系列
GPIO(Remote control indicator light control)
图1
一、GPIO 简介
GPIO(General-purpose input/output),通用的输入输出的简称,单片机的引脚可以供使用者自由使用,可以配置为输出,也可以配置为输入.其中输出又可以是输出“高电平”或者“低电平”.在电子电路中“高电平”是电压高的状态, 用逻辑来表示即为 1,“低电平”是电压低的状态,用逻辑来表示即为 0.
STM32F103 系列是意法半导体基于 ARM Cortex M3 内核的 32 位单片机, The main core used on the remote is 48 脚的 STM32F103C8T6,Its on-chip resources are the same as the main core on the flight control motherboard STM32F103CBT6 基本一致,不同点在于TM32F103C8T6 的 RAM 为20kBytes、Flash 为 64kBytes,而 STM32F103CBT6 的 RAM 为 20kBytes、Flash 为 128kBytes.其引脚如下图所示.
图2
STM32F103C8T6 的 GPIO 的功能较多,有 A、B、C、D 等四组 GPIO,每组每个 GPIO 口都可以作为输出输出口使用之外, 还能作为复用引脚使用, 比如串口、I2C、SPI 等特殊接口的引脚. 但是需要注意的是每个引脚的复用功能是有限制的, 所以硬件连接时需要注意每个引脚有哪些复用功能, 这个可以在STM32F103 的数据手册中查看.GPIO 口一共有 8 种模式,分别为:浮空输入, 上拉输入,下拉输入,模拟输入, 开漏输出, 推挽输出,推挽式复用功能,The open-drain multiplexing function is shown in the table below.
STM32F103GPIO 工作模式
表1
这 8 种功能我们就不一一介绍了, 有兴趣可以上网搜索了解一下,这里主要讲解一下开漏输出和推挽输出的区别.
(1)开漏输出:
输出端相当于三极管的集电极. 需要上拉电阻才能得到高电平, 利用外部上拉电阻的驱动能力,减少 IC 内部的驱动,驱动能力强,适合于做电流型的驱动, 可达到 20mA.
(2)推挽输出:
可以输出高,低电平,连接数字器件,是由两个参数相同的三极管或MOSFET 以推挽方式连接,各负责正负半周的波形放大任务.电路工作时,两只对称的功率开关管每次只有一个导通,所以导通损耗小、效率高,既提高电路的负载能力, 又提高开关速度.
总结一下:推挽输出可以输出强高低电平,连接数字器件;而开漏输出只可以输出低电平,高电平得靠外部电阻拉高.输出端相当于三极管的集电极,要得到高电平状态需要上拉电阻才行,适合于做电流型的驱动,其吸收电流的能力相对强(一般 20ma 以内).
二、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)
图3
该寄存器用于配置 IO0~7 的输入输出模式以及速率设置.
(2)GPIOx_CRH 寄存器(x=A~G)
图4
该寄存器用于配置 IO8~15 的输入输出模式以及速率设置.
(3)GPIOx_IDR 寄存器(x=A~G)
图5
IDR 是 GPIO 的输入数据寄存器.通过 IDR 寄存器可以读出 IO 的状态.需要注意的是 IDR 寄存器只能以字(16 位)的形式读出.
(4)GPIOx_ODR 寄存器(x=A~G)
图6
ODR 是 GPIO 的输出数据寄存器.通过 ODR 寄存器可以输出高低电平.
(5)GPIOx_BSRR 寄存器(x=A~G)
图7
BSRR 是GPIO 的端口位设置/清除寄存器.BSRR 寄存器的高 16 位是清除IO 位,低 16 位是置位 IO 位.需要注意的是 BSRR 只有在写入 1 的时候,相应的功能才有作用,写入 0 是无效的.
(6)GPIOx_BRR 寄存器(x=A~G)
图8
BRR 是 GPIO 的端口位清除寄存器.BRR 基础只有在写入 1 的时候,相应的功能才有作用,写入 0 无效.
(7)GPIOx_LCKR 寄存器(x=A~G)
图9
LCKR 是GPIO 的端口配置锁定寄存器.LCKR 寄存器用来锁定IO 口的配置, 设置后,除了复位后不能再配置 IO 的状态.
三、GPIO 实验
The content of the experiment in this section is to control the indicator lights on the remote control,This is the same as turning on the flight status lights periodically in the flight control experiment,It also periodically lights up the indicator light on the remote control handle.
connected to the remote control handle STM32F103C8T6 上的 GPIO There are four indicator lights on the pins,are the power indicator lights、连接无人机指示灯、cocobit Programming mode indicator and emergency landing indicator, 如下图所示.
图10
查看原理图,know four LED The indicator lights correspond respectively PA8、PC13、PB4、PB5.
图11
编写代码的思路如下表所示:
代码思路
表2
按照代码思路,编写代码(通过调用官方库) 如下图所示为 GPIO 的初始化部分代码:
图12
完成配置后只需要周期点亮以及关闭 LED 即可,如下图所示.
图13
where the delay function,如下图所示.
图14
保存、编译、下载,You can see the four remote control handles LED The indicator light flashes periodically, 如下图所示.
图15
更多完整学习资料和对应开源套件,请登陆官网:“疯壳”
如需定制开发,请通过官网“疯壳”网页底部的“联系我们”进行联系
边栏推荐
猜你喜欢
Week 7 Review
(Reposted) The relationship between hashcode and equals
JSP WebSehll backdoor script
MySQL中字符串比较大小(日期字符串比较问题)
(forwarded) HashCode summary (2)
[Remote Control Development Basic Tutorial 3] Crazy Shell Open Source Formation UAV-ADC (Joystick Control)
通过PS 2021 将网页图标抠下来
磷脂-聚乙二醇-酰肼,DSPE-PEG-Hydrazide,DSPE-PEG-HZ,MW:5000
【程序人生】做了多年的运维,靠什么转行拿下12K+年终奖的薪资?
DAY-1 | 求两个正整数的最大公约数与最小公倍数之和——辗转相除法
随机推荐
Redis笔记进阶篇:万字长文-整理Redis,各种知识点,建议收藏
MySQL分库分表
MySQL8.0与MySQL5.7差异分析
手把手带你 Unity 入门之从零创建一个时钟(GameObjects 与 Scripts)
Brute force visitors
day11--shell脚本
基于libmodbus库实现modbus TCP/RTU通信
mysql中exists的用法详解
JVM学习----垃圾回收--G1
About cross-domain issues
rem适配
PCL—点云数据分割
MySQL8.0安装教程,在Linux环境安装MySQL8.0教程,最新教程 超详细
Flexbox flex property
UserWarning: torch.meshgrid: in an upcoming release, it will be required to pass the index ing argu
DSPE-PEG-DBCO 磷脂-聚乙二醇-二苯并环辛炔 一种线性杂双官能聚乙二醇化试剂
MySQL中的各种锁(行锁、间隙锁、临键锁等等LBCC)
Redis简单学习笔记
ssm各类配置模板
Double Strings (don't always forget substr)