本文來源電子發(fā)燒友社區(qū),作者:杜瀟泊, 帖子地址:https://bbs.elecfans.com/jishu_2009065_1_1.html
開發(fā)板OLED板下面有兩個按鍵,上手開發(fā)板第一件事肯定是調(diào)試輸入輸出手段。串口幾乎不需要調(diào)試什么,上手就能用。這個按鍵就成了第一個下手的目標(biāo)。
開發(fā)板OLED板下面有兩個按鍵,上手開發(fā)板第一件事肯定是調(diào)試輸入輸出手段。串口幾乎不需要調(diào)試什么,上手就能用。這個按鍵就成了第一個下手的目標(biāo)。
起初沒把這倆按鍵當(dāng)回事,以為只是直接接在GPIO上的,頂多設(shè)置一下觸發(fā)點平就行了。拿到原理圖才發(fā)現(xiàn),這倆按鍵居然是這樣接的。
![180048xlfdlcgqu5ffquq4.png](https://bbs.elecfans.com/data/attachment/forum/202011/16/180048xlfdlcgqu5ffquq4.png)
也就是說必須使用ADC才能確認按下的是哪一個鍵。開發(fā)板官方給出了OLED板的demo,其中也包含了對屏幕下面兩個按鍵的使用。但是查看代碼發(fā)現(xiàn),是使用死循環(huán)不斷進行ADC轉(zhuǎn)換來捕捉按鍵操作的。這樣做會導(dǎo)致系統(tǒng)功耗上升,并且會持續(xù)占用CPU。
其實我們可以更加優(yōu)雅的使用這倆按鍵,使用按鍵終端觸發(fā)按鍵事件,再由按鍵線程完成按鍵事件的處理。這樣做在平時不按按鍵時,系統(tǒng)CPU處于IDLE狀態(tài)、ADC也處于停止?fàn)顟B(tài)。功耗、CPU都能降下來。甚至你可以配置進入低功耗模式。
代碼不多
// 全局信號量,記錄按鍵事件
osSemaphoreId_t g_keySem;
void KeyPressed(char *arg) {
(void)arg;
//釋放一個信號量,注意這里是中斷上下文,最好別調(diào)用太多東西
osSemaphoreRelease(g_keySem);
}
void handlePressKeyTask(void* arg) {
(void)arg;
while(true) {
// 這里去消費按鍵事件
osStatus_t status = osSemaphoreAcquire(g_keySem,65535);
if(status != 0) {
continue;
}
while(true) {
unsigned short data = 0;
float voltage = (float)data * 1.8 * 4 / 4096;
if(voltage < 0.8f) {
ssd1306_Fill(Black);
ssd1306_DrawString("Key1 Pressed!", Font_7x10, White);
ssd1306_UpdateScreen();
} else if(voltage < 2.0f) {
ssd1306_Fill(Black);
ssd1306_SetCursor(0, 0);
ssd1306_DrawString("Key2 Pressed!", Font_7x10, White);
ssd1306_UpdateScreen();
} else {
ssd1306_Fill(Black);
ssd1306_SetCursor(0, 0);
ssd1306_DrawString("Released!", Font_7x10, White);
ssd1306_UpdateScreen();
break;
}
}
}
}
void initKey() {
// 端口設(shè)置為GPIO
IoSetFunc(WIFI_IOT_IO_NAME_GPIO_5, WIFI_IOT_IO_FUNC_GPIO_5_GPIO);
// 設(shè)置為輸入
GpioSetDir(WIFI_IOT_IO_NAME_GPIO_5, WIFI_IOT_GPIO_DIR_IN);
// 設(shè)置在下降沿中斷。(其實我想設(shè)置下降沿和上升沿中斷的,然而接口居然不允許)
osSemaphoreAttr_t semAttr = {
.name = "KeyPressSemi",
.attr_bits = 0,
.cb_mem = NULL,
.cb_size = 0
};
g_keySem = osSemaphoreNew(8, 0, &semAttr);
GpioRegisterIsrFunc(WIFI_IOT_IO_NAME_GPIO_5, WIFI_IOT_INT_TYPE_EDGE, WIFI_IOT_GPIO_EDGE_FALL_LEVEL_LOW, KeyPressed, NULL);
// 這里啟動一個task處理按鍵事件
osThreadAttr_t attr;
attr.name = "KeyHandleTask";
attr.attr_bits = 0U;
attr.cb_mem = NULL;
attr.cb_size = 0U;
attr.stack_mem = NULL;
attr.stack_size = 2048;
attr.priority = osPriorityNormal;
if (osThreadNew(handlePressKeyTask, NULL, &attr) == NULL) {
printf("[%s]Falied to create KeyHandleTask!n", __func__);
}
}
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。
舉報投訴
-
wi-fi
+關(guān)注
關(guān)注
14文章
2176瀏覽量
125270 -
HarmonyOS
+關(guān)注
關(guān)注
79文章
1985瀏覽量
30741 -
HiSpark
+關(guān)注
關(guān)注
1文章
156瀏覽量
6966
發(fā)布評論請先 登錄
相關(guān)推薦
Wi-Fi 8要來了!未來Wi-Fi技術(shù)演進方向揭秘
產(chǎn)品銷售中,雖然Wi-Fi 7產(chǎn)品的銷量份額快速從年初的個位數(shù)百分比增長至14%,但Wi-Fi 6產(chǎn)品的銷量份額依然穩(wěn)定在60%左右。如果從存量設(shè)備來看,那么Wi-Fi 7路由器的占比將遠遠小于這個數(shù)。 ? 智能手機等終端設(shè)備已
![<b class='flag-5'>Wi-Fi</b> 8要來了!未來<b class='flag-5'>Wi-Fi</b>技術(shù)演進方向揭秘](https://file1.elecfans.com/web2/M00/0C/49/wKgZomdCKbGANgatAA1CFWsZgC4311.png)
華為海思正式進入Wi-Fi FEM賽道?
大家都知道了,2018年11 月離開銳迪科(RDA),前往福建晉江創(chuàng)立三伍微,專注于Wi-Fi射頻前端芯片,從路由器Wi-Fi FEM,到手機Wi-Fi FEM,再到IoT FEM全覆
發(fā)表于 12-11 17:42
摩爾斯微電子發(fā)布Wi-Fi HaLow評估套件,加速物聯(lián)網(wǎng)開發(fā)
近日,全球領(lǐng)先的Wi-Fi HaLow解決方案提供商摩爾斯微電子正式推出一款開創(chuàng)性的評估套件——MM6108-EKH05。這款完全整合的開發(fā)平臺,旨在推動各行業(yè)物聯(lián)網(wǎng)解決方案的快速發(fā)展
從Wi-Fi 4到Wi-Fi 7:網(wǎng)速飆升40倍的無線革命
1 Wi-Fi技術(shù)的快速發(fā)展 每一代新的Wi-Fi協(xié)議發(fā)布,都會帶來更高的無線速率。 ? 從Wi-Fi 4到Wi-Fi 7:無線網(wǎng)絡(luò)技術(shù)顯著提升,實現(xiàn)了網(wǎng)速的巨大飛躍。 ? ?
![從<b class='flag-5'>Wi-Fi</b> 4到<b class='flag-5'>Wi-Fi</b> 7:網(wǎng)速飆升40倍的無線革命](https://file1.elecfans.com/web3/M00/01/8E/wKgZO2dWUgCAQStIAAAs-eJkIc8590.png)
Wi-Fi 7有哪些底層技術(shù)優(yōu)勢
您在多個Wi-Fi行業(yè)活動中代表LitePoint。Wi-Fi 7帶來了哪些新穎且有趣的特點?
Wi-Fi 7與Wi-Fi 6E有什么區(qū)別
也許很多人還在考慮是否要將使用的Wi-Fi設(shè)備升級到Wi-Fi 6或Wi-Fi 6E,而這些標(biāo)準(zhǔn)的繼任者卻已經(jīng)開始“登堂入室”了。Wi-Fi 7是新一代
未來的Wi-Fi路由器
轉(zhuǎn)載自——鐘林談芯 沒有創(chuàng)新就沒有未來,Wi-Fi路由器也是如此。 進入2024年以后,Wi-Fi路由器市場變得更加艱難,利潤大幅下滑,BOM成本價高于市場價,接不接訂單,都陷入兩難。 國內(nèi)主芯片
DA16200 超低功耗 Wi-Fi 模塊開發(fā)套件 Pro數(shù)據(jù)手冊
電子發(fā)燒友網(wǎng)站提供《DA16200 超低功耗 Wi-Fi 模塊開發(fā)套件 Pro數(shù)據(jù)手冊.rar》資料免費下載
發(fā)表于 05-30 17:53
?1次下載
![DA16200 超低功耗 <b class='flag-5'>Wi-Fi</b> 模塊開發(fā)<b class='flag-5'>套件</b> Pro數(shù)據(jù)手冊](https://file1.elecfans.com/web2/M00/EB/52/wKgaomZYRFeAUYu_AAIcdL7RdCA705.png)
DA16200 超低功耗 Wi-Fi 模塊開發(fā)套件數(shù)據(jù)手冊
電子發(fā)燒友網(wǎng)站提供《DA16200 超低功耗 Wi-Fi 模塊開發(fā)套件數(shù)據(jù)手冊.rar》資料免費下載
發(fā)表于 05-30 17:13
?0次下載
![DA16200 超低功耗 <b class='flag-5'>Wi-Fi</b> 模塊開發(fā)<b class='flag-5'>套件</b>數(shù)據(jù)手冊](https://file1.elecfans.com/web2/M00/EA/68/wKgZomZYPi-AFsOaAAHH6y5qIrM275.png)
AIROC? Wi-Fi和藍牙組合連接掉線的原因?怎么解決?
我最近購買了一臺配備 AIROC? Wi-Fi 和藍牙組合模塊的筆記本電腦。 大多數(shù)時候,Wi-Fi 連接都能正常使用圖書館創(chuàng)世紀網(wǎng)站ePUB 轉(zhuǎn)換工具、在線書店和學(xué)術(shù)出版物,但我注意到藍牙連接總是
發(fā)表于 05-24 07:48
華為獲得全球首個國際Wi-Fi聯(lián)盟WFA企業(yè)級Wi-Fi 7認證!
Wi-Fi聯(lián)盟已發(fā)布Wi-Fi 7認證標(biāo)準(zhǔn),華為是第一批送測廠商,獲得業(yè)界首個企業(yè)級Wi-Fi 7 的Wi-Fi聯(lián)盟官方認證。
![華為獲得全球首個國際<b class='flag-5'>Wi-Fi</b>聯(lián)盟WFA企業(yè)級<b class='flag-5'>Wi-Fi</b> 7認證!](https://file1.elecfans.com/web2/M00/DF/02/wKgaomYtseiAPAkgAAAUv9nVmqI691.jpg)
驗證物聯(lián)網(wǎng)Wi-Fi HaLow用例的MM6108-EKH08開發(fā)套件來啦
驗證物聯(lián)網(wǎng)Wi-Fi HaLow用例的MM6108-EKH08開發(fā)套件來啦 MM6108-EKH08開發(fā)套件專為驗證物聯(lián)網(wǎng)Wi-Fi HaLow用例而設(shè)計。該
![驗證物聯(lián)網(wǎng)<b class='flag-5'>Wi-Fi</b> HaLow用例的MM6108-EKH08開發(fā)<b class='flag-5'>套件</b>來啦](https://file1.elecfans.com/web2/M00/C8/D1/wKgaomYXYLWAX25lAACMPTBW4N0471.jpg)
Wi-Fi的誕生與發(fā)展
短距離無線通信技術(shù)有Wi-Fi、ZigBee、藍牙以及Z-Wave,今天我們先揭開Wi-Fi的神秘面紗。Chrent短距離無線通信技術(shù)——Wi-Fi過去的20多年,Wi-Fi靠著僅有的
![<b class='flag-5'>Wi-Fi</b>的誕生與發(fā)展](https://file.elecfans.com/web2/M00/6D/35/poYBAGM1MoCAWOOXAAAqWi8Xt8w214.png)
評論