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

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

RTT大賽作品:AB32VG1開發板—按鍵掃描

嵌入式開發 ? 來源:AB32VG1開發筆記 ? 作者:AB32VG1開發筆記 ? 2021-11-15 09:54 ? 次閱讀

【RTT大賽作品連載】AB32VG1開發板——按鍵掃描

1. 實驗目的

讓板載 三個用戶按鍵,通過掃描按鍵,打印按鍵值。

2. 開發板硬件平臺

poYBAGGGRgCAejjsABX3VGGeJIc209.png

按鍵硬件電路,可知,使用 按鍵要使用

PF1 —— S2

PF0 —— S3

PAS —— S4

poYBAGGGnvCAQcGHAABcdDRNTVI869.png

3. 軟件編寫

在 application 目錄下,新建 key.c 和 key.h

//key.c
/*
 * Copyright (c) 2006-2021, RT-Thread Development Team
 *
 * SPDX-License-Identifier: Apache-2.0
 *
 * Change Logs:
 * Date           Author       Notes
 * 2021-11-06     Administrator       the first version
 */
#include "key.h"
#include 
#include "board.h"

struct key_s
{
    uint8_t k0;
    uint8_t k1;
    uint8_t k2;
};
struct key_s button;

//PF0   PF1     PA2
static int key_init(void)
{
    button.k0 = rt_pin_get("PF.0");
    button.k1 = rt_pin_get("PF.1");

    rt_pin_mode(button.k0, PIN_MODE_INPUT_PULLUP);
    rt_pin_mode(button.k1, PIN_MODE_INPUT_PULLUP);

    rt_kprintf("key init\n");
    return 0;
}

#define KEY0_PRES 1
#define KEY1_PRES 2

static uint8_t btn_scan(uint8_t mode)
{
    static uint8_t key_up = 1;

    if(mode)
        key_up = 1;

    if(key_up && ((rt_pin_read(button.k0) == PIN_LOW) || (rt_pin_read(button.k1) == PIN_LOW)))
    {
        rt_thread_mdelay(10);
        key_up = 0;
        if(rt_pin_read(button.k0) == PIN_LOW)
            return KEY0_PRES;
        else if(rt_pin_read(button.k1) == PIN_LOW)
            return KEY1_PRES;
    }else if((rt_pin_read(button.k0) == PIN_HIGH) && (rt_pin_read(button.k1) == PIN_HIGH))
        key_up = 1;

    return 0;
}

static void btn_thread_entry(void* p)
{
    uint8_t byn_value = 0;

    while(1)
    {
        byn_value = btn_scan(0);
        switch(byn_value)
        {
            case KEY0_PRES:
                rt_kprintf("key0 pushed\n");
                break;
            case KEY1_PRES:
                rt_kprintf("key1 pushed\n");
                break;
            default:
                break;
        }
        rt_thread_mdelay(100);
    }
}

static int Thread_btn(void)
{
    rt_thread_t thread = RT_NULL;

    key_init();
    thread = rt_thread_create("button", btn_thread_entry, RT_NULL, 512, 11, 10);
    if(thread == RT_NULL)
    {
        rt_kprintf("Thread_btn Init ERROR");
        return RT_ERROR;
    }
    rt_thread_startup(thread);
}

INIT_APP_EXPORT(Thread_btn);


//key.h
/*
 * Copyright (c) 2006-2021, RT-Thread Development Team
 *
 * SPDX-License-Identifier: Apache-2.0
 *
 * Change Logs:
 * Date           Author       Notes
 * 2021-11-06     Administrator       the first version
 */
#ifndef APPLICATIONS_KEY_H_
#define APPLICATIONS_KEY_H_


#endif /* APPLICATIONS_KEY_H_ */

修改main.c

/*
 * Copyright (c) 2020-2021, Bluetrum Development Team
 *
 * SPDX-License-Identifier: Apache-2.0
 *
 * Change Logs:
 * Date           Author       Notes
 * 2020/12/10     greedyhao    The first version
 */

/**
 * Notice!
 * All functions or data that are called during an interrupt need to be in RAM.
 * You can do it the way exception_isr() does.
 */

#include 
#include "board.h"

int main(void)
{
    rt_kprintf("Hello, world\n");

    while (1)
    {
        rt_thread_mdelay(500);
        rt_thread_mdelay(500);
    }
}

4. 程序編譯下載

編譯程序,點擊小錘子即可。

pYYBAGGGRnmADAsxAAKXmT_LCcc372.png

下載程序

打開我們下載的Downloader軟件,雙擊Downloader.exe

配置連接串口,千萬不要搞錯串口號哦。

選擇工程目錄下的\Debug\rtthread.dcf,這里我的完整目錄是

D:\RT-ThreadStudio\workspace\ab32vg1_demo\Debug\rtthread.dcf

點擊開始即可下載成功

5. 實驗現象:

download 串口打印 msh 控制臺信息。

按鍵觸發打印,不支持連按。

poYBAGGGoY6AMvHBAACVkF7P9kU341.png

6. 總結

目前是通過引腳輪詢讀取來實現按鍵掃描,后面可以試試IO中斷的方式實現,哈哈。

編輯:fqj

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 單片機
    +關注

    關注

    6037

    文章

    44558

    瀏覽量

    635298
  • 開發板
    +關注

    關注

    25

    文章

    5050

    瀏覽量

    97471
  • RTT
    RTT
    +關注

    關注

    0

    文章

    65

    瀏覽量

    17130
  • 中科藍訊
    +關注

    關注

    9

    文章

    57

    瀏覽量

    9880
收藏 人收藏

    評論

    相關推薦

    藍橋杯物聯網開發板硬件組成

    第一節開發板簡介物聯網設計與開發競賽實訓平臺由藍橋杯大賽技術支持單位北京四梯科技有限公司設計和生產,該產品可用于參加藍橋杯物聯網設計與開發賽道的競賽實訓或院校相關課程的實踐教學環節。
    的頭像 發表于 12-22 21:30 ?303次閱讀
    藍橋杯物聯網<b class='flag-5'>開發板</b>硬件組成

    【RA8D1試用活動】RA8D1B-CPKCOR開發板移植linux

    【RA8D1試用活動】RA8D1B-CPKCOR開發板移植linux
    的頭像 發表于 11-16 01:02 ?232次閱讀
    【RA8D<b class='flag-5'>1</b>試用活動】RA8D<b class='flag-5'>1</b>B-CPKCOR<b class='flag-5'>開發板</b>移植linux

    正點原子fpga開發板不同型號

    正點原子作為國內領先的FPGA開發板供應商,其產品線覆蓋了從入門級到高端應用的各個領域。這些開發板不僅適用于學術研究,還廣泛應用于工業控制、通信、圖像處理等多個領域。 1. 入門級開發板
    的頭像 發表于 11-13 09:30 ?705次閱讀

    【干貨】性價比拉滿!HK32F407VG開發板介紹

    開發板簡介開發板是基于航順芯片公司F4系列HK32F407VGT7芯片的一款開發板,Cortex-M4內核,最高主頻168MHz,內置1MKBFlash和256KBSRAM,SDIO、
    的頭像 發表于 11-08 13:27 ?228次閱讀
    【干貨】性價比拉滿!HK32F407<b class='flag-5'>VG</b><b class='flag-5'>開發板</b>介紹

    如何使用Air780E開發板?看這篇就夠了!

    ? 一、綜述 CORE-AIR780E 開發板是合宙通信推出的基于 Air780E 模組所開發的,包含電源,SIM 卡,USB,天線,音頻等必要功能的最小硬件系統。以方便用戶在設計前期
    的頭像 發表于 10-23 17:07 ?403次閱讀
    如何使用Air780E<b class='flag-5'>開發板</b>?看這篇就夠了!

    51開發板芯片資料

    51開發板芯片資料
    發表于 09-18 09:29 ?1次下載

    linux開發板如何編譯curl

    在Linux開發板上編譯 curl 庫通常涉及到幾個步驟,包括準備開發環境、下載源代碼、配置編譯選項以及執行編譯和安裝過程。以下是一個基本的指南,幫助你在Linux開發板上編譯 curl 。
    的頭像 發表于 08-30 15:33 ?629次閱讀

    ElfBoard技術貼|在NXP源碼基礎上適配ELF 1開發板按鍵功能

    ,將以按鍵功能的適配作為具體示例,深入解析整個適配的流程。一、準備工作NXP源碼路徑:ELF1開發板資料包\07-NXP原廠資料\07-1NXP官方源碼\linux-
    的頭像 發表于 07-10 09:54 ?611次閱讀
    ElfBoard技術貼|在NXP源碼基礎上適配ELF <b class='flag-5'>1</b><b class='flag-5'>開發板</b>的<b class='flag-5'>按鍵</b>功能

    米爾NXP i.MX 93開發板的Qt開發指南

    1.概述Qt是一個跨平臺的圖形應用開發框架,被應用在不同尺寸設備和平臺上,同時提供不同版權版本供用戶選擇。米爾NXPi.MX93開發板(MYD-LMX9X開發板)使用Qt6.5版本進行
    的頭像 發表于 06-07 08:01 ?1741次閱讀
    米爾NXP i.MX 93<b class='flag-5'>開發板</b>的Qt<b class='flag-5'>開發</b>指南

    玩轉PSoC 6 RTT積木式開發套件,實現毫米波雷達等實用功能

    本期英飛凌手工課,將由來自英飛凌的工程師Jenson給大家帶來PSoC62withCAPSENSEevaluationkit(下稱PSoC6RTT開發板)和其積木式開發套件的全面介紹。讓我們跟著
    的頭像 發表于 03-20 08:35 ?984次閱讀
    玩轉PSoC 6 <b class='flag-5'>RTT</b>積木式<b class='flag-5'>開發</b>套件,實現毫米波雷達等實用功能

    fpga開發板是什么?fpga開發板有哪些?

    FPGA開發板是一種基于FPGA(現場可編程門陣列)技術的開發平臺,它允許工程師通過編程來定義和配置FPGA芯片上的邏輯電路,以實現各種數字電路和邏輯功能。FPGA開發板通常包括FPGA芯片、時鐘模塊、電源模塊、輸入輸出接口等組
    的頭像 發表于 03-14 18:20 ?2025次閱讀

    fpga開發板使用教程

    FPGA開發板的使用教程主要包括以下幾個關鍵步驟。
    的頭像 發表于 03-14 15:50 ?1139次閱讀

    ELF 1技術貼|在NXP源碼基礎上適配開發板按鍵功能

    至ELF1開發板。接下來,我們將詳細闡述適配過程中關于按鍵功能實現的完整步驟。值得一提的是,ELF1開發板上預置了標識為K
    的頭像 發表于 03-08 16:58 ?967次閱讀
    ELF <b class='flag-5'>1</b>技術貼|在NXP源碼基礎上適配<b class='flag-5'>開發板</b>的<b class='flag-5'>按鍵</b>功能

    fpga開發板與linux開發板區別

    FPGA開發板與Linux開發板是兩種不同的硬件開發平臺,各自具有不同的特點和應用場景。在以下的文章中,我將詳細介紹FPGA開發板和Linux開發板
    的頭像 發表于 02-01 17:09 ?2259次閱讀

    DIY個人的Linux開發板教程

    作者簡介:大佬已在硬創社開源了近50款開發板,動手能力極強,于去年年底開始接觸學習Linux,并由全志V3s、F1C200S等芯片開始上手DIY個人的Linux開發板。
    的頭像 發表于 01-07 09:52 ?2091次閱讀
    DIY個人的Linux<b class='flag-5'>開發板</b>教程
    主站蜘蛛池模板: 一区视频| 国产又爽又黄又粗又大| 又黄又粗暴的120秒免费gif视频| 日操| 西西人体www303sw大胆高清| 在线播放亚洲视频| 免费高清特级毛片| 人人干人人艹| 成年人三级视频| 老师叫我下面含着精子去上课| 伊人久久大香线蕉资源| 三区在线观看| 狠狠色噜噜狠狠狠狠狠色综合久久| 国产精品伦视频观看免费| 天天添天天干| 欧美激情一欧美吧| 中文在线三级中文字幕| 久操福利视频| 手机在线免费视频| 丁香六月激情综合| 亚洲黄色色图| xxx亚洲日本| 69 hd xxxx日本| 日韩乱轮| 综合黄色| 高清一级| 怡红院黄色| 成人性生活免费视频| 女人精69xxxxxx| 日本黄色小视频| 伊人黄色| 美女扒开尿口给男人桶动态图 | 欧美在线成人午夜影视| 老师你好滑下面好湿h | 亚洲最大的黄色网址| 国产jzjzjz免费大全视频| h在线网站| 四虎4hu影库永久地址| 天天拍夜夜操| 亚洲香蕉久久| 午夜在线影院|