STMCU小助手
发布时间:2022-11-24 15:39
|
按键扫描的基本原理5 H& i m: R+ z% Z 按键信号的识别:一般来说,按键的两个引脚的一端通过电阻上拉到高电平,另一端则接地。接上拉电阻时在没有按键按下的时候,输入引脚为高电平,当有按键按下,输入引脚则为低电平;接下拉电阻时在没有按键按下的时候,输入引脚为低电平,当有按键按下,输入引脚则为高电平。; Q( |5 L; t/ E+ V; q( t0 G 通过反复读取按键输入引脚的信号,然后识别高低电平来判断是否有按键触发。 为什么去抖动:按键的输入引脚有低电平产生不代表一定是有按键按下,也许是干扰信号,因此,需要通过去抖动处理,将这些干扰信号过滤,从而获得真实的按键触发信号。( P" n# f V5 X% ?" i 如何去抖动:首次检测到按键输入引脚有低电平后,稍作延时,再次读取该引脚,如还是低电平,则确认为按键触发信号;否则,判断为干扰信号,不予处理。 HAL库中关于GPIO的3个重要函数6 [; v& G' D! C1 g' Y8 T! \ 电平输出函数7 X! J* t6 V V! a$ G# b" m void HAL_GPIO_WritePin( GPIO_TypeDef* GPIOx, uint16_t GPIo_Pin, GPIO_PinState PinState); 电平翻转函数6 m* H4 {' T8 p- M2 |9 a void HAL_GPIO_TogglePin( GPIO_TypeDef*GPIOx,uint16_t GPIO_Pin); 电平输入函数 GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef* GPlOx,uint16_t GPIO_Pin); 如:判断PC13引脚的输入信号,若为高电平,则将PB9引脚控制的LED灯的开关状态切换。- p9 |8 M0 o+ D: R7 _5 ]
按键控制实验设计# [. t; i; P8 `( ]9 {9 c, } S 使用图形化的配置工具CubeMX进行硬件配置- ~4 h! a1 u/ d 首先新建一个项目
选择芯片
进入以下引脚界面,开始配置工作& E4 F- _4 @8 s& x3 n8 t 3 y8 Y2 d, }. e9 T3 b
( L( H" d" i" v2 L; [9 `/ [ 引脚配置: ?4 i9 ]" [. [/ S7 s$ y PB8和PB9为output模式,PC13和PB1为input模式0 i4 _7 B0 c2 y& Y. M- k. R
m: E1 }4 {2 }8 ]& i% j$ s 系统配置,选择SWD接口的仿真器,Debug中选择Serial Wire0 `3 m, {9 Z" q% B' z& X( B
选择使用外部晶振1 h- y/ V( W8 V, x/ X4 K+ ?8 I4 | ]9 m/ _/ }3 g
将PB1和PC13设置为上拉模式1 B. p& s! @9 b+ ]4 ]) B7 x6 g: _# [ " V, b7 s$ D; W
6 R$ H' N7 u% K% U 在时钟树中配置
- q; c% O' P! Y- t! O8 x3 S7 u" z 生成代码
) ?- f: ~( D1 s/ H X' T
使用Keil打开生成的代码进行编辑 打开文件
代码编写2 |0 k7 ]; E+ L8 C& Q 在/* USER CODE BEGIN WHILE */与/* USER CODE END WHILE */中while循环下编写
编译代码" [1 A4 z) G% ^8 y) }7 d4 r 1 L9 M. G3 ]. y# l8 A
Proteus中仿真) Z/ E& k" C6 x: r9 ]3 ~ 新建工程. k5 S" H0 Y! E $ ~9 [; U0 U" S W. c" f% }
/ J: O9 `8 q6 H 工程向导" f! I/ c. o2 N# M2 I( r 一直选择默认,在Firmware中按照以下配置,最后单击完成) I. x& M8 _8 m" z3 s7 f
注意:应当尽量使CubeMX中选择的开发板与仿真时选择的开发板一致: m% K F- Z: D ; d% `, \: h/ q2 c) @5 O: @& T 仿真电路图搭建 & `$ V$ e2 y& e8 S( z% B
, p: Y K6 s, L: J1 f8 I& P 其中接地线在. j; [: A+ I" N0 \( ^4 Y9 t. O; ]
- ~7 e: d9 @8 ? 搭建完毕后双击开发板,引入编译代码后产生的hex文件 : `9 S$ h0 z, S! t5 B0 c+ g
点击左下角开始模拟 ; G5 \+ Q" M1 a4 E1 n 未按按键时,灯为亮的状态5 X8 \$ x8 b& \: p2 `) n ) a; \' ~9 W( o8 n) P' U+ J
7 V+ J6 ?; W$ o 按一次按键后,灯熄灭
* s( u; t- {8 p1 k2 E3 l ————————————————6 A7 `3 _" c% n6 f+ v, S 版权声明:m0_56450064 6 F0 y _& E( `! B- }/ } |
【STM32H735G-DK 测评】STM32H735G-DK External Loder 编译和测试
Keil-MDK 在线调试设置断点的高级用法
请教下STM32N6570 怎么把分辨率改成320x240并可以全屏显示
【福利三:逢7发帖赢大礼】想要充分利用STM32H743VI片内的RAM空间(但并不顺利)
基于stm32平台上的IC-MU磁绝对值编码器SPI通讯和码盘数据处理
使用STM32 MCU和MPU连接PDM数字麦克风
分享STM32资料-采用 STM32U031R8 MCU 的 STM32 Nucleo-64 开发板,官方资料,数据手册等资料
HRTIM 指南
使用 STM32 的 DWT 单元监控内存
DAC,COMP,HRTIM Fault 功能的使用
微信公众号
手机版