Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
操作系统
KEY_按键
有什么足够体现操作系统优越性的按键检测方式
发布于 2023-12-15 00:27:07 浏览:531
订阅该版
如题,以下是我原来使用的,从逐飞科技那抄的,一个是信号量,一个是邮箱 ```c #define KEY_1 GET_PIN(C, 5) // 定义主板上按键对应引脚 #define KEY_2 GET_PIN(A, 15) #define KEY_3 GET_PIN(A, 0) #define KEY_4 GET_PIN(A, 1) //开关状态变量 rt_uint8_t key1_status = 1; rt_uint8_t key2_status = 1; rt_uint8_t key3_status = 1; rt_uint8_t key4_status = 1; //上一次开关状态变量 rt_uint8_t key1_last_status; rt_uint8_t key2_last_status; rt_uint8_t key3_last_status; rt_uint8_t key4_last_status; //开关信号量 static rt_sem_t key1_sem = RT_NULL; static rt_sem_t key2_sem = RT_NULL; static rt_sem_t key3_sem = RT_NULL; static rt_sem_t key4_sem = RT_NULL; rt_ubase_t keycode=0; static void button_entry(void *parameter) { //保存按键状态 key1_last_status = key1_status; key2_last_status = key2_status; key3_last_status = key3_status; key4_last_status = key4_status; //读取当前按键状态 key1_status = rt_pin_read(KEY_1); key2_status = rt_pin_read(KEY_2); key3_status = rt_pin_read(KEY_3); key4_status = rt_pin_read(KEY_4); //检测到按键按下之后并放开 释放一次信号量 if(key1_status && !key1_last_status) { rt_sem_release(key1_sem); rt_mb_send(key_mailbox, KEY_1_ok); } if(key2_status && !key2_last_status) { rt_sem_release(key2_sem); rt_mb_send(key_mailbox, KEY_2_ok); } if(key3_status && !key3_last_status) { rt_sem_release(key3_sem); rt_mb_send(key_mailbox, KEY_3_ok); } if(key4_status && !key4_last_status) { rt_sem_release(key4_sem); rt_mb_send(key_mailbox, KEY_4_ok); } } rt_timer_t timer_button=RT_NULL; rt_mailbox_t key_mailbox=RT_NULL; int button_init(void)//按键初始化 { rt_pin_mode(KEY_1, PIN_MODE_INPUT_PULLUP );//上拉输入 rt_pin_mode(KEY_2, PIN_MODE_INPUT_PULLUP );//上拉输入 rt_pin_mode(KEY_3, PIN_MODE_INPUT_PULLDOWN );//下拉输入 rt_pin_mode(KEY_4, PIN_MODE_INPUT_PULLUP );//上拉输入 key1_sem = rt_sem_create("key1", 0, RT_IPC_FLAG_FIFO); //创建按键的信号量,当按键按下就释放信号量,在需要使用按键的地方获取信号量即可 key2_sem = rt_sem_create("key2", 0, RT_IPC_FLAG_FIFO); key3_sem = rt_sem_create("key3", 0, RT_IPC_FLAG_FIFO); key4_sem = rt_sem_create("key4", 0, RT_IPC_FLAG_FIFO); //创建邮箱 key_mailbox = rt_mb_create("key_mb",5, RT_IPC_FLAG_FIFO); //创建线程 timer_button = rt_timer_create("button", button_entry, RT_NULL, 50, RT_TIMER_FLAG_PERIODIC); if(RT_NULL != timer_button) { rt_timer_start(timer_button); } return 0; } ```
查看更多
7
个回答
默认排序
按发布时间排序
oxlm
2023-12-15
这家伙很懒,什么也没写!
有多少个按键,搞多少个信号量,完全没必要,除了浪费资源,看不出有啥优势
没有认真
2023-12-15
这家伙很懒,什么也没写!
按键检测还是用简单一点儿的,没有太大必要。就类似于,“如何体现操作系统的LED转换...”
哈喽你好啊
2023-12-16
这家伙很懒,什么也没写!
按键体现不出操作系统的优越性,因为本身足够简单,复杂的驱动才能体现
winfeng
认证专家
2023-12-17
这家伙很懒,什么也没写!
入门级
道友
2023-12-17
这家伙很懒,什么也没写!
按键检测没什么感觉
CrazyH
2023-12-18
这家伙很懒,什么也没写!
按键实在没啥好说的
梦笑真美
2023-12-18
这家伙很懒,什么也没写!
按键没啥体现的,太简单了
撰写答案
登录
注册新账号
关注者
0
被浏览
531
关于作者
djjznb
这家伙很懒,什么也没写!
提问
3
回答
2
被采纳
0
关注TA
发私信
相关问题
1
操作系统下的(软件)看门狗怎么应用
2
在电机驱动领域有必要跑RT-Thread吗?
3
STM32G070工程不能运行?
4
创建静态任务和动态任务
5
在rt thread下如何流畅驱动音频(PWM)? 有思路、方案或现成案例更好!
6
关于操作系统分类,抢占式与合作式,rtthread属于哪一类
7
rtt不断复位,找不到排查方向
8
请问可不可以在使用qemu模拟出Cortex-A53的架构来运行rt-thread
9
如何将RTT移植到自制的CH32V307板上?
10
产品兼容适配相关问题
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
RTT 源码分析笔记——互斥量篇
2
[E/app.filesystem] SD card mount to '/sdcard' failed!
3
单片机也能聊天?RT-Thread上跑通大语言模型
4
【RT-Thread】【ci】【scons】将ci.attachconfig.yml和scons结合使用
5
Rt-thread中OTA下载后,bootloader不搬程序
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
DMA
USB
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
I2C_IIC
ESP8266
UART
WIZnet_W5500
ota在线升级
cubemx
PWM
flash
freemodbus
BSP
packages_软件包
潘多拉开发板_Pandora
定时器
ADC
flashDB
GD32
socket
编译报错
中断
Debug
rt_mq_消息队列_msg_queue
keil_MDK
SFUD
msh
ulog
C++_cpp
MicroPython
本月问答贡献
三世执戟
5
个答案
1
次被采纳
KunYi
4
个答案
1
次被采纳
RTT_逍遥
3
个答案
1
次被采纳
xiaorui
1
个答案
1
次被采纳
JonasWen
1
个答案
1
次被采纳
本月文章贡献
出出啊
1
篇文章
3
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
1
篇文章
3
次点赞
crystal266
2
篇文章
2
次点赞
whj467467222
2
篇文章
2
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部