国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

查看: 1537|回復: 0
打印 上一主題 下一主題

【遙控器開發基礎教程1】瘋殼·開源編隊無人機-GPIO(遙控器指示燈控制)

[復制鏈接]
跳轉到指定樓層
樓主
發表于 2022-7-22 16:56:53 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
COCOFLY教程
——瘋殼·無人機·系列
GPIO(遙控器指示燈控制)




圖1

一、GPIO 簡介
GPIO(General-purpose input/output),通用的輸入輸出的簡稱,單片機的引腳可以供使用者自由使用,可以配置為輸出,也可以配置為輸入。其中輸出又可以是輸出“高電平”或者“低電平”。在電子電路中“高電平”是電壓高的狀態, 用邏輯來表示即為 1,“低電平”是電壓低的狀態,用邏輯來表示即為 0。
STM32F103 系列是意法半導體基于 ARM Cortex M3 內核的 32 位單片機, 遙控器上用的主核心是 48 腳的 STM32F103C8T6,其片上的資源與飛控主板上的主核心 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 種模式,分別為:浮空輸入, 上拉輸入,下拉輸入,模擬輸入, 開漏輸出, 推挽輸出,推挽式復用功能,開漏式復用功能如下表所示。
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 實驗
本節實驗的內容是對遙控上的指示燈進行控制,這里和在飛控實驗中周期點亮航情燈一樣,也是周期點亮遙控手柄上的指示燈。
遙控手柄上接到 STM32F103C8T6 上的 GPIO 管腳的指示燈有四顆,分別是電源指示燈、連接無人機指示燈、cocobit 編程模式指示燈以及緊急降落指示燈, 如下圖所示。


圖10
查看原理圖,可知四個 LED 指示燈分別對應 PA8、PC13、PB4、PB5。


圖11
編寫代碼的思路如下表所示:
代碼思路


表2
按照代碼思路,編寫代碼(通過調用官方庫) 如下圖所示為 GPIO 的初始化部分代碼:



圖12
完成配置后只需要周期點亮以及關閉 LED 即可,如下圖所示。


圖13
其中延時函數,如下圖所示。


圖14
保存、編譯、下載,就可以看到遙控手柄的四個 LED 指示燈周期性閃爍, 如下圖所示。


圖15




文件下載請點擊: 【1】GPIO(遙控器指示燈控制).pdf (855.71 KB)


您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲美女黄色| 色综合一本| 全部免费国产潢色一级| 日日爱影视| 人人草人人舔| 天天精品视频在线观看资源| 亚洲色图激情小说| 亚洲三级黄色| 亚洲伊人久久网| 小说区 亚洲 自拍 另类| 四虎影视在线永久免费看黄| 欧美亚洲综合视频| 青青导航| 亚洲美女久久| 人人插人人看| 亚洲第一福利网站| 亚洲成人福利| 亚洲国产成人在线观看| 三级黄色片免费| 四虎成人免费| 亚洲a在线观看| 午夜国产在线观看| 四虎影视久久久免费| 青草青草久热精品视频99| 午夜精品国产| 亚洲一级生活片| 亚洲色图综合图片| 四虎4h| 亚洲精品自在线拍| 热久久免费视频| 一及黄色片| 亚洲伦乱| 亚洲三级小视频| 日本三级aaa| 一本到在线观看视频不卡| 欧美日本一区二区三区生| 日韩在线毛片| 日韩欧美亚洲国产| 色女人久久| 特别毛片| 欧美一区2区|