这段代码是一个键盘输入的初始化函数和读取按键编号的函数。

首先是 Keybord_Init 函数,用于初始化键盘输入相关的引脚和配置。函数中使用了两个 GPIO_InitTypeDef 结构体变量,分别用于配置输入引脚和输出引脚。具体步骤如下:

  1. 使能 GPIOB 外设的时钟。
  2. 配置输入引脚的模式为上拉输入。
  3. 配置输入引脚的引脚号,这里包括 GPIOB 的引脚 4、5、6、7。
  4. 配置输入引脚的速度为 50MHz。
  5. 初始化 GPIOB 的输入引脚配置。
  6. 配置输出引脚的模式为推挽输出。
  7. 配置输出引脚的引脚号,这里包括 GPIOB 的引脚 8、9、10、11。
  8. 配置输出引脚的速度为 50MHz。
  9. 初始化 GPIOB 的输出引脚配置。
  10. 将 GPIOB 的引脚 8、9、10、11 设置为高电平。

接下来是 Keybord_GetNum 函数,用于读取按键的编号。该函数会依次扫描键盘的四行四列,并判断按键是否按下,最终返回按下的按键编号。具体步骤如下:

  1. 定义一个无符号 8 位整型变量 KeyBord_Num,并初始化为 0。
  2. 第一行按键扫描:将 GPIOB 的引脚 11 设置为低电平,其他引脚设置为高电平。
  3. 判断 GPIOB 的引脚 7 是否为低电平(按键按下)。
    • 如果是低电平,延时 20 毫秒,然后通过一个 while 循环等待按键释放。
    • 再次延时 20 毫秒,将 KeyBord_Num 的值设为 1。
  4. 类似地,判断 GPIOB 的引脚 6、5、4 是否为低电平,分别设置 KeyBord_Num 的值 为 2、3、11。
  5. 第二行、第三行、第四行按键扫描:依次将 GPIOB 的引脚 10、9、8 设置为低电平,其他引脚设置为高电平。
  6. 类似地,判断 GPIOB 的引脚 7、6、5、4 是否为低电平,分别设置 KeyBord_Num 的值 为 4、5、6、12、7、8、9、13、14、10、15、16。
  7. 返回 KeyBord_Num 作为函数的结果。

总体上,这段代码实现了一个基于 GPIO 的键盘输入功能,通过扫描键盘的行和列,判断按键是否按下,并返回按下的按键编号。

STM32 键盘驱动代码:初始化和按键读取函数

原文地址: http://www.cveoy.top/t/topic/kUc 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录