[其他ST产品] stm32—按键(双模式,双函数选择)

[复制链接]
 楼主| xiaoqi000 发表于 2023-8-26 17:39 | 显示全部楼层 |阅读模式
一、新建方法不说了,记得将key和led文件封装进去


不使用CubeMX


61464e9c83845c66.png

二、ked.c代码:

1、按键初始化部分

1859664e9c846aff53.png


 楼主| xiaoqi000 发表于 2023-8-26 17:46 | 显示全部楼层
2、第一个按键函数
3700964e9c9f93d93e.png
 楼主| xiaoqi000 发表于 2023-8-26 17:46 | 显示全部楼层
注意:
3249464e9ca0930a04.png
 楼主| xiaoqi000 发表于 2023-8-26 17:47 | 显示全部楼层
这个函数提供两种模式(是否连按)
6432264e9ca15ed84c.png
 楼主| xiaoqi000 发表于 2023-8-26 17:47 | 显示全部楼层
注意这个函数存在响应优先级

3、第二个按键函数

2199664e9ca2e9a4e7.png
 楼主| xiaoqi000 发表于 2023-8-26 17:47 | 显示全部楼层
三、key.h部分:
1692064e9ca40678ef.png
 楼主| xiaoqi000 发表于 2023-8-26 17:47 | 显示全部楼层
注意:

有两种方式读取电位,一种用位带操作读取,一种用HAL库读取

声明了.c文件里的三个函数,宏定义了一些特殊常量
 楼主| xiaoqi000 发表于 2023-8-26 17:48 | 显示全部楼层
四、main.c中:
5918064e9ca57a0369.png
3281264e9ca5d02da6.png
 楼主| xiaoqi000 发表于 2023-8-26 17:48 | 显示全部楼层
通过这个KEY_Scan();内的数字来选择扫描模式
2313264e9ca6d4d2ed.png
 楼主| xiaoqi000 发表于 2023-8-26 17:48 | 显示全部楼层
0和1

使用CubeMX
一、首先记得先把delay函数和KEY函数封装好
3520464e9ca86076d3.png
 楼主| xiaoqi000 发表于 2023-8-26 17:49 | 显示全部楼层
二、端口初始化部分都在gpio.c里面完成

8097464e9ca948b8eb.png
 楼主| xiaoqi000 发表于 2023-8-26 17:49 | 显示全部楼层
三、KEY.c里面没了初始化部分
1483464e9caa4b3bb6.png
 楼主| xiaoqi000 发表于 2023-8-26 17:49 | 显示全部楼层
四、KEY.h里面少了一个初始化函数声明
2190464e9cac02c2bd.png
 楼主| xiaoqi000 发表于 2023-8-26 17:50 | 显示全部楼层
五、main.c:

这个Delay函数记得加上

2722864e9cad0c3b7a.png
 楼主| xiaoqi000 发表于 2023-8-26 17:51 | 显示全部楼层
定义的8位变量和初始化延时函数调用放到这里面
6004764e9cb103fdf5.png
 楼主| xiaoqi000 发表于 2023-8-26 17:51 | 显示全部楼层
操作部分没啥变化
2994564e9cb2214773.png
liuzaiy 发表于 2023-8-26 23:42 | 显示全部楼层
读取电位都有哪几种方式
您需要登录后才可以回帖 登录 | 注册

本版积分规则

66

主题

820

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部

66

主题

820

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部