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

電子工程網

標題: 【飛控開發基礎1】開源編隊無人機-GPIO(LED 航情燈、信號燈控制) [打印本頁]

作者: Linda-x    時間: 2022-7-13 11:16
標題: 【飛控開發基礎1】開源編隊無人機-GPIO(LED 航情燈、信號燈控制)
COCOFLY教程
——瘋殼·無人機系列
GPIO(LED 航情燈、信號燈控制)




   
    圖1

    一、LED
    1.1LED 簡介
    LED(Light Emitting Diode)即為發光二極管的縮寫。LED 是一種在生活中非常常見的照明發光器件。LED 的在我們生活中形態種類非常的多,如下圖所示。

   
    圖2                                                                                               圖3
    盡管 LED 在我們生活中形態非常地多,但這所有的 LED 在電路里均使用如下圖所示的符號來表示。

   
    圖4

    1.2LED 發光原理
    LED 最重要的一個發光結構就是燈內如綠豆大小般的燈珠。雖然它的體積很小,但它卻內有乾坤,如下圖所示為 LED 內部構造。

   
    圖5

    這個結構極其復雜,一共分為好幾層:最上層叫做 P 型半導體層、中間層為發光層、最下層叫做 N 型半導體層。
    從物理學角度來理解:當電流通過晶片時,N 型半導體內的電子與 P 型半導體內的空穴在發光層劇烈地碰撞復合產生光子,以光子的形式發出能量(即大家看見的光)。
    二、GPIO
    2.1GPIO 簡介
    GPIO(General-purpose input/output),通用的輸入輸出的簡稱,單片機的引腳可以供使用者自由使用,可以配置為輸出,也可以配置為輸入。其中輸出又可以是輸出“高電平”或者“低電平”。在電子電路中“高電平”是電壓高的狀態, 用邏輯來表示即為 1,“低電平”是電壓低的狀態,用邏輯來表示即為 0。
    STM32F103 系列是意法半導體基于 ARM Cortex M3 內核的 32 位單片機, 飛控上用的主核心是 48 腳的 STM32F103CBT6,其引腳如下圖所示。


   
    圖6

    STM32F103CBT6 的 GPIO 的功能較多,有 A、B、C、D 等四組 GPIO,每組每個 GPIO 口都可以作為輸出輸出口使用之外, 還能作為復用引腳使用, 比如串口、I2C、SPI 等特殊接口的引腳。 但是需要注意的是每個引腳的復用功能是有限制的, 所以硬件連接時需要注意每個引腳有哪些復用功能, 這個可以在STM32F103 的數據手冊中查看。GPIO 口一共有 8 種模式,分別為:浮空輸入, 上拉輸入,下拉輸入,模擬輸入,開漏輸出,推挽輸出,推挽式復用功能,開漏式復用功能,如下表所示。
    STM32F103GPIO 工作模式

   
    圖7
    這 8 種功能我們就不一一介紹了, 有興趣可以上網搜索了解一下,這里主要講解一下開漏輸出和推挽輸出的區別。
    (1)開漏輸出:
    輸出端相當于三極管的集電極. 需要上拉電阻才能得到高電平, 利用外部上拉電阻的驅動能力,減少 IC 內部的驅動,驅動能力強,適合于做電流型的驅動, 可達到 20mA。
    (2)推挽輸出:
    可以輸出高,低電平,連接數字器件,是由兩個參數相同的三極管或 MOSFET 以推挽方式連接,各負責正負半周的波形放大任務。電路工作時,兩只對稱的功率開關管每次只有一個導通,所以導通損耗小、效率高,既提高電路的負載能力, 又提高開關速度。
    總結一下:推挽輸出可以輸出強高低電平,連接數字器件;而開漏輸出只可以輸出低電平,高電平得靠外部電阻拉高。輸出端相當于三極管的集電極,要得到高電平狀態需要上拉電阻才行,適合于做電流型的驅動,其吸收電流的能力相對強(一般 20ma 以內)。
    2.2GPIO 相關寄存器
    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)

   
    圖8
    該寄存器用于配置 IO0~7 的輸入輸出模式以及速率設置。
    (2)GPIOx_CRH 寄存器(x=A~G)


   
    圖9
    該寄存器用于配置 IO8~15 的輸入輸出模式以及速率設置。
    (3)GPIOx_IDR 寄存器(x=A~G)

   
    圖10
    IDR 是 GPIO 的輸入數據寄存器。通過 IDR 寄存器可以讀出 IO 的狀態。需要注意的是 IDR 寄存器只能以字(16 位)的形式讀出。
    (4)GPIOx_ODR 寄存器(x=A~G)

   
    圖11

    ODR 是 GPIO 的輸出數據寄存器。通過 ODR 寄存器可以輸出高低電平。
    (5)GPIOx_BSRR 寄存器(x=A~G)

   
    圖12

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

   
    圖13
    BRR 是 GPIO 的端口位清除寄存器。BRR 基礎只有在寫入 1 的時候,相應的功能才有作用,寫入 0 無效。
    (7)GPIOx_LCKR 寄存器(x=A~G)

   
    圖14
    LCKR 是GPIO 的端口配置鎖定寄存器。LCKR 寄存器用來鎖定IO 口的配置, 設置后,除了復位后不能再配置 IO 的狀態。

    2.3GPIO 實驗
    本節實驗的內容是周期性點亮無人機的航情燈以及信號燈,其中航情燈在四個螺旋槳底下,而信號燈則在開關兩側。
    查看原理圖可以得知無人機的航情燈同一接在 NPN 三極管 Q1 上,而三極管的基極又接在了單片機的 PA8 上;兩個信號燈分別接在了 PC13 和 PC14 上。


   
    圖15                                                                                   圖16


   
    圖17

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

   
    圖18
    按照代碼思路,編寫代碼(通過調用官方庫) 如下圖所示:

   
    圖19


   
    圖20
    完成配置后只需要周期點亮以及關閉 LED 即可。

   
    圖21
    其中延時如下圖所示。

   
    圖22
    保存、編譯、下載,如下圖所示,1 為保存,2 為編譯,3 為下載。


   
    圖23
    下載代碼到飛控上,就可以看到飛控的 LED 指示燈以及四個螺旋槳下面的航情燈周期閃爍的現象了,如下圖所示。


   
    圖24




更多完整學習資料和對應開源套件,請登陸官網“瘋殼”

如需定制開發,請通過官網“瘋殼”網頁底部的“聯系我們”進行聯系

文件下載請點擊: 【1】GPIO(LED航情燈、信號燈控制).pdf (1.02 MB)






歡迎光臨 電子工程網 (http://www.qingdxww.cn/) Powered by Discuz! X3.4
主站蜘蛛池模板: 久久精品a一国产成人免费网站 | 日韩毛片免费在线观看 | 亚洲狼人综合干 | 一区二区免费在线观看 | 欧美又大又粗又长又美 | 艹久久| 久久久噜噜噜久噜久久 | 日日摸夜夜摸狠狠摸日日碰夜夜做 | 免费二级c片在线观看a | 婷婷伊人久久 | 国产欧美在线观看一区二区 | 日日日日操 | 老色批午夜免费视频网站 | 国产一区二区三区亚洲综合 | 一区二区三区毛片免费 | 中文字幕热久久久久久久 | 不卡的在线视频 | 成人性视频在线三级 | 日韩毛片在线免费观看 | h肉动漫无遮挡在线观看免费 | 午夜性福利视频 | 久草资源网站 | 欧美一区亚洲 | 精品欧美成人高清视频在线观看 | 天天操精品 | 成人免费一区二区三区 | 69热在线观看| 日韩精品999| 九色视频在线观看 | 欧美日韩在线国产 | 狠狠色狠色综合曰曰 | 啦啦啦高清在线影院 | 国产一区欧美二区 | 爆操网 | 欧美国产日韩在线观看 | 青青草99热这里都是精品 | 国产精品1024永久免费视频 | 狠狠操网| 95老司机免费福利 | 五月天婷婷精品视频 | 99美国热|