STMCU小助手
发布时间:2022-11-24 15:39
|
按键扫描的基本原理 按键信号的识别:一般来说,按键的两个引脚的一端通过电阻上拉到高电平,另一端则接地。接上拉电阻时在没有按键按下的时候,输入引脚为高电平,当有按键按下,输入引脚则为低电平;接下拉电阻时在没有按键按下的时候,输入引脚为低电平,当有按键按下,输入引脚则为高电平。4 a0 \* I1 x1 H* T& f' G' }! b d 通过反复读取按键输入引脚的信号,然后识别高低电平来判断是否有按键触发。 为什么去抖动:按键的输入引脚有低电平产生不代表一定是有按键按下,也许是干扰信号,因此,需要通过去抖动处理,将这些干扰信号过滤,从而获得真实的按键触发信号。9 p1 R0 o3 Q) h/ |4 t/ h; n2 ?' Y 如何去抖动:首次检测到按键输入引脚有低电平后,稍作延时,再次读取该引脚,如还是低电平,则确认为按键触发信号;否则,判断为干扰信号,不予处理。 HAL库中关于GPIO的3个重要函数 电平输出函数 void HAL_GPIO_WritePin( GPIO_TypeDef* GPIOx, uint16_t GPIo_Pin, GPIO_PinState PinState);, ?( e9 \6 U: }: T& j ?0 Z 电平翻转函数 void HAL_GPIO_TogglePin( GPIO_TypeDef*GPIOx,uint16_t GPIO_Pin);+ i4 T6 L: T0 z 电平输入函数 GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef* GPlOx,uint16_t GPIO_Pin);1 z: R8 _5 [: n4 _ 如:判断PC13引脚的输入信号,若为高电平,则将PB9引脚控制的LED灯的开关状态切换。
按键控制实验设计: a. S' B: X. u2 v( |9 S" p 使用图形化的配置工具CubeMX进行硬件配置; m! g0 Y# j+ t; x! |# I 首先新建一个项目% R+ s5 K% y* i# m % q# p9 _6 o1 b& s4 C: ?" B
选择芯片 3 P) q, O# |$ C4 G
! O. x8 b/ n! _# s3 P 进入以下引脚界面,开始配置工作 ) `1 h6 G) D8 r4 N
引脚配置 PB8和PB9为output模式,PC13和PB1为input模式 T9 z* U/ b0 Q& `" [8 m% T
系统配置,选择SWD接口的仿真器,Debug中选择Serial Wire / e0 k* n, o3 ~- K8 U0 R
选择使用外部晶振% |% i/ F- ?! u0 e6 j
将PB1和PC13设置为上拉模式; Y. Q. B7 ]; o% t s
# Q6 [* S. [) K, l9 M2 m) I9 @ 在时钟树中配置
9 ]8 w7 e% g% Z# {$ Z- b 生成代码
) l+ K5 ~4 F! \& M P
使用Keil打开生成的代码进行编辑9 n `2 B8 h4 k# z" e 打开文件 ! P1 ^- I& P3 U
) w! g3 O5 ^! ^- q A1 C2 M# A 代码编写7 v3 B3 N+ b! Z% {/ b/ L5 U8 Z 在/* USER CODE BEGIN WHILE */与/* USER CODE END WHILE */中while循环下编写
编译代码, I, S6 y# [$ u1 l0 ] & x0 w/ @8 X, n2 o5 g
( i: ^2 h) }, H! y Proteus中仿真 新建工程# O3 y; f, q! E7 g2 j. D% y9 d % ?+ T! L; ^8 y1 f' g
工程向导 一直选择默认,在Firmware中按照以下配置,最后单击完成
2 C2 z6 [( a5 o- W 注意:应当尽量使CubeMX中选择的开发板与仿真时选择的开发板一致 仿真电路图搭建4 z+ ^ N2 O4 z" D: F* j& n 0 g& ]: |4 y$ {' P+ W! c5 E! \
其中接地线在
3 N" g( ]. q+ s& A" U. i6 \ 搭建完毕后双击开发板,引入编译代码后产生的hex文件# ~5 J8 ^) z. ~0 s6 R : E9 R0 W2 ]- b
; z* Y/ s0 X- D0 H" N. B/ K1 @ 点击左下角开始模拟0 z; T, @2 q" U: L* \0 I" L2 v, h 0 b* f" S* P" j3 U 未按按键时,灯为亮的状态0 D' ~+ t5 R; Y; \2 Z
* D- S+ N/ p. i( Z: n) s; } 按一次按键后,灯熄灭( f5 j& ] X' C% n1 A' B
9 _! P6 C, A0 M& t8 @ ————————————————9 w7 W5 v7 L' g C" D( |0 c0 c 版权声明:m0_56450064 ' J2 H& H: B0 p+ h7 t " f/ N4 f" B( I4 g& R4 Z" d |
【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 功能的使用
微信公众号
手机版