在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

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

基于單片機(jī)的按鍵中斷控制

CHANBAEK ? 來源:凌云物聯(lián)網(wǎng)實(shí)驗(yàn)室 ? 作者:郭工 ? 2022-12-19 09:23 ? 次閱讀

4.1 原理圖分析

查看EK-RA6M4的原理圖,如下圖所示,該開發(fā)板上有2個(gè)用戶按鍵。

圖片

根據(jù)原理圖可知,這2個(gè)按鍵的控制邏輯為:

按鍵 S1 S2
引腳 P005 P006
電平 按鍵按下低電平、按鍵釋放高電平 按鍵按下低電平、按鍵釋放高電平

4.2 中斷配置

首先,在FSP配置中將按鍵所用的兩個(gè)GPIO口配置成中斷模式。

圖片

  • 在這里,我們可以查找到 P005P006的中斷號(hào)分別為 IRQ10 和 IRQ11;

接著選擇 Stacks , 點(diǎn)擊 "New Stack" -> "Input" -> "External IRQ(r_icu)" 添加外部中斷協(xié)議棧。

圖片

接下來配置相關(guān)的按鍵中斷,并重新生成代碼。

圖片

  • 通過 Name 字段可以修改按鍵中斷的名稱為 g_key1_irq,它將在IDE自動(dòng)生成的文件 ra_gen/common_data.c/h 中定義按鍵操作相關(guān)的變量;
  • 通過 Channel 字段可以修改按鍵的中斷號(hào),這里設(shè)置為10,下面的 Pins 將自動(dòng)選擇 P005 這個(gè)引腳;
  • 通過 Trigger 字段可以修改中斷的觸發(fā)方式為下降沿觸發(fā);
  • 通過 Callback 字段設(shè)置按鍵的中斷回調(diào)函數(shù),它將配置在 g_key1_irq_cfg 變量中,該函數(shù)需要我們自己實(shí)現(xiàn);
  • 另外,我們也可以在這里修改按鍵中斷的優(yōu)先級(jí);

4.3 源碼修改

創(chuàng)建按鍵操作相關(guān)的頭文件 src/bsp_key.h 如下:

#ifndef BSP_KEY_H_
#define BSP_KEY_H_

#define USER_KEY1_IRQ_NUMBER        10
#define USER_KEY2_IRQ_NUMBER        11

extern int key_init(void);

extern void icu_deinit(void);

#endif /* BSP_KEY_H_ */

創(chuàng)建按鍵操作相關(guān)的c文件 src/bsp_key.c 如下:

#include h>
#include "bsp_led.h"
#include "bsp_key.h"
#include "bsp_api.h"
#include "common_data.h"

int key_init(void)
{
    int err = FSP_SUCCESS;

    /* Open and enable key1 interrupt  */
    err = R_ICU_ExternalIrqOpen(&g_key1_irq_ctrl, &g_key1_irq_cfg);
    if (FSP_SUCCESS != err)
    {
        printf ("
**R_ICU_ExternalIrqOpen API FAILED**
");
        return err;
    }

    err = R_ICU_ExternalIrqEnable(&g_key1_irq_ctrl);
    if (FSP_SUCCESS != err)
    {
        printf ("
**R_ICU_ExternalIrqOpen API FAILED**
");
        return err;
    }

    /* Open and enable key1 interrupt  */
    err = R_ICU_ExternalIrqOpen(&g_key2_irq_ctrl, &g_key2_irq_cfg);
    if (FSP_SUCCESS != err)
    {
        printf ("
**R_ICU_ExternalIrqOpen API FAILED**
");
        return err;
    }

    err = R_ICU_ExternalIrqEnable(&g_key2_irq_ctrl);
    if (FSP_SUCCESS != err)
    {
        printf ("
**R_ICU_ExternalIrqOpen API FAILED**
");
        return err;
    }

    return err;
}

void icu_deinit(void)
{
    R_ICU_ExternalIrqClose(&g_key1_irq_ctrl);
    R_ICU_ExternalIrqClose(&g_key2_irq_ctrl);
}

void key_callback(external_irq_callback_args_t *p_args)
{
    static bsp_led_status_t      status[2] = { BSP_LEDON, BSP_LEDON};

    if(USER_KEY1_IRQ_NUMBER == p_args->channel)
    {
        turn_led(BSP_LEDRED, status[0]);
        status[0] ^= 1;
    }
    else if(USER_KEY2_IRQ_NUMBER == p_args->channel)
    {
        turn_led(BSP_LEDGREEN, status[1]);        status[1] ^= 1;
    }
}
  • 按鍵回調(diào)函數(shù) key_callback() 將分別通過兩個(gè)按鍵控制 紅綠兩個(gè)燈的亮滅。

修改 src/hal_entry.c 源文件,在里面添加按鍵初始化代碼并修改藍(lán)色Led燈為系統(tǒng)運(yùn)行的心跳燈狀態(tài)。

... ...
#include "bsp_key.h"
... ...
void hal_entry(void)
{
    ... ...
    key_init();
    while (1)
    {
        turn_led(BSP_LEDBLUE, BSP_LEDON);
        delay_ms(200);
        turn_led(BSP_LEDBLUE, BSP_LEDOFF);
        delay_ms(200);

        turn_led(BSP_LEDBLUE, BSP_LEDON);
        delay_ms(200);
        turn_led(BSP_LEDBLUE, BSP_LEDOFF);
        delay_ms(200);

        turn_led(BSP_LEDBLUE, BSP_LEDON);
        delay_ms(500);
        turn_led(BSP_LEDBLUE, BSP_LEDOFF);
        delay_ms(1000);
    }
}

4.4 編譯運(yùn)行

代碼修改完成后,在開發(fā)板上編譯運(yùn)行,藍(lán)色Led將作為系統(tǒng)狀態(tài)心跳燈,而按下S1、S2將點(diǎn)亮紅色和綠色Led,再次按下則將滅掉Led。

圖片

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

    關(guān)注

    1299

    文章

    6350

    瀏覽量

    234647
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6040

    文章

    44592

    瀏覽量

    636862
  • GPIO
    +關(guān)注

    關(guān)注

    16

    文章

    1215

    瀏覽量

    52223
  • 按鍵中斷
    +關(guān)注

    關(guān)注

    0

    文章

    15

    瀏覽量

    6459
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    單片機(jī)教程十七:單片機(jī)中斷系統(tǒng)

    單片機(jī)教程十七:單片機(jī)中斷系統(tǒng) 單片機(jī)中斷系統(tǒng)的概念:什么是中斷,我們從一個(gè)生活中的例程引入
    發(fā)表于 05-15 23:11 ?5017次閱讀
    <b class='flag-5'>單片機(jī)</b>教程十七:<b class='flag-5'>單片機(jī)</b>的<b class='flag-5'>中斷</b>系統(tǒng)

    單片機(jī)按鍵控制程序【匯編版】

    單片機(jī)按鍵控制程序【匯編版】單片機(jī)按鍵控制程序【匯編版】單片機(jī)按鍵控制程序【匯編版】
    發(fā)表于 12-29 11:04 ?0次下載

    單片機(jī)按鍵控制程序【C語(yǔ)言】

    單片機(jī)按鍵控制程序【C語(yǔ)言】單片機(jī)按鍵控制程序【C語(yǔ)言】單片機(jī)按鍵控制程序【C語(yǔ)言】
    發(fā)表于 12-29 11:04 ?29次下載

    單片機(jī)中斷系統(tǒng)介紹_51單片機(jī)中斷系統(tǒng)結(jié)構(gòu)

    單片機(jī)中斷就是當(dāng)單片機(jī)正在執(zhí)行程序的時(shí)候,突然某個(gè)按鍵按下了(產(chǎn)生外部中斷),單片機(jī)就必須得去處
    發(fā)表于 01-10 17:29 ?1.2w次閱讀
    <b class='flag-5'>單片機(jī)</b><b class='flag-5'>中斷</b>系統(tǒng)介紹_51<b class='flag-5'>單片機(jī)</b><b class='flag-5'>中斷</b>系統(tǒng)結(jié)構(gòu)

    單片機(jī)外部中斷程序下載

    單片機(jī)外部中斷程序和電路圖,通過按鍵控制計(jì)數(shù)和清零操作
    發(fā)表于 05-21 10:57 ?0次下載
    <b class='flag-5'>單片機(jī)</b>外部<b class='flag-5'>中斷</b>程序下載

    51單片機(jī)中斷用法實(shí)例解析

    51單片機(jī)的外部中斷0引腳接一只按鍵,該按鍵通過上拉電阻接到電源,即沒有按鍵發(fā)生時(shí)單片機(jī)檢測(cè)到的
    發(fā)表于 12-12 15:31 ?2.5w次閱讀
    51<b class='flag-5'>單片機(jī)</b><b class='flag-5'>中斷</b>用法實(shí)例解析

    使用51單片機(jī)外部中斷按鍵控制LED閃爍的程序免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用51單片機(jī)外部中斷按鍵控制LED閃爍的程序免費(fèi)下載。
    發(fā)表于 07-05 17:41 ?27次下載
    使用51<b class='flag-5'>單片機(jī)</b>外部<b class='flag-5'>中斷</b><b class='flag-5'>按鍵控制</b>LED閃爍的程序免費(fèi)下載

    單片機(jī)--中斷系統(tǒng)實(shí)驗(yàn)

    實(shí)驗(yàn)?zāi)康暮腿蝿?wù)目的:利用“模塊化單片機(jī)教學(xué)實(shí)驗(yàn)平臺(tái)”,加深對(duì)單片機(jī)中斷系統(tǒng)的理解。任務(wù):利用單片機(jī)中斷系統(tǒng)完成程序設(shè)計(jì)。 實(shí)驗(yàn)內(nèi)容使用A
    發(fā)表于 11-05 13:20 ?11次下載
    <b class='flag-5'>單片機(jī)</b>--<b class='flag-5'>中斷</b>系統(tǒng)實(shí)驗(yàn)

    單片機(jī)按鍵調(diào)節(jié)時(shí)鐘

    按鍵調(diào)節(jié)時(shí)鐘的應(yīng)用實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康模ㄒ唬┻M(jìn)一步掌握數(shù)碼管的顯示控制;(二)進(jìn)一步掌握單片機(jī)的定時(shí)器中斷的應(yīng)用;(三)進(jìn)一步掌握定時(shí)器工作方式的控制
    發(fā)表于 11-11 11:06 ?76次下載
    <b class='flag-5'>單片機(jī)</b>:<b class='flag-5'>按鍵</b>調(diào)節(jié)時(shí)鐘

    單片機(jī)按鍵使用程序 (51單片機(jī)

    單片機(jī)獨(dú)立按鍵使用程序 (51單片機(jī))獨(dú)立按鍵單片機(jī)中很重要的一個(gè)器件,在這篇文章里,通過這個(gè)用獨(dú)立
    發(fā)表于 11-11 18:36 ?108次下載
    <b class='flag-5'>單片機(jī)</b><b class='flag-5'>按鍵</b>使用程序 (51<b class='flag-5'>單片機(jī)</b>)

    51單片機(jī)按鍵檢測(cè)--獨(dú)立按鍵與矩陣鍵盤

    按鍵可以說是51單片機(jī)項(xiàng)目開發(fā)的一個(gè)重要組件了,它是作為51單片機(jī)IO口輸入的一種重要方式。我們可以通過按鍵控制單片機(jī)執(zhí)行相應(yīng)的程序,得到我們想要得效果。51
    發(fā)表于 11-12 11:06 ?15次下載
    51<b class='flag-5'>單片機(jī)</b><b class='flag-5'>按鍵</b>檢測(cè)--獨(dú)立<b class='flag-5'>按鍵</b>與矩陣鍵盤

    PIC單片機(jī) 按鍵檢測(cè)識(shí)別

    目錄按鍵和PIC單片機(jī)一、按鍵二、按鍵的物理連接與檢測(cè)三、PIC16F18854單片機(jī)按鍵檢測(cè)及
    發(fā)表于 11-16 12:36 ?12次下載
    PIC<b class='flag-5'>單片機(jī)</b> <b class='flag-5'>按鍵</b>檢測(cè)識(shí)別

    瑞薩單片機(jī)之外部中斷實(shí)現(xiàn)按鍵的長(zhǎng)按與短按(二)

    瑞薩單片機(jī)通過外部中斷實(shí)現(xiàn)按鍵的長(zhǎng)按與短按
    發(fā)表于 11-22 14:21 ?20次下載
    瑞薩<b class='flag-5'>單片機(jī)</b>之外部<b class='flag-5'>中斷</b>實(shí)現(xiàn)<b class='flag-5'>按鍵</b>的長(zhǎng)按與短按(二)

    51單片機(jī) 中斷控制蜂鳴器

    51單片機(jī) 中斷控制蜂鳴器單片機(jī)通過使用外部中斷控制蜂鳴器。#include <reg51
    發(fā)表于 11-23 16:51 ?27次下載
    51<b class='flag-5'>單片機(jī)</b> <b class='flag-5'>中斷</b><b class='flag-5'>控制</b>蜂鳴器

    單片機(jī)獨(dú)立按鍵控制led燈程序

    單片機(jī)獨(dú)立按鍵控制LED燈程序 單片機(jī)獨(dú)立按鍵控制LED燈程序是一種簡(jiǎn)單而有趣的電子學(xué)習(xí)項(xiàng)目,它通常由一個(gè)單片機(jī)芯片、一個(gè)LED燈和一個(gè)
    的頭像 發(fā)表于 09-02 17:05 ?4635次閱讀
    主站蜘蛛池模板: 一本到午夜92版免费福利| 亚洲va久久久噜噜噜久久狠狠| 毛片三级在线观看| 在线观看三级视频| 永久毛片| 亚洲激情婷婷| 亚洲高清视频一区| 免费a网| 美国人与性xxxxxxx| 九九精品在线| 唐人呦一呦xxxx视频| 99久久伊人| 久久美女免费视频| 欧美资源在线观看| 欧美一级做一级做片性十三| 精品免费| 欧美天天视频| 特黄一级黄色片| 日韩在线看片| 日韩a免费| 免费看美女的逼| 免费观看黄色网址| 国产毛片农村妇女aa板| 午夜影院在线看| 久操视频网| 中文字幕一区二区三区在线观看| 国产拳头交一区二区| 四虎免费影院在线播放| 欧美成人精品一级高清片| 国产亚洲综合色就色| 天天躁夜夜躁狠狠躁躁| 午夜手机福利| 黄色网址中文字幕| 亚洲一卡2卡3卡4卡5卡乱码| 在线观看免费精品国产| www.亚洲日本| 欧美一区二区三区四区视频| www一级毛片| 天天综合网天天综合色不卡| 阿v视频在线观看免费播放| 1024国产欧美日韩精品|