RTL8762DW按键查询示例代码

本文介绍了如何使用嵌入式开发技术实现四个按键的GPIO读取,通过定义宏和函数,实现实时按键状态检测。通过Polling方式,持续监控并处理按键输入事件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实现现象:当按某个按键,将打印按键引脚。
在这里插入图片描述

#define KEY2_PIN_NUM 			P2_4
#define KEY2_GPIO_PIN 			GPIO_GetPin(KEY2_PIN_NUM)

#define KEY3_PIN_NUM 			P2_3
#define KEY3_GPIO_PIN 			GPIO_GetPin(KEY3_PIN_NUM)

//#define KEY4_PIN_NUM 			P3_5
//#define KEY4_GPIO_PIN 			GPIO_GetPin(KEY4_PIN_NUM)

#define KEY1_PIN_NUM 			P4_1
#define KEY1_GPIO_PIN 			GPIO_GetPin(KEY1_PIN_NUM)

#define KEY0_PIN_NUM 			P4_0
#define KEY0_GPIO_PIN 			GPIO_GetPin(KEY0_PIN_NUM)


static bool key0_sta = false;
static bool key1_sta = false;

static bool key2_sta = false;
static bool key3_sta = false;


void m_key_handler(bool *p_pre_key_sta,uint32_t key_gpio_pin)
{
    uint8_t temp;
    temp = GPIO_ReadInputDataBit(key_gpio_pin);
    if (  0 == temp)
    {
        if ( false==p_pre_key_sta[0]  )
        {
            DBG_DIRECT("0X%X-key push line:%d\n",key_gpio_pin,__LINE__);
            p_pre_key_sta[0] = true;
        }

    } else
    {
        p_pre_key_sta[0] = false;
    }
}
void polling_key_demo(void)
{

    Pad_Config(KEY0_PIN_NUM, PAD_PINMUX_MODE, PAD_IS_PWRON, PAD_PULL_UP, PAD_OUT_DISABLE, PAD_OUT_HIGH);
	Pad_Config(KEY1_PIN_NUM, PAD_PINMUX_MODE, PAD_IS_PWRON, PAD_PULL_UP, PAD_OUT_DISABLE, PAD_OUT_HIGH);
	
    Pad_Config(KEY2_PIN_NUM, PAD_PINMUX_MODE, PAD_IS_PWRON, PAD_PULL_UP, PAD_OUT_DISABLE, PAD_OUT_HIGH);
    Pad_Config(KEY3_PIN_NUM, PAD_PINMUX_MODE, PAD_IS_PWRON, PAD_PULL_UP, PAD_OUT_DISABLE, PAD_OUT_HIGH);

    Pinmux_Config(KEY0_PIN_NUM, DWGPIO);
    Pinmux_Config(KEY1_PIN_NUM, DWGPIO);
	
    Pinmux_Config(KEY2_PIN_NUM, DWGPIO);
    Pinmux_Config(KEY3_PIN_NUM, DWGPIO);

    RCC_PeriphClockCmd(APBPeriph_GPIO, APBPeriph_GPIO_CLOCK, ENABLE);

    GPIO_InitTypeDef GPIO_InitStruct;
    GPIO_StructInit(&GPIO_InitStruct);
    GPIO_InitStruct.GPIO_Pin    = KEY0_GPIO_PIN | KEY1_GPIO_PIN | KEY2_GPIO_PIN | KEY3_GPIO_PIN ;
    GPIO_InitStruct.GPIO_Mode   = GPIO_Mode_IN;
    GPIO_InitStruct.GPIO_ITCmd  = DISABLE;
    GPIO_Init(&GPIO_InitStruct);

    while (1)
    {
		m_key_handler(&key0_sta,KEY0_GPIO_PIN);
		m_key_handler(&key1_sta,KEY1_GPIO_PIN);
		
		m_key_handler(&key2_sta,KEY2_GPIO_PIN);
		m_key_handler(&key3_sta,KEY3_GPIO_PIN);
	
    }
}
现代人几乎人手都一大串的钥匙, 家里门锁钥匙、汽车钥匙、机车钥匙、防盗锁钥匙…等, 非常的重!!如果不小心遗失了, 重打钥匙也是一件很累人的事。蓝芽E-Lock应用, 利用现在人手一支的手机, 搭配APP与蓝芽遥控器方式来取代传统钥匙锁。减少了带一大串钥匙的麻烦, 遗失状况发生时, 再透过手机APP的使用者认证就可回复继续使用。 规格及功能 操作:下载APP软体, 搜寻柜锁并设定名称&密码, 无限授权其他人使用 增加遥控器控制功能,每组柜锁可以选配“16只遥控器(需配对)” 纪录:可纪录开关锁次数达2048笔 耗电量:约80uA 安全性:三道解密程序 忘记密码:锁内部有一颗还原KEY, 用来回复原厂设定 具有通讯传输资料加密解密,密码为16 bytes长度每byte资料范围为0x00~0xFF 1组主管理密码可以管理4组副使用者密码,副使用者不可更改主管理者密码与自身密码,做到完全防盗与超高安全性 ► 产品实体图 ► 方案方块图 ► 核心技术优势 CPU处理器 - ARM Cortex-M0@53MHz 更大的暂存容量 - 64KByte RAM - 256kByte Embedded Flash - 384kByte ROM - 2kByte Efuse 高速的传输能力与更好的RF敏感度 - Throughput:Up to 75KB/s - RX Sensitivity : -95dBm@3V 更小的包装与更低的功耗 - Chip Size : 5 x 5 mm - Power Consumption : Less than 1uA 更多的GPIOs(x16)设置 - Key Scan / IR (TX&RX) / Quad Dec / RTC / LPCOMP - I2C x 2 / SPI x 2 / Timer x 6 - ADC / GDMA / WDT - UART (Data、HCI、Log) 蓝牙规范 - Support BlueTooth 4.2 Low Energy ► 方案规格 蓝牙标准(Bluetooth Standard) - V4.2 LE Specifcation 调变方式(Modulation Scheme) - GFSK、MSK 资料速率(Data Rate) - 1Mbps、2Mbps 资料加密(Data Encryption) - AES 128 bit 射频频率范围(RF Frequency Range) - 2.402 ~ 2.480 GHz 功耗(Power Consumption) - RX : 17.5 mA - TX : 18.3 mA(0dbm) - 4us Wake-Up : 270uA - Sleep Timer On : 1uA - External Interrupts : 0.5uA 温度(Temperature) - Storage : -30 ~ 85°C - Operating : 0 ~ 70°C 方案来源于大大通。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值