【RTT大賽作品連載】AB32VG1開發板——按鍵掃描
1. 實驗目的
讓板載 三個用戶按鍵,通過掃描按鍵,打印按鍵值。
2. 開發板硬件平臺

按鍵硬件電路,可知,使用 按鍵要使用
PF1 —— S2
PF0 —— S3
PAS —— S4

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. 程序編譯下載
編譯程序,點擊小錘子即可。

下載程序
打開我們下載的Downloader軟件,雙擊Downloader.exe
配置連接串口,千萬不要搞錯串口號哦。
選擇工程目錄下的\Debug\rtthread.dcf,這里我的完整目錄是
D:\RT-ThreadStudio\workspace\ab32vg1_demo\Debug\rtthread.dcf
點擊開始即可下載成功
5. 實驗現象:
download 串口打印 msh 控制臺信息。
按鍵觸發打印,不支持連按。

6. 總結
目前是通過引腳輪詢讀取來實現按鍵掃描,后面可以試試IO中斷的方式實現,哈哈。
編輯:fqj
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
單片機
+關注
關注
6076文章
45494瀏覽量
670244 -
開發板
+關注
關注
26文章
6289瀏覽量
118039 -
RTT
+關注
關注
0文章
66瀏覽量
18273 -
中科藍訊
+關注
關注
10文章
66瀏覽量
10661
發布評論請先 登錄
相關推薦
熱點推薦
【獲獎名單】2025開發板評測大賽優秀開發者、最受歡迎開發板公布
各位發燒友們,大家好!2025開發板試用評測大賽已圓滿落幕。經過廠商與發燒友平臺的共同評選,優秀作品及人選名單現已評選完成,共選出24位優秀作品開發
發表于 11-21 09:31
[投票評選]2025電子發燒友開發板測評大賽--最受歡迎開發板
call吧,助力開發者生態持續成長!
投票入口:
2025電子發燒友開發板測評大賽--最受歡迎開發板
本次投票結果,將作為平臺后續挑選試用產品重要參考,歡迎大家踴躍參加哦~
發表于 10-13 16:25
【作品合集】飛凌嵌入式OK527N-C開發板測評
Core_DSC280025C開發板測評作品合集
第十六期合集 : 潤開鴻HH-SCDAYU800A開發板測評作品合集
第十七期合集 : 視美泰M-K
發表于 09-22 15:54
【作品合集】視美泰M-K1HSE、3568開發板測評
視美泰M-K1HSE、3568開發板測評作品合集
產品介紹:
M-KIHSE開發板:
M-KIHSE開發板是一款基于進選時空K
發表于 09-22 10:32
【作品合集】米爾RK3576開發板測評
米爾RK3576開發板測評作品合集
產品介紹:
RK3576 是瑞芯微一款面向AI市場推出的高性能處理器,它配備了四核Cortex-A72和四
核Cortex-A53 的 CPU,集成了6TOPS
發表于 09-11 10:19
【作品合集】沁恒微電子CH585開發板測評
沁恒微電子CH585開發板測評作品合集
產品介紹:
CH585是集成BLE無線通訊和高速USB及NFC的RISC-V MCU/SoC。片上集成了2Mbps低功耗藍牙BLE通訊模塊、USB全速控制器
發表于 09-08 10:38
【作品合集】創龍科技TLT113/TL3562-MiniEVM開發板測評
試用體驗】--按鍵功能
作者:jf_01200635【創龍TL3562-MiniEVM開發板試用體驗】1、從系統啟動卡制作開始【創龍TL3562-MiniEVM開發板試用體驗】2、運行
發表于 09-02 11:25
【免費試用】開發板評測大賽開啟!OH 、RISC-V、Rockchip頂級開發板等你試用~
技術人的狂歡,開發者的盛宴!2025年最值得期待的硬核賽事——電子發燒友開發板評測大賽正式啟動!無論你是開源生態的探索者、芯片架構的極客,還是物聯網領域的創新達人,本次大賽三
一個不錯的活動:電子發燒友開發板評測大賽
“ ?湊齊了 OpenHarmony,Risc-V,Rocketchip 三大賽道 21 款來自不同廠家的開發板,可免費申請試用。 ” ? 電子發燒友開發板評測大賽正式啟動!無論你是開
2025電子發燒友開發板評測大賽開啟!三大賽道火力全開,頂級開發板等你來戰!
技術人的狂歡,開發者的盛宴!
2025年最值得期待的硬核賽事——電子發燒友開發板評測大賽正式啟動!無論你是開源生態的探索者、芯片架構的極客,還是物聯網領域的創新達人,本次大賽三
發表于 05-15 15:09
RTT大賽作品:AB32VG1開發板—按鍵掃描
評論