STM32F1x系列——按键输入实验
来源:互联网 发布:淘宝裂变有危险吗 编辑:程序博客网 时间:2024/06/01 21:42
今天学习了STM32F1x系列的按键输入实验,具体上分为三个步骤:
(1)使能按键对应IO口时钟,调用函数:RCC_APB2PeriphClockCmd()
(2)初始化IO模式:上拉/下拉输入。调用函数:GPIO_Init()
(3)扫描IO口电平(库函数/寄存器/位操作)
主要说一下其中的按键扫描,思路图如下:
(1)按键扫描(支持连续按)的一般思路代码:
u8 KEY_Scan(void){if(KEY按下){delay_ms(10) ; //延时10-20ms 用来去抖if(KEY确实按下){return KEY_Value ;}return 无效值 ;}}
(2)按键扫描(不支持连续按)的一般思路代码:(就是说按键按下了,没有松开只能算按了一次)
在这里会用到c语言里的关键字:static
a. static声明的局部变量,存储在静态存储区
b. 它在函数调用结束之后,不会被释放,它的值会一直保留下来
c. 所以可以说static声明的局部变量,具有记忆功能
u8 KEY_Scan(void){static u8 key_up = 1 ;if(key_up&&KEY按下){dealy_ms(10) ; //延时,防抖key_up = 0 ; //标记这次key已经按下if(KEY确实按下){return KEY_Value ;}}else if(KEY没有按下){return 没有按下 ;}}
(3)按键扫描(两种模式合二为一)的一般思路:
u8 KEY_Scan(u8 mode){static u8 key_up = 1 ;if(mode == 1){key_up = 1 ; //支持连续按}if(key_up&&KEY按下){dealy_ms(10) ; //延时,防抖key_up = 0 ; //标记这次key已经按下if(KEY确实按下){return KEY_Value ;}}else if(KEY没有按下){return 没有按下 ;}}对函数传入的参数进行判断,就可以将两种模式合二为一,放入一个函数中去处理。
阅读全文
0 0
- STM32F1x系列——按键输入实验
- STM32F1x系列——跑马灯实验-库函数
- STM32F1x系列——12864
- STM32F1x系列——GPIO操作
- STM32F1x系列——串口通信
- STM32F1x系列——外部中断
- STM32F1x系列——定时器中断
- STM32F1x系列——Flash 模拟 EEPROM
- 20170725——按键输入实验
- 按键实验(GPIO输入)
- GPIO 输入—按键检测
- 第12章 GPIO输入-按键检测—零死角玩转STM32-F429系列
- STM32-按键输入实验学习笔记
- STM32学习笔记--按键输入实验
- 记录一次失败的按键输入实验
- STM32——按键输入之static
- STM32学习笔记——按键输入
- 跟我学STM32107RC--- STM32中的按键输入实验总结
- 直方图均衡化处理
- IP路由转发
- JavaScript中eval()函数用法详解
- 05-S3C2440学习之内核(移植)linux3.4.2移植(3)之支持DM9000C网卡及修改支持串口2
- PAT(BL)1003_我要通过
- STM32F1x系列——按键输入实验
- Unable to find a single main class from the following candidates
- 江学院-Problem K: qwb与小数
- java反射的field.get(null)
- php时间获取
- codeforces 812 C. Sagheer and Nubian Market(二分答案)
- opencv sample导入到Android studio(tutorial部分)
- 【C】控制台限时输入控制。。
- toolbar和popupwindow的使用