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)不再提示

AS32X601驅(qū)動(dòng)系列教程 GPIO_按鍵檢測(cè)詳解

安芯 ? 來(lái)源:jf_29981791 ? 作者:jf_29981791 ? 2025-05-23 16:44 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

嵌入式系統(tǒng)開發(fā)中,GPIO(通用輸入輸出端口)是實(shí)現(xiàn)硬件與軟件交互的關(guān)鍵組件。本節(jié)主要利用的時(shí)GPIO的輸入采集功能,本節(jié)的主要功能為,讀取板載按鍵,當(dāng)按鍵按下時(shí),對(duì)應(yīng)led亮起,抬起按鍵,對(duì)應(yīng)led熄滅。

硬件設(shè)計(jì)

評(píng)估板板載三個(gè)機(jī)械按鍵,分別接入MCU的PE10、PB4、PB3,當(dāng)按鍵按下時(shí),控制引腳通過(guò)按鍵接地,表現(xiàn)為低電平,當(dāng)按鍵抬起時(shí),io通過(guò)電阻連接到VCC,此時(shí)表現(xiàn)為高電平。

軟件設(shè)計(jì)

代碼分析

本節(jié)主要驗(yàn)證GPIO的輸入功能,所不同的是,在初始化gpio結(jié)構(gòu)體時(shí)需要將輸出配置為輸入。我們?cè)贐sp文件夾中新建key.c和key.h,在c文件中添加如下代碼:

  1. void User_KEY_Init()
  2. {
  3. GPIO_InitTypeDef  GPIO_InitStructure;
    
  4. PLIC_InitTypeDef  PLIC_InitStructure;
    
  5. GPIOB_CLK_ENABLE();
    
  6. GPIOE_CLK_ENABLE();
    
  7. PLIC_CLK_ENABLE();
    
  8. 
    

/ GPIOE Configure /

11. ```
GPIO_InitStructure.GPIO_Pin       = GPIO_Pin_10;
  1. 
    

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;

13. ```
GPIO_InitStructure.GPIO_IType     = GPIO_IPU;
  1. 
    

GPIO_InitStructure.GPIO_OType = GPIO_Out_PP;

15. ```
GPIO_InitStructure.GPIO_OStrength = GPIO_OStrength_9mA;
  1. 
    

GPIO_Init(GPIOE, &GPIO_InitStructure);

17. 
18. ```
*/* GPIOB Configure */*
  1. 
    

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4|GPIO_Pin_3;

20. ```
GPIO_Init(GPIOB, &GPIO_InitStructure);
  1. 
    

PLIC_InitStructure.PLIC_IRQChannel = GPIOE_IRQn;

23. ```
PLIC_InitStructure.PLIC_IRQPriority = 1;
  1. 
    

PLIC_InitStructure.PLIC_IRQChannelCmd = ENABLE;

25. ```
PLIC_Init(&PLIC_InitStructure);
  1. 
    

PLIC_InitStructure.PLIC_IRQChannel = GPIOB_IRQn;

28. ```
PLIC_InitStructure.PLIC_IRQPriority = 2;
  1. 
    

PLIC_InitStructure.PLIC_IRQChannelCmd = ENABLE;

30. ```
PLIC_Init(&PLIC_InitStructure);
  1. 
    

/Clear Interrupt start state/

33. ```
GPIO_ClearITPendingBit(GPIOE, GPIO_Pin_10);
  1. 
    

GPIO_ClearITPendingBit(GPIOB, GPIO_Pin_4|GPIO_Pin_3);

35. ```
*/*Config Interrupt trigger type*/*
  1. 
    

GPIO_ITConfig(GPIOE, GPIO_Pin_10, GPIO_ITType_EDGEDOWN, ENABLE);

37. ```
GPIO_ITConfig(GPIOB, GPIO_Pin_4|GPIO_Pin_3, GPIO_ITType_EDGEDOWN, ENABLE);
  1. }

在本小結(jié)的例程中,我們采用IO中斷的形式讀取IO狀態(tài),PLIC的內(nèi)容在后邊會(huì)具體介紹,因此在此處只需要參考這個(gè)配置過(guò)程即可。

第10~20行為gpio輸入模式初始化,由于按鍵正常情況下接口表現(xiàn)為高電平,所以將接口配置為上拉輸入,可以保證接口穩(wěn)定。

第22~30行為中斷模塊配置,主要功能就是開啟兩個(gè)IO端口的中斷。

第33~37行,在GPIO中需要配置中斷觸發(fā)模式,此處配置為GPIO_ITType_EDGEDOWN下降沿觸發(fā),在此之前最好清除一下中斷初始狀態(tài)。

接下來(lái)編寫中斷處理函數(shù):

  1. void GPIOE_IRQ_Handler()
  2. {
  3. if(GPIO_GetITStatus(GPIOE, GPIO_Pin_10) == SET)
  4. {
  5. key1_flag = 1;
    
  6. */*Clear Interrupt start state*/*
    
  7. GPIO_ClearITPendingBit(GPIOE, GPIO_Pin_10);
    
  8. }
  9. }
  10. void GPIOB_IRQ_Handler()
  11. {
  12. if(GPIO_GetITStatus(GPIOB, GPIO_Pin_4) == SET)
  13. {
  14. 
    

key2_flag = 1;

15. ```
*/*Clear Interrupt start state*/*
  1. 
    

GPIO_ClearITPendingBit(GPIOB, GPIO_Pin_4);

17. }
18. if(GPIO_GetITStatus(GPIOB, GPIO_Pin_3) == SET)
19. {
20. ```
key3_flag = 1;
  1. 
    

/Clear Interrupt start state/

22. ```
GPIO_ClearITPendingBit(GPIOB, GPIO_Pin_3);
  1. }
  2. }

AS32的中斷處理函數(shù)劃分相對(duì)ARM更細(xì),針對(duì)不同端口有不同的處理函數(shù),在這個(gè)函數(shù)中,我們首先調(diào)用GPIO_GetITStatus函數(shù)確定中斷源,之后置位按鍵狀態(tài)以便主程序中進(jìn)行處理。

最后我們編寫主邏輯:

  1. if(key1_flag)
    
  2. {
    
  3. key1_flag = 0;
    
  4. printf("The key1 pressed!rn");
    
  5. LED1_TOGGLE();
    
  6. }
    
  7. if(key2_flag)
    
  8. {
    
  9. key2_flag = 0;
    
  10. 
    

printf("The key2 pressed!rn");

11. ```
LED2_TOGGLE();
  1. }
  2. if(key3_flag)
  3. {
  4. 
    

key3_flag = 0;

16. ```
printf("The key3 pressed!rn");
  1. 
    

LED3_TOGGLE();

18. }

主函數(shù)循環(huán)中添加上述代碼邏輯,主要功能就是當(dāng)按鍵按下時(shí),對(duì)應(yīng)led進(jìn)行一個(gè)亮滅翻轉(zhuǎn)。

此處需要說(shuō)明的是,如果不用中斷形式操作,那么我們?cè)诎讣跏蓟瘮?shù)中只需要保留GPIO_Init函數(shù)之前的內(nèi)容即可,然后在主循環(huán)邏輯中將判斷中的內(nèi)容可使用庫(kù)函數(shù)中的GPIO_ReadInputDataBit函數(shù)實(shí)現(xiàn)io電平讀取。

審核編輯 黃宇

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

    關(guān)注

    147

    文章

    19116

    瀏覽量

    403513
  • 嵌入式系統(tǒng)
    +關(guān)注

    關(guān)注

    41

    文章

    3818

    瀏覽量

    133869
  • GPIO
    +關(guān)注

    關(guān)注

    16

    文章

    1333

    瀏覽量

    56435
  • 按鍵檢測(cè)
    +關(guān)注

    關(guān)注

    0

    文章

    25

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    深入解析RK平臺(tái)GPIO驅(qū)動(dòng):從原理到調(diào)試,開發(fā)者必看指南

    GPIO(通用輸入輸出)作為嵌入式系統(tǒng)中最基礎(chǔ)也最常用的硬件接口,是連接芯片與外部設(shè)備的 “橋梁”。從簡(jiǎn)單的 LED 控制、按鍵檢測(cè),到復(fù)雜的傳感器通信,都離不開 GPIO 的支持。在
    的頭像 發(fā)表于 02-03 15:53 ?1241次閱讀
    深入解析RK平臺(tái)<b class='flag-5'>GPIO</b><b class='flag-5'>驅(qū)動(dòng)</b>:從原理到調(diào)試,開發(fā)者必看指南

    探索DRV601立體聲線路驅(qū)動(dòng)器:特性、應(yīng)用與設(shè)計(jì)要點(diǎn)

    探索DRV601立體聲線路驅(qū)動(dòng)器:特性、應(yīng)用與設(shè)計(jì)要點(diǎn) 在電子設(shè)備的音頻處理領(lǐng)域,線路驅(qū)動(dòng)器起著至關(guān)重要的作用。德州儀器(TI)推出的DRV601立體聲線路
    的頭像 發(fā)表于 02-02 15:45 ?285次閱讀

    【MCU學(xué)習(xí)】GPIO詳解

    本實(shí)驗(yàn)通過(guò)一個(gè)“小實(shí)驗(yàn)框架 GPIO Mode Lab”,在同一個(gè) GPIO 引腳上依次配置不同模式,并用 ADC 探頭測(cè)量電壓、同時(shí)讀取數(shù)字電平,系統(tǒng)化地觀察。
    的頭像 發(fā)表于 01-24 11:45 ?4873次閱讀
    【MCU學(xué)習(xí)】<b class='flag-5'>GPIO</b><b class='flag-5'>詳解</b>

    UCC2753x系列單通道高速柵極驅(qū)動(dòng)器:特性、應(yīng)用與設(shè)計(jì)要點(diǎn)詳解

    UCC2753x系列單通道高速柵極驅(qū)動(dòng)器:特性、應(yīng)用與設(shè)計(jì)要點(diǎn)詳解 引言 在電子電路設(shè)計(jì)中,柵極驅(qū)動(dòng)器扮演著至關(guān)重要的角色,它能夠有效
    的頭像 發(fā)表于 01-09 16:05 ?818次閱讀

    AS32X601的I2C模塊操作EEPROM詳解

    國(guó)科安芯推出的AS32X601系列MCU芯片內(nèi)置的I2C模塊提供了符合工業(yè)標(biāo)準(zhǔn)的兩線串行制接口,可用于MCU和外部I2C設(shè)備的通訊。I2C總線使用兩條串行線:串行數(shù)據(jù)線SDA和串行時(shí)鐘線SCL
    的頭像 發(fā)表于 12-21 21:39 ?1571次閱讀
    <b class='flag-5'>AS32X601</b>的I2C模塊操作EEPROM<b class='flag-5'>詳解</b>

    如何進(jìn)行按鍵檢測(cè)

    如何進(jìn)行按鍵檢測(cè) 檢測(cè)按鍵有中斷方式和GPIO查詢方式兩種。推薦大家用GPIO查詢方式。 從裸
    發(fā)表于 12-10 06:03

    基于 AS32X601 微控制器的定時(shí)器模塊(TIM)技術(shù)研究與應(yīng)用實(shí)踐

    摘要: 本文全面介紹了國(guó)科安芯推出的AS32X601系列微控制器的定時(shí)器模塊(TIM),包括其系統(tǒng)架構(gòu)、功能特性、應(yīng)用場(chǎng)景以及工程實(shí)踐要點(diǎn)。通過(guò)對(duì)芯片的詳細(xì)分析,揭示了其高性能運(yùn)行的基礎(chǔ)。本文詳細(xì)
    的頭像 發(fā)表于 08-19 16:44 ?1009次閱讀

    AS32X601芯片F(xiàn)lash擦寫調(diào)試技術(shù)解析

    本文聚焦于 國(guó)科安芯推出的AS32X601 芯片的 Flash 擦寫調(diào)試工作,深入剖析其片內(nèi) Flash 存儲(chǔ)器架構(gòu),詳述 Flash 控制器功能與運(yùn)作機(jī)制。通過(guò)對(duì) Flash 指令集的解讀,梳理
    的頭像 發(fā)表于 07-22 13:47 ?896次閱讀
    <b class='flag-5'>AS32X601</b>芯片F(xiàn)lash擦寫調(diào)試技術(shù)解析

    AS32X601系列MCU硬件最小系統(tǒng)設(shè)計(jì)與調(diào)試方案探析

    推出的AS32X601 系列 MCU 為例,深入探討硬件最小系統(tǒng)設(shè)計(jì)要點(diǎn)以及硬件調(diào)試方案,旨在為相關(guān)領(lǐng)域的研究人員和技術(shù)人員提供有價(jià)值的參考。
    的頭像 發(fā)表于 07-22 13:46 ?817次閱讀

    迅為RK3568驅(qū)動(dòng)指南GPIO子系統(tǒng) GPIO操作函數(shù)實(shí)驗(yàn)

    迅為電子RK3568開發(fā)板驅(qū)動(dòng)指南GPIO子系統(tǒng) GPIO操作函數(shù)實(shí)驗(yàn)
    的頭像 發(fā)表于 05-28 15:24 ?1499次閱讀
    迅為RK3568<b class='flag-5'>驅(qū)動(dòng)</b>指南<b class='flag-5'>GPIO</b>子系統(tǒng) <b class='flag-5'>GPIO</b>操作函數(shù)實(shí)驗(yàn)

    AS32X601驅(qū)動(dòng)系列教程 PLIC_中斷應(yīng)用詳解

    平臺(tái)中斷控制器(Platform Level Interrupt Controller,PLIC)是國(guó)科安芯AS32系列MCU芯片的中斷控制器,主要對(duì)中斷源進(jìn)行采樣,優(yōu)先級(jí)仲裁和分發(fā)。各外設(shè)中斷統(tǒng)一
    的頭像 發(fā)表于 05-23 17:10 ?814次閱讀
    <b class='flag-5'>AS32X601</b><b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>系列</b>教程 PLIC_中斷應(yīng)用<b class='flag-5'>詳解</b>

    AS32X601驅(qū)動(dòng)系列教程 USART_串口通訊詳解

    國(guó)科安芯的AS32系列MCU芯片集成7路USART,能夠靈活地與外部設(shè)備進(jìn)行全雙工數(shù)據(jù)交換,滿足外部設(shè)備對(duì)工業(yè)標(biāo)準(zhǔn) NRZ 異步串行數(shù)據(jù)格式的要求。USART 通過(guò)小數(shù)波特率發(fā)生器實(shí)現(xiàn)了多種波特率
    的頭像 發(fā)表于 05-23 16:54 ?1019次閱讀
    <b class='flag-5'>AS32X601</b><b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>系列</b>教程 USART_串口通訊<b class='flag-5'>詳解</b>

    AS32X601驅(qū)動(dòng)系列教程 GPIO_點(diǎn)亮LED詳解

    的大門。自本章開始,正式開始用代碼控制AS32x601各外設(shè)完成功能配置。 需要注意的是,AS32X601提供了8組GPIO,其中GPIOA~GPIOG寄存器操作完全一致,但在使用GPIOH的時(shí)候,寄存器列表中間少了一個(gè)32位寄
    的頭像 發(fā)表于 05-23 16:14 ?894次閱讀
    <b class='flag-5'>AS32X601</b><b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>系列</b>教程 <b class='flag-5'>GPIO_</b>點(diǎn)亮LED<b class='flag-5'>詳解</b>

    AS32X601驅(qū)動(dòng)系列教程 SMU_系統(tǒng)時(shí)鐘詳解

    時(shí)鐘和復(fù)位的管理。在默認(rèn)狀態(tài)下SMU工作在IDLE狀態(tài)。只有接收到PMU的使能信號(hào)后才開始工作。SMU模塊會(huì)根據(jù)PMU的指令自動(dòng)配置COR、AXIBUS0/1/2等總線的時(shí)鐘和復(fù)位。 需要注意的是,MCU芯片AS32X601可通過(guò)BOOT選擇從外部QSPI Flash啟動(dòng)和內(nèi)部PFlash啟動(dòng),
    的頭像 發(fā)表于 05-23 16:01 ?872次閱讀
    <b class='flag-5'>AS32X601</b><b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>系列</b>教程 SMU_系統(tǒng)時(shí)鐘<b class='flag-5'>詳解</b>

    第六章 GPIO輸入——按鍵檢測(cè)

    本篇文章講述了如何在W55MH32上實(shí)現(xiàn)按鍵輸入檢測(cè),以及按鍵輸入檢測(cè)的注意事項(xiàng)、實(shí)現(xiàn)方式和代碼講解等。掌握了按鍵
    的頭像 發(fā)表于 05-22 16:41 ?1134次閱讀
    第六章 <b class='flag-5'>GPIO</b>輸入——<b class='flag-5'>按鍵</b><b class='flag-5'>檢測(cè)</b>