在本教程中,我們將學(xué)習(xí)如何使用另一個(gè)IO 引腳作為輸入并控制額外的 LED。在不浪費(fèi)太多時(shí)間的情況下,讓我們?cè)u(píng)估一下我們需要什么樣的硬件設(shè)置。
硬件設(shè)置和要求
由于需要將開(kāi)關(guān)用作輸入,我們首先需要的是一個(gè)按鈕。我們還需要一個(gè)額外的 LED 來(lái)由該按鈕控制。除了這兩個(gè)之外,我們還需要一個(gè)電阻器來(lái)限制 LED 電流,以及一個(gè)用于下拉按鈕的附加電阻器。這將在示意圖部分進(jìn)一步說(shuō)明。我們需要的組件 -
一個(gè)按鈕(任何種類(lèi)的瞬時(shí)開(kāi)關(guān),特別是觸覺(jué)開(kāi)關(guān))
LED的任何顏色
4.7k 下拉電阻
100R電阻
更不用說(shuō),除了上述組件,我們還需要基于N76E003 微控制器的開(kāi)發(fā)板以及Nu-Link 編程器。此外,還需要面包板和連接線來(lái)連接所有組件,如下所示。
N76E003 LED和按鈕接口電路
正如我們?cè)谙旅娴氖疽鈭D中看到的,開(kāi)發(fā)板內(nèi)部的測(cè)試 LED 連接在端口 1.4上,另外一個(gè) LED 連接在端口 1.5上。電阻 R3 用于限制 LED 電流。
在引腳 1.6 中,連接了一個(gè)名為 SW 的按鈕。每當(dāng)按下按鈕時(shí),引腳將變?yōu)楦唠娖?。否則會(huì)被 4.7K的下拉電阻R1 拉低。
該引腳也是編程器訪問(wèn)的與程序相關(guān)的引腳。它用于發(fā)送程序數(shù)據(jù)。但是,我們將看到選擇這些引腳的原因,并獲得有關(guān)N76E003 引腳映射的公平信息。
N76E003 引腳圖
N76E003的引腳圖如下圖所示——
正如我們所看到的,每個(gè)引腳都有多種功能,可以用于不同的目的。讓我們舉個(gè)例子。引腳 1.7 可用作中斷、模擬輸入或通用輸入輸出操作。因此,如果任何引腳用作 I/O 引腳,則相應(yīng)的功能將不可用。
因此,用作 LED 輸出引腳的引腳 1.5 將失去 PWM 和其他功能。但這不是問(wèn)題,因?yàn)樵擁?xiàng)目不需要其他功能。之所以選擇引腳 1.5 作為輸出,引腳 1.6 作為輸入,是因?yàn)?GND 和 VDD 引腳最近可用,便于連接。
但是,在這個(gè)微控制器的 20 個(gè)引腳中,有 18 個(gè)引腳可以用作 GPIO 引腳。引腳 2.0 專(zhuān)用于復(fù)位輸入,不能用作輸出。除此引腳外,所有引腳均可配置為下述模式。
根據(jù)數(shù)據(jù)表,PxM1.n 和 PxM2.n 是兩個(gè)寄存器,用于確定 I/O 端口的控制操作?,F(xiàn)在,開(kāi)始寫(xiě)入和讀取 GPIO 端口是完全不同的事情。因?yàn)閷?xiě)入端口控制寄存器會(huì)改變端口的鎖存狀態(tài),而讀取端口會(huì)獲得邏輯狀態(tài)的狀態(tài)。但要讀取端口,必須將其設(shè)置為輸入模式。
N76E003 的簡(jiǎn)單 GPIO 控制程序
本教程使用的完整程序可以在本頁(yè)底部找到,代碼解釋如下。
將引腳設(shè)置為輸入
讓我們先從輸入開(kāi)始。如前所述,要讀取端口的狀態(tài),需要將其設(shè)置為輸入。因此,由于我們選擇了 P1.6 作為我們的輸入開(kāi)關(guān)引腳,我們通過(guò)下面的代碼片段行來(lái)表示它。
#define SW P16
需要將相同的引腳設(shè)置為輸入。因此,在設(shè)置功能上,使用下面的行將引腳設(shè)置為輸入。
無(wú)效設(shè)置(無(wú)效){
P14_準(zhǔn)模式;
P15_準(zhǔn)模式;
P16_輸入模式;
}
這一行P16_Input_Mode; 在“BSP include library”的Function_define.h頭文件中定義,將pin位設(shè)置為P1M1|=SET_BIT6; P1M2&=~SET_BIT6。SET_BIT6也在同一個(gè)頭文件中定義為 -
#define SET_BIT6 0x40
將引腳設(shè)置為輸出
與輸入引腳相同,板載測(cè)試 LED 和外部 LED1 使用的輸出引腳也在代碼的第一部分中定義了各自的引腳。
#define Test_LED P14
#define LED1 P15
這些引腳使用以下行在設(shè)置函數(shù)中設(shè)置為輸出。
無(wú)效設(shè)置(無(wú)效){
P14_Quasi_Mode; // 輸出
P15_準(zhǔn)模式;// 輸出
P16_輸入模式;
}
這些行也在Function_define.h頭文件中定義,它將引腳位設(shè)置為P1M1&=~SET_BIT4; P1M2&=~SET_BIT4。SET_BIT6也在同一個(gè)頭文件中定義為 -
#define SET_BIT4 0x10
無(wú)限循環(huán)
一個(gè)硬件,如果連接到電源并且工作正常,應(yīng)該連續(xù)輸出,應(yīng)用程序永遠(yuǎn)不會(huì)停止。它無(wú)限次地做同樣的事情。無(wú)限while循環(huán)的功能來(lái)了。while 循環(huán)內(nèi)的應(yīng)用程序無(wú)限運(yùn)行。
而(1){
Test_LED = 0;
sw_delay(150);
測(cè)試_LED = 1;
sw_delay(150);
如果(SW == 1){
LED1 = 0;
}
其他 {
LED1 = 1;
}
}
}
上面的 while 循環(huán)根據(jù)sw_delay值使 LED 閃爍,并檢查 SW 的狀態(tài)。如果開(kāi)關(guān)被按下,P1.6 為高電平,因此當(dāng)按下時(shí),讀取狀態(tài)為 1。在這種情況下,當(dāng)開(kāi)關(guān)被按下并且端口 P1.6 保持高電平時(shí), LED1 將發(fā)光。
對(duì) N76E003 進(jìn)行編程并驗(yàn)證輸出
在我們的 N76E003 入門(mén)教程中,我們已經(jīng)學(xué)習(xí)了如何對(duì) N76E003 進(jìn)行編程,因此我們將在這里重復(fù)相同的步驟來(lái)對(duì)我們的電路板進(jìn)行編程。代碼編譯成功,返回0個(gè)warning和0個(gè)Errors,使用Keil默認(rèn)的刷機(jī)方式刷機(jī)。
如上圖所示,當(dāng)我按下按鈕時(shí),我們的外部 LED 會(huì)亮起。
#include "N76E003.h"
#include "SFR_Macro.h"
#include "函數(shù)定義.h"
#include "Common.h"
#include "延遲.h"
#define Test_LED P14
#define LED1 P15
#define SW P16
無(wú)效設(shè)置(無(wú)效);
無(wú)效 sw_delay (int ms);
無(wú)效的主要(無(wú)效){
設(shè)置();
而(1){ Test_LED = 0;
sw_delay(150);
測(cè)試_LED = 1;
sw_delay(150);
如果(SW == 1){
LED1 = 0;
}
別的 {
LED1 = 1;
}
}
}
// 基于軟件的延遲。時(shí)間不準(zhǔn)確。
無(wú)效 sw_delay (int ms){
整數(shù)a,b;
對(duì)于(a=0;a<1296;a++){
對(duì)于 (b=0; b
}
//這是應(yīng)用程序運(yùn)行前的設(shè)置文件
無(wú)效設(shè)置(無(wú)效){
P14_準(zhǔn)模式;
P15_準(zhǔn)模式;
P16_輸入模式;
}
-
led
+關(guān)注
關(guān)注
242文章
23840瀏覽量
673959 -
LED閃爍
+關(guān)注
關(guān)注
0文章
29瀏覽量
10043 -
IO引腳
+關(guān)注
關(guān)注
0文章
10瀏覽量
9635
發(fā)布評(píng)論請(qǐng)先 登錄
STM32按鍵控制LED的亮滅

stm32g030j6m6串口如何燒錄程序,NRST引腳能否在作為輸入IO使用時(shí)不復(fù)位?
stm32g030j6m6串口如何燒錄程序,NRST引腳能否在作為輸入IO使用時(shí)不復(fù)位?
無(wú)線io輸入控制模塊
FPGA Cyclone IV擴(kuò)展IO作為輸入時(shí)的電平判斷
FPGA的擴(kuò)展IO引腳作為輸入直接采集信號(hào)?
請(qǐng)問(wèn)在運(yùn)行時(shí)配置PIC 32中選擇的IO引腳作為輸入和輸出的最佳方式是什么?
DM642的GP0作為通用IO時(shí),是可以做為輸入和輸出,還是只能作為輸入?
把IO口作為外部中斷輸入有幾個(gè)步驟
介紹下IO口作為輸入的使用
如何使用STM32F103的IO口作為輸入使用
stm32f1的io口作為輸出的使用方法
STM32的引腳可以作為普通IO口使用嗎
使用Adafruit IO作為MQTT控制Raspberry Pi GPIO的AC設(shè)備

評(píng)論