【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
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
单片机
+关注
关注
6078文章
45589浏览量
673879 -
开发板
+关注
关注
26文章
6433浏览量
121075 -
RTT
+关注
关注
0文章
66浏览量
18340 -
中科蓝讯
+关注
关注
10文章
68浏览量
10720
发布评论请先 登录
相关推荐
热点推荐
【获奖名单】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开发板—按键扫描
评论