本文介紹了學(xué)習(xí)微控制器外圍功能的六部分系列中的第一部分,該系列是 GPIO(通用輸入/輸出)。它討論了重要的外圍設(shè)備,即 GPIO,以及使用 GR-SAKURA 和編程提示對(duì) GPIO 進(jìn)行編程,以防止“顫動(dòng)”或由開(kāi)關(guān)移動(dòng)引起的某種程度的快速振動(dòng)。
CPU 和內(nèi)存是大腦。外圍設(shè)備是 Brawn。
MCU(微控制器)廣泛用于控制所有類(lèi)型的電子設(shè)備。正如我們?cè)谥暗摹拔⒖刂破骱?jiǎn)介”系列中所解釋的那樣,MCU 由 CPU(中央處理單元)、存儲(chǔ)器和實(shí)現(xiàn)各種外設(shè)支持功能的附加電路組成(見(jiàn)圖 1)。CPU通過(guò)讀取程序和以下指令進(jìn)行操作:讀取數(shù)據(jù)、進(jìn)行計(jì)算和比較、根據(jù)比較結(jié)果生成其他操作等指令。內(nèi)存的作用不僅是存儲(chǔ)數(shù)據(jù),還包括程序本身。

重要外設(shè):GPIO 端口
GPIO(通用輸入/輸出)端口處理傳入和傳出的數(shù)字信號(hào)。作為輸入端口,它可用于將從開(kāi)關(guān)接收到的 ON/OFF 信號(hào)或從傳感器接收到的數(shù)字讀數(shù)與 CPU 進(jìn)行通信。作為輸出口,它可以根據(jù)CPU指令和計(jì)算結(jié)果驅(qū)動(dòng)外部操作——例如,根據(jù)計(jì)算結(jié)果驅(qū)動(dòng)LED顯示屏,或者輸出驅(qū)動(dòng)信號(hào)給電機(jī)。
GPIO 被稱(chēng)為“通用”,因?yàn)槊總€(gè)引腳都可以自由設(shè)置為用作輸入或輸出。在早期的 MCU 中,每個(gè)端口要么專(zhuān)門(mén)輸入,要么專(zhuān)門(mén)輸出。然而,GPIO 是靈活的。如果它有 8 個(gè)引腳,您可以將它們?cè)O(shè)置為最適合您的需要:4 輸入 4 輸出,或 7 輸入 1 輸出,或任何其他組合。
請(qǐng)注意,當(dāng)程序讀取、寫(xiě)入和操作數(shù)字值(0 和 1)時(shí),外部設(shè)備通常使用信號(hào)電平:低電壓和高電壓。GPIO 處理兩個(gè)方向的必要轉(zhuǎn)換。讓我們看看 RX63N 的 GPIO 使用的基本寄存器 (*1)(見(jiàn)圖 2)。

使用 GR-SAKURA 對(duì) GPIO 進(jìn)行編程
為了獲得 GPIO 端口如何工作的一些實(shí)踐知識(shí),讓我們編寫(xiě)一個(gè)程序,通過(guò)點(diǎn)亮 LED 來(lái)響應(yīng)按下開(kāi)關(guān)。我們將使用 Sakura 的“數(shù)字 I/O”庫(kù)來(lái)方便我們的編程。
圖 3 顯示了根據(jù)開(kāi)關(guān)值打開(kāi)和關(guān)閉指定 LED(LED 0)的程序代碼,其中 GPIO 端口用于獲取開(kāi)關(guān)設(shè)置和發(fā)送 LED 開(kāi)/關(guān)信號(hào)。該程序以調(diào)用 pinMode 函數(shù) (1) 的設(shè)置函數(shù)開(kāi)始,該函數(shù)將連接到開(kāi)關(guān)的引腳設(shè)置為輸入模式,將連接到 LED 的引腳設(shè)置為輸出模式。我們?cè)谶@里使用設(shè)置函數(shù),因?yàn)橐_模式設(shè)置必須只進(jìn)行一次。

編程提示:防止“喋喋不休”引起的問(wèn)題
開(kāi)關(guān)通過(guò)完成(閉合)或阻斷(打開(kāi))電路來(lái)工作:當(dāng)開(kāi)關(guān)閉合時(shí)電流流動(dòng),而當(dāng)它打開(kāi)時(shí)不流動(dòng)。然而,由于開(kāi)關(guān)是機(jī)械裝置,因此不能依靠它以瞬時(shí)和干凈的方式改變電路狀態(tài)。相反,開(kāi)關(guān)的移動(dòng)總是會(huì)產(chǎn)生某種程度的快速振動(dòng),這會(huì)導(dǎo)致短暫的中間“顫動(dòng)”階段,在該階段電路在穩(wěn)定到正確狀態(tài)之前快速循環(huán)打開(kāi)和關(guān)閉。您可能想嘗試運(yùn)行以下程序(圖 4)以更好地了解實(shí)際中的喋喋不休。

所需的操作是使 LED 在按下和松開(kāi)開(kāi)關(guān)時(shí)平穩(wěn)地亮起和熄滅。但這會(huì)一直發(fā)生嗎?如果在抖動(dòng)過(guò)程中讀取開(kāi)關(guān)信號(hào),結(jié)果是不可預(yù)測(cè)的。這就是我們?cè)趫D 3 所示的程序中引入“顫動(dòng)”延遲的原因。
編輯:hfy
-
傳感器
+關(guān)注
關(guān)注
2577文章
55474瀏覽量
793802 -
led
+關(guān)注
關(guān)注
244文章
24710瀏覽量
692409 -
數(shù)字信號(hào)
+關(guān)注
關(guān)注
2文章
1063瀏覽量
49615 -
GPIO
+關(guān)注
關(guān)注
16文章
1333瀏覽量
56431
發(fā)布評(píng)論請(qǐng)先 登錄
RL78/G12微控制器:通用應(yīng)用的低功耗之選
Freescale Kinetis KL34系列微控制器:低功耗高性能之選
探索PIC16CR7X系列微控制器:功能特性與應(yīng)用指南
Atmel SAM D21系列微控制器:低功耗高性能之選
RL78/G1P微控制器:通用與傳感控制的低功耗之選
RL78/G12微控制器:通用應(yīng)用的低功耗之選
MSP430FR58xx系列微控制器:低功耗設(shè)計(jì)的理想之選
MSP430FR59xx系列微控制器:低功耗設(shè)計(jì)的理想之選
深入解析Cypress FM系列微控制器:多功能、高性能的理想之選
STM32L072xx系列微控制器:低功耗設(shè)計(jì)的優(yōu)選之選
RA0E2微控制器:低功耗設(shè)計(jì)的理想之選
探索MCX E24系列微控制器:工業(yè)與物聯(lián)網(wǎng)應(yīng)用的理想之選
CW32系列微控制器的時(shí)鐘源和定時(shí)器選項(xiàng)介紹
PSOC 4100BL系列微控制器
Microchip AVR32EA 系列微控制器:高性能與低功耗的完美融合
微控制器外圍功能的六部分系列之GPIO(通用輸入/輸出)
評(píng)論