STM32 键盘驱动代码:初始化和按键读取函数
这段代码是一个键盘输入的初始化函数和读取按键编号的函数。
首先是 Keybord_Init 函数,用于初始化键盘输入相关的引脚和配置。函数中使用了两个 GPIO_InitTypeDef 结构体变量,分别用于配置输入引脚和输出引脚。具体步骤如下:
- 使能 GPIOB 外设的时钟。
- 配置输入引脚的模式为上拉输入。
- 配置输入引脚的引脚号,这里包括 GPIOB 的引脚 4、5、6、7。
- 配置输入引脚的速度为 50MHz。
- 初始化 GPIOB 的输入引脚配置。
- 配置输出引脚的模式为推挽输出。
- 配置输出引脚的引脚号,这里包括 GPIOB 的引脚 8、9、10、11。
- 配置输出引脚的速度为 50MHz。
- 初始化 GPIOB 的输出引脚配置。
- 将 GPIOB 的引脚 8、9、10、11 设置为高电平。
接下来是 Keybord_GetNum 函数,用于读取按键的编号。该函数会依次扫描键盘的四行四列,并判断按键是否按下,最终返回按下的按键编号。具体步骤如下:
- 定义一个无符号 8 位整型变量 KeyBord_Num,并初始化为 0。
- 第一行按键扫描:将 GPIOB 的引脚 11 设置为低电平,其他引脚设置为高电平。
- 判断 GPIOB 的引脚 7 是否为低电平(按键按下)。
- 如果是低电平,延时 20 毫秒,然后通过一个 while 循环等待按键释放。
- 再次延时 20 毫秒,将 KeyBord_Num 的值设为 1。
- 类似地,判断 GPIOB 的引脚 6、5、4 是否为低电平,分别设置 KeyBord_Num 的值 为 2、3、11。
- 第二行、第三行、第四行按键扫描:依次将 GPIOB 的引脚 10、9、8 设置为低电平,其他引脚设置为高电平。
- 类似地,判断 GPIOB 的引脚 7、6、5、4 是否为低电平,分别设置 KeyBord_Num 的值 为 4、5、6、12、7、8、9、13、14、10、15、16。
- 返回 KeyBord_Num 作为函数的结果。
总体上,这段代码实现了一个基于 GPIO 的键盘输入功能,通过扫描键盘的行和列,判断按键是否按下,并返回按下的按键编号。
原文地址: http://www.cveoy.top/t/topic/kUc 著作权归作者所有。请勿转载和采集!