chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Key_Scan按鍵掃描函數(shù)詳解

瑞薩嵌入式小百科 ? 來源:野火電子 ? 2025-08-04 14:01 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

11.3.3Key_Scan按鍵掃描函數(shù)

按鍵程序設(shè)計(jì)思路可以非常簡單:想要知道某個(gè)按鍵是否被按下,只需檢測連接到改按鍵的IO引腳是高電平還是低電平,若是低電平,說明按鍵正處于被按下的狀態(tài)。

通過使用R_IOPORT_PinRead函數(shù),我們可以獲取某個(gè)IO引腳的電平狀態(tài)。R_IOPORT_PinRead函數(shù)原型如下:

左右滑動(dòng)查看完整內(nèi)容

fsp_err_tR_IOPORT_PinRead(ioport_ctrl_t*constp_ctrl,bsp_io_port_pin_t?
→pin,bsp_io_level_t* p_pin_value);

說明

通過bsp_io_port_pin_t枚舉類型的變量pin傳入要讀取的IO引腳的端口號(hào)和引腳號(hào);

通過bsp_io_level_t枚舉類型的指針p_pin_value來獲取該IO引腳的電平狀態(tài)。

bsp_io_level_t枚舉類型的定義如下:

列表2:e_bsp_io_level枚舉類型定義

左右滑動(dòng)查看完整內(nèi)容

/* 可以為單個(gè)引腳設(shè)置電平和讀取電平 */
typedefenume_bsp_io_level
{
BSP_IO_LEVEL_LOW =0,///< Low
BSP_IO_LEVEL_HIGH?///< High
}?bsp_io_level_t;

Key_Scan按鍵掃描函數(shù)如下:

列表3:

代碼清單11-1:Key_Scan按鍵掃描函數(shù)

左右滑動(dòng)查看完整內(nèi)容

/* 定義宏 KEY_ON 表示按鍵按下
定義宏 KEY_OFF 表示按鍵沒有按下
*/
#defineKEY_ON 1
#defineKEY_OFF 0


/* 按鍵掃描函數(shù)(阻塞式)
* key: KEY1_SW2_PIN 用戶按鍵 1(絲印 SW2)的引腳
* KEY2_SW3_PIN 用戶按鍵 2(絲印 SW3)的引腳
*/
uint32_tKey_Scan(bsp_io_port_pin_tkey)
{
bsp_io_level_tstate;


// 讀取按鍵引腳電平
R_IOPORT_PinRead(&g_ioport_ctrl, key, &state);
if(BSP_IO_LEVEL_HIGH == state)
{
returnKEY_OFF;//按鍵沒有被按下
}
else
{
do//等待按鍵釋放
{
R_IOPORT_PinRead(&g_ioport_ctrl, key, &state);
}while(BSP_IO_LEVEL_LOW == state);
}


returnKEY_ON;//按鍵被按下了
}

這是一個(gè)簡單的按鍵掃描函數(shù),當(dāng)調(diào)用該函數(shù)并且檢測到按鍵被按下的時(shí)候,就會(huì)在do-while語句里重復(fù)檢測按鍵是否被松開,一直到當(dāng)手松開按鍵的時(shí)候才能跳出循環(huán),并返回KEY_ON數(shù)值表明按鍵被按下;而當(dāng)按鍵沒有被按下的時(shí)候Key_Scan函數(shù)則返回KEY_OFF的數(shù)值。

值得注意的是,若程序在do-while循環(huán)里一直檢測到手沒有松開按鍵,則程序會(huì)被一直阻塞在這里,因此這是一個(gè)阻塞式的掃描函數(shù)。

11.3.4hal_entry入口函數(shù)

在hal_entry函數(shù)里,首先初始化了LED和按鍵,接著進(jìn)入了while主循環(huán),在該循環(huán)下反復(fù)地調(diào)用Key_Scan函數(shù)對(duì)兩個(gè)用戶按鍵進(jìn)行實(shí)時(shí)掃描。若按鍵1按下,則翻轉(zhuǎn)LED1的狀態(tài);若按鍵2按下,則翻轉(zhuǎn)LED2的狀態(tài)。

需要注意的是,KEY1_SW2_PIN和KEY2_SW3_PIN宏定義了兩個(gè)用戶按鍵的引腳,不同的板子按鍵引腳是不一樣的。

左右滑動(dòng)查看完整內(nèi)容

/* 啟明 6M5 開發(fā)板,兩個(gè)按鍵引腳定義 */
#defineKEY1_SW2_PIN BSP_IO_PORT_00_PIN_04
#defineKEY2_SW3_PIN BSP_IO_PORT_00_PIN_05


/* 啟明 4M2 開發(fā)板,兩個(gè)按鍵引腳定義 */
#defineKEY1_SW2_PIN BSP_IO_PORT_04_PIN_03
#defineKEY2_SW3_PIN BSP_IO_PORT_04_PIN_04


/* 啟明 2L1 開發(fā)板,兩個(gè)按鍵引腳定義 */
#defineKEY1_SW2_PIN BSP_IO_PORT_00_PIN_01
#defineKEY2_SW3_PIN BSP_IO_PORT_00_PIN_02

hal_entry入口函數(shù)如下:

列表4:代碼清單11-2:hal_entry入口函數(shù)

左右滑動(dòng)查看完整內(nèi)容

/* 用戶頭文件包含 */
#include"led/bsp_led.h"
#include"key/bsp_key.h"


voidhal_entry(void)
{
/*TODO:add your own code here */


LED_Init();// LED 初始化
Key_Init();// 按鍵初始化


while(1)
{
if(Key_Scan(KEY1_SW2_PIN) == KEY_ON )//掃描按鍵 1
{
LED1_TOGGLE;//翻轉(zhuǎn) LED1 狀態(tài)
}
if(Key_Scan(KEY2_SW3_PIN) == KEY_ON )//掃描按鍵 2
{
LED2_TOGGLE;//翻轉(zhuǎn) LED2 狀態(tài)
}
}


#ifBSP_TZ_SECURE_BUILD
/* Enter non-secure code */
R_BSP_NonSecureEnter();
#endif
}

11.4下載驗(yàn)證

將程序編譯并下載到開發(fā)板之后,按下復(fù)位按鍵來復(fù)位開發(fā)板。

然后按下用戶按鍵1可以控制LED1燈的亮滅;按下用戶按鍵2則可以控制LED2燈的亮滅。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 引腳
    +關(guān)注

    關(guān)注

    16

    文章

    2110

    瀏覽量

    55613
  • 程序
    +關(guān)注

    關(guān)注

    117

    文章

    3843

    瀏覽量

    85185
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4416

    瀏覽量

    67440
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    【戰(zhàn)艦例程系列連載+教學(xué)】第八章 按鍵輸入實(shí)驗(yàn)

    ?! ?b class='flag-5'>KEY_Scan函數(shù),則是用來掃描這4個(gè)IO口是否有按鍵按下。KEY_Scan函數(shù),支持兩
    發(fā)表于 01-25 10:14

    按鍵掃描Key_Scan中為什么設(shè)2個(gè)變量

    本帖最后由 playwife_花 于 2015-1-21 09:04 編輯 疑問:把變量 key_check去掉, key_check = KeyPort和 switch (key_check &= 0x0F)中的chec
    發(fā)表于 01-20 14:38

    為什么自有key_scan()==1有用,而key_scan()==2沒有起作用?求解釋?

    key_scan(){static uchar sta = 1;//設(shè)置一個(gè)狀態(tài),表示按鍵是否按下,1為抬起if(sta == 1&&(KEY18 == 0||KEY19 == 0|
    發(fā)表于 09-06 22:18

    3*4按鍵掃描這樣行不行

    );}//*****************************************************************************************//函數(shù)名稱:Key_scan()按鍵
    發(fā)表于 02-21 23:54

    請問if中的按鍵掃描占用時(shí)間嗎?

    突然發(fā)現(xiàn)個(gè)問題,我的定時(shí)函數(shù)中有個(gè)IF(KEY_SCAN()!=0),這個(gè)按鍵掃描10MS,那這個(gè)IF判斷需要10MS嗎?我覺得應(yīng)該需要,但如果需要,我的LED
    發(fā)表于 09-06 15:56

    按鍵處理程序問題

    剛?cè)胧謘tm32,試驗(yàn)按鍵 程序,但是現(xiàn)在有個(gè)問題:,我把代碼貼上,大家?guī)兔聪鹿琺ain函數(shù)調(diào)用key_scan(),上電后沒有按鍵按下時(shí)key
    發(fā)表于 03-18 04:35

    MCU按鍵消抖問題

    函數(shù)有響應(yīng)優(yōu)先級(jí),KEY_FR_1>KEY_FR_2>KEY_OK>KEY_3!!UINT8 KEY_
    發(fā)表于 11-04 06:37

    Stm32按鍵輸入的程序步驟有哪些

    :RCC_APB2PeriphClockCmd();2.初始化IO模式:上拉/下拉輸入。調(diào)用函數(shù):GPIO_Init();3.掃描IO口電平(庫函數(shù)/寄存器/位操作)按鍵
    發(fā)表于 01-06 07:43

    鍵盤掃描靜態(tài)數(shù)碼管顯示的相關(guān)資料推薦

    簡單鍵盤掃描靜態(tài)數(shù)碼管顯示總結(jié)一、矩陣按鍵掃描程序采用行列翻轉(zhuǎn)掃描void Key_Scan()//行列翻轉(zhuǎn)式
    發(fā)表于 01-07 07:29

    3-Key_Scan 風(fēng)馳STM8開發(fā)板程序源代碼 例9

    關(guān)天STM8 Key_Scan使用程序源代碼
    發(fā)表于 07-04 17:40 ?14次下載

    .單片機(jī)開發(fā)過程中按鍵處理函數(shù)的實(shí)現(xiàn)

    **.**單片機(jī)開發(fā)過程中按鍵處理函數(shù)的實(shí)現(xiàn)? **.**方法一? 這種方法在單片機(jī)處理中反應(yīng)不夠好,當(dāng)按鍵交替按時(shí),會(huì)表現(xiàn)的不夠好?void Key_Scan(void
    發(fā)表于 11-13 12:36 ?16次下載
    .單片機(jī)開發(fā)過程中<b class='flag-5'>按鍵</b>處理<b class='flag-5'>函數(shù)</b>的實(shí)現(xiàn)

    單片機(jī)按鍵掃描的一般思路?

    以下給出三種思路,可以借鑒第一種://按鍵掃描(支持連續(xù)按)u8 KEY_Scan(void){ if(key按下) { delay(10);
    發(fā)表于 12-31 19:37 ?0次下載
    單片機(jī)<b class='flag-5'>按鍵</b><b class='flag-5'>掃描</b>的一般思路?

    跑馬燈按鍵

    =0;i
    發(fā)表于 01-13 12:32 ?1次下載
    跑馬燈<b class='flag-5'>按鍵</b>

    STM32按鍵輸入實(shí)驗(yàn)的按鍵優(yōu)先級(jí)和上下拉電阻的配置

    3,也就是說假如四個(gè)按鍵同時(shí)按下,那么只會(huì)執(zhí)行KEY0按鍵的指令//注意此函數(shù)有響應(yīng)優(yōu)先級(jí),KEY0>K
    發(fā)表于 01-14 14:14 ?6次下載
    STM32<b class='flag-5'>按鍵</b>輸入實(shí)驗(yàn)的<b class='flag-5'>按鍵</b>優(yōu)先級(jí)和上下拉電阻的配置

    KEY Process按鍵掃描學(xué)習(xí)記錄

    按鍵掃描函數(shù) void KEY_Process(void) intkey1_state key2_state
    發(fā)表于 03-10 10:25 ?0次下載
    <b class='flag-5'>KEY</b> Process<b class='flag-5'>按鍵</b><b class='flag-5'>掃描</b>學(xué)習(xí)記錄