当前位置: 首页 > news >正文

蓝桥杯——按键

一:按键得原理图

二:按键的代码配置

step1  按键原理图对应引脚配置为输入状态

step2  在GPIO中将对应引脚设置为上拉模式

step3  在fun.c中写按键扫描函数

写完后的扫描函数需放在主函数中不断扫描

扫描函数主要通过两个定义变量的值来判断,一个当前状态变量state读取对应按键引脚的gpio值,一个last_state 变量在判断条件结束后赋予当前state的值,state重新获取gpio值如此循环

三:长按键和短按键

1.基础依据

定时器开始时cnt就会从0开始一直加,直到cnt=arr+1时产生定时器中断,cnt=0又开始加一直反复

我们需要计算cnt每次加一所需要的时间t0是多少,t0根据公式推导,t0=(psc+1)/f(f为系统频率为8000),

此外还可以通过cnt来求cnt为某值(如cnt=10000)所需要的时间t,如此得到长按键的思路,按键按下时令cnt=0;用if语句判断cnt是否大于1000(即按键是否按下超过一秒钟),如果是长按键则在if语句中些需要进行的操作

2.长按键配置

step1.另外配置一个定时器(TIM3,钟源选内部时钟,配置psc值)

注意定时器中断不用打开,直接生成代码

step2.按照基础依据写代码,设置为1,因为初始化时默认为0,不设为1就会直接一开始时就认为按键B1按下松开count+=2;

注意:定时器配置时有中断要使能,没有中断也要使能,有IT说明与中断有关,即有中断的TIM用带IT的函数语句使能,没有中断的TIM用没有IT的使能

我们上述配置时为按键长按一秒的配置,如果想改长按时间不需重新配置,只要改代码的cnt比较值就好

相关文章:

  • 神经形态视觉的实时动态避障系统:突破传统SLAM的响应延迟瓶颈
  • (一)趣学设计模式 之 单例模式!
  • 13th Labour of Heracles CodeForces - 1466D
  • 2025高维多目标优化:基于导航变量的多目标粒子群优化算法(NMOPSO)的无人机三维路径规划,MATLAB代码
  • CSS `transform` 属性详解:打造视觉效果与动画的利器
  • 51单片机学习之旅——定时器
  • go 日志框架
  • Visual Studio Code 2025 安装与高效配置教程
  • 大语言模型架构:从基础到进阶,如何理解和演变
  • Spring 实战技术文档
  • C++标准库——时间
  • 使用 Grafana 监控 Spring Boot 应用
  • 人工智能三剑客:符号主义、连接主义与行为主义的较量与融合
  • 高清下载油管视频到本地
  • 【C语言】经验漫谈:应用情景下的移位操作巧分析
  • 力扣——杨辉三角
  • ioctl函数讲解
  • 电脑开机一段时间就断网,只有重启才能恢复网络(就算插网线都不行),本篇文章直接解决,不要再看别人的垃圾方法啦
  • 巧妙实现右键菜单功能,提升用户操作体验
  • Docker实战-使用docker compose搭建博客
  • 非洲中青年军官代表团访华,赴北京、长沙、韶山等地参访交流
  • 长三角铁路今日预计发送386万人次,沪宁、沪杭等方向尚有余票
  • 特朗普关税风暴中的“稳”与“变”:新加坡国会选举观察
  • 2025五一档电影票房破6亿
  • 言短意长|今年五一假期的一个新变化
  • 美国证实加拿大及墨西哥汽车零部件免关税