按鍵
驅(qū)動(dòng)實(shí)驗(yàn)與LED
以及Beep
在整體使用邏輯上一樣,只是按鍵
是輸入模式。
找到按鍵使用的引腳
查看底板原理圖可知,按鍵
是KEY0
,斷開狀態(tài)時(shí)KEY0
是高電平,接通是低電平。
查看IO引用圖可知,KEY0
使用的是UART1 CTS
引用。
查看I.MX6ULL
參考手冊(cè),UART1 CTS
復(fù)用為GPIO
之后是GPIO01_IO18
:
初始化GPIO01_IO18,配置電氣屬性并設(shè)置為輸入
// 將UART1_CTS_B利用為GPIO01_IO18
IOMUXC_SetPinMux(IOMUXC_UART1_CTS_B_GPIO1_IO18, 0);
// 配置電氣屬性
IOMUXC_SetPinConfig(IOMUXC_UART1_CTS_B_GPIO1_IO18, CONST_GPIO_INPUT_PAD_VALUE);
// 配置GPIO方向以及默認(rèn)值
GPIO_Init(GPIO1, 18, (GPIO_CONFIG){GPIO_DIRECTION_INPUT, 0});
讀取按鍵狀態(tài)
復(fù)用并初始化完GPIO1_IO18
后通過讀取GPIO1_IO18
的電平狀態(tài)就可以知道當(dāng)前按鍵狀態(tài)了。按鍵接下時(shí)為低電平,按鈕彈起時(shí)為高電平。
但是在讀取按鍵
狀態(tài)時(shí)有一個(gè)問題,就是由于按鍵
在按下時(shí)短時(shí)間內(nèi)的電平狀態(tài)可能不穩(wěn)定,在讀取的時(shí)候需要做一個(gè)延時(shí)讀取操作,防止讀取的異常的電平狀態(tài),它的讀取代碼如下:
if (GPIO_RedValue(GPIO1, 18) == 0)
{
//此時(shí)的電平是低電平,表示按鈕是接下狀態(tài)
//為了防止電平抖動(dòng),延遲10ms再讀取一下電平狀態(tài),如果還是按下表示按鈕按下并且穩(wěn)定
Delay(10);
if (GPIO_RedValue(GPIO1, 18))
{
return 1;
}
else
{
return 0;
}
}
else
{
// 按鈕松開
return 0;
}
修改主程序邏輯
這里改成按鍵
按下則LED
亮同時(shí)BEEP
響
Clk_Init();
Led_Init();
Beep_Init();
Key0_Init();
while (1)
{
Delay(10);
if (Key0_GetValue())
{
Led_On();
Beep_On();
}
else
{
Led_Off();
Beep_Off();
}
}
return 0;
編譯,燒寫驗(yàn)證
make install
-
led
+關(guān)注
關(guān)注
242文章
23385瀏覽量
663553 -
模式
+關(guān)注
關(guān)注
0文章
65瀏覽量
13432 -
按鍵驅(qū)動(dòng)
+關(guān)注
關(guān)注
0文章
11瀏覽量
7161
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
STM32按鍵中斷實(shí)驗(yàn)
怎樣去完成GPIO按鍵控制的輸入驅(qū)動(dòng)實(shí)驗(yàn)呢
【嵌入式開發(fā)教程4】手把手教你做平板電腦-設(shè)備按鍵驅(qū)動(dòng)實(shí)驗(yàn)教程
【嵌入式開發(fā)教程4】瘋殼·平板電腦-設(shè)備按鍵驅(qū)動(dòng)實(shí)驗(yàn)教程
【開發(fā)教程4】手把手教你做平板電腦-設(shè)備按鍵驅(qū)動(dòng)實(shí)驗(yàn)教程
小鍵盤+LED驅(qū)動(dòng)實(shí)驗(yàn)
【嵌入式】按鍵中斷控制 LED 及蜂鳴器實(shí)驗(yàn)
![【嵌入式】<b class='flag-5'>按鍵</b>中斷控制 LED 及蜂鳴器<b class='flag-5'>實(shí)驗(yàn)</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
MCU之按鍵驅(qū)動(dòng) -剝離按鍵驅(qū)動(dòng)和事件處理
![MCU之<b class='flag-5'>按鍵</b><b class='flag-5'>驅(qū)動(dòng)</b> -剝離<b class='flag-5'>按鍵</b><b class='flag-5'>驅(qū)動(dòng)</b>和事件處理](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
C51 按鍵移位 實(shí)驗(yàn) 筆記
![C51 <b class='flag-5'>按鍵</b>移位 <b class='flag-5'>實(shí)驗(yàn)</b> 筆記](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
GPIO輸入驅(qū)動(dòng)實(shí)驗(yàn)-按鍵控制
![GPIO輸入<b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>實(shí)驗(yàn)</b>-<b class='flag-5'>按鍵</b>控制](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
stm32按鍵實(shí)驗(yàn)講解
![stm32<b class='flag-5'>按鍵</b><b class='flag-5'>實(shí)驗(yàn)</b>講解](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
CC2530按鍵控制LED開關(guān)實(shí)驗(yàn)
按鍵中斷實(shí)驗(yàn)是什么
![<b class='flag-5'>按鍵</b>中斷<b class='flag-5'>實(shí)驗(yàn)</b>是什么](https://file1.elecfans.com/web2/M00/81/BE/wKgaomQAXDGAZB1JAAD3jkpYNaU563.jpg)
基于狀態(tài)機(jī)的按鍵驅(qū)動(dòng)設(shè)計(jì)
![基于狀態(tài)機(jī)的<b class='flag-5'>按鍵</b><b class='flag-5'>驅(qū)動(dòng)</b>設(shè)計(jì)](https://file1.elecfans.com/web2/M00/8B/F8/wKgZomSjlQWAWPyEAABtdZ8rHKo441.jpg)
評(píng)論