本文介紹了學習微控制器外圍功能的六部分系列中的第一部分,該系列是 GPIO(通用輸入/輸出)。它討論了重要的外圍設備,即 GPIO,以及使用 GR-SAKURA 和編程提示對 GPIO 進行編程,以防止“顫動”或由開關移動引起的某種程度的快速振動。
CPU 和內存是大腦。外圍設備是 Brawn。
MCU(微控制器)廣泛用于控制所有類型的電子設備。正如我們在之前的“微控制器簡介”系列中所解釋的那樣,MCU 由 CPU(中央處理單元)、存儲器和實現各種外設支持功能的附加電路組成(見圖 1)。CPU通過讀取程序和以下指令進行操作:讀取數據、進行計算和比較、根據比較結果生成其他操作等指令。內存的作用不僅是存儲數據,還包括程序本身。
重要外設:GPIO 端口
GPIO(通用輸入/輸出)端口處理傳入和傳出的數字信號。作為輸入端口,它可用于將從開關接收到的 ON/OFF 信號或從傳感器接收到的數字讀數與 CPU 進行通信。作為輸出口,它可以根據CPU指令和計算結果驅動外部操作——例如,根據計算結果驅動LED顯示屏,或者輸出驅動信號給電機。
GPIO 被稱為“通用”,因為每個引腳都可以自由設置為用作輸入或輸出。在早期的 MCU 中,每個端口要么專門輸入,要么專門輸出。然而,GPIO 是靈活的。如果它有 8 個引腳,您可以將它們設置為最適合您的需要:4 輸入 4 輸出,或 7 輸入 1 輸出,或任何其他組合。
請注意,當程序讀取、寫入和操作數字值(0 和 1)時,外部設備通常使用信號電平:低電壓和高電壓。GPIO 處理兩個方向的必要轉換。讓我們看看 RX63N 的 GPIO 使用的基本寄存器 (*1)(見圖 2)。
使用 GR-SAKURA 對 GPIO 進行編程
為了獲得 GPIO 端口如何工作的一些實踐知識,讓我們編寫一個程序,通過點亮 LED 來響應按下開關。我們將使用 Sakura 的“數字 I/O”庫來方便我們的編程。
圖 3 顯示了根據開關值打開和關閉指定 LED(LED 0)的程序代碼,其中 GPIO 端口用于獲取開關設置和發送 LED 開/關信號。該程序以調用 pinMode 函數 (1) 的設置函數開始,該函數將連接到開關的引腳設置為輸入模式,將連接到 LED 的引腳設置為輸出模式。我們在這里使用設置函數,因為引腳模式設置必須只進行一次。
編程提示:防止“喋喋不休”引起的問題
開關通過完成(閉合)或阻斷(打開)電路來工作:當開關閉合時電流流動,而當它打開時不流動。然而,由于開關是機械裝置,因此不能依靠它以瞬時和干凈的方式改變電路狀態。相反,開關的移動總是會產生某種程度的快速振動,這會導致短暫的中間“顫動”階段,在該階段電路在穩定到正確狀態之前快速循環打開和關閉。您可能想嘗試運行以下程序(圖 4)以更好地了解實際中的喋喋不休。
所需的操作是使 LED 在按下和松開開關時平穩地亮起和熄滅。但這會一直發生嗎?如果在抖動過程中讀取開關信號,結果是不可預測的。這就是我們在圖 3 所示的程序中引入“顫動”延遲的原因。
編輯:hfy
-
傳感器
+關注
關注
2550文章
51035瀏覽量
753077 -
led
+關注
關注
242文章
23252瀏覽量
660574 -
數字信號
+關注
關注
2文章
969瀏覽量
47539 -
GPIO
+關注
關注
16文章
1204瀏覽量
52052
發布評論請先 登錄
相關推薦
評論