矩阵按键c语言代码,STM32 >> 矩阵键盘(代码风格优美,简明易懂)

本文提供了一段用C语言编写的STM32矩阵键盘初始化和按键检测代码,包括GPIO配置和抖动消除,适用于8x4矩阵键盘。
摘要由CSDN通过智能技术生成

/**

******************************************************************************

* @file bsp_key.c

* @author Waao

* @version V1.0.0

* @date 20-Dec-2018

* @brief This file contains some board support package's functions for the KEY.

*

******************************************************************************

* @attention

*

* None

*

******************************************************************************

*/

#include

/**

* @brief Initialize the RCC of the 8 GPIO line.

* @param None

* @retval None

*/

void GPIO_RCC_Config(void)

{

RCC_AHB1PeriphClockCmd(C1_GPIO_CLK, ENABLE);

RCC_AHB1PeriphClockCmd(C2_GPIO_CLK, ENABLE);

RCC_AHB1PeriphClockCmd(C3_GPIO_CLK, ENABLE);

RCC_AHB1PeriphClockCmd(C4_GPIO_CLK, ENABLE);

RCC_AHB1PeriphClockCmd(R1_GPIO_CLK, ENABLE);

RCC_AHB1PeriphClockCmd(R2_GPIO_CLK, ENABLE);

RCC_AHB1PeriphClockCmd(R3_GPIO_CLK, ENABLE);

RCC_AHB1PeriphClockCmd(R4_GPIO_CLK, ENABLE);

}

/**

* @brief Initialize the Row out Column in.

* @param None

* @retval None

*/

void ROCI_GPIO_Config(void)

{

GPIO_InitTypeDef GPIO_Structure;

//============ Column =============

<
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当使用STM32F103C8T6微控制器编写补抓矩阵键盘按键的C语言代码时,你需要了解以下几个步骤: 1. 配置引脚:首先,你需要配置STM32的引脚作为输入引脚,用于连接矩阵键盘的行和列。你可以使用GPIO库来配置引脚。 2. 初始化矩阵键盘:在代码中,你需要初始化矩阵键盘的行和列。这可以通过设置引脚的输入/输出模式和上拉/下拉电阻来实现。 3. 扫描按键:接下来,你需要编写代码来扫描矩阵键盘的按键状态。这可以通过循环遍历每个行和列的组合,并检查相应的引脚状态来实现。 4. 处理按键事件:一旦检测到按键按下或释放事件,你可以执行相应的操作。例如,可以在按键按下时发送信号或执行特定的功能。 下面是一个简单的示例代码,用于演示如何使用STM32F103C8T6微控制器编写补抓矩阵键盘按键的C语言代码: ```c #include "stm32f10x.h" // 定义矩阵键盘的行和列数 #define ROWS 4 #define COLS 4 // 定义矩阵键盘的行和列引脚 GPIO_TypeDef* row_ports[ROWS] = {GPIOA, GPIOA, GPIOA, GPIOA}; uint16_t row_pins[ROWS] = {GPIO_Pin_0, GPIO_Pin_1, GPIO_Pin_2, GPIO_Pin_3}; GPIO_TypeDef* col_ports[COLS] = {GPIOB, GPIOB, GPIOB, GPIOB}; uint16_t col_pins[COLS] = {GPIO_Pin_0, GPIO_Pin_1, GPIO_Pin_2, GPIO_Pin_3}; // 初始化矩阵键盘 void matrix_keypad_init() { // 配置行引脚为输入模式,上拉电阻 for (int i = 0; i < ROWS; i++) { GPIO_InitTypeDef GPIO_InitStruct; GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IPU; GPIO_InitStruct.GPIO_Pin = row_pins[i]; GPIO_Init(row_ports[i], &GPIO_InitStruct); } // 配置列引脚为输出模式 for (int i = 0; i < COLS; i++) { GPIO_InitTypeDef GPIO_InitStruct; GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStruct.GPIO_Pin = col_pins[i]; GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(col_ports[i], &GPIO_InitStruct); } } // 扫描按键 void matrix_keypad_scan() { for (int i = 0; i < ROWS; i++) { // 将当前行引脚设置为低电平 GPIO_ResetBits(row_ports[i], row_pins[i]); for (int j = 0; j < COLS; j++) { // 检查列引脚状态 if (GPIO_ReadInputDataBit(col_ports[j], col_pins[j]) == 0) { // 处理按键按下事件 // TODO: 执行相应的操作 // 延时一段时间,以避免按键抖动 delay(100); // 等待按键释放 while (GPIO_ReadInputDataBit(col_ports[j], col_pins[j]) == 0); // 处理按键释放事件 // TODO: 执行相应的操作 } } // 将当前行引脚设置为高电平 GPIO_SetBits(row_ports[i], row_pins[i]); } } int main(void) { // 初始化矩阵键盘 matrix_keypad_init(); while (1) { // 扫描按键 matrix_keypad_scan(); } } ``` 请注意,这只是一个简单的示例代码,你可能需要根据你的具体需求进行修改和扩展。同时,你还需要根据你的硬件连接和引脚配置进行适当的调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值