搜索
查看: 1358|回复: 0

[分享] STM32学习笔记四

[复制链接]

该用户从未签到

193

主题

194

帖子

0

蝴蝶豆

金牌会员

最后登录
2021-3-12
发表于 2021-3-10 13:59:45 | 显示全部楼层 |阅读模式
STM32学习笔记四

今天主要实验是按键输入实验,在此实验之前先大概的说一下蜂鸣器的控制,上一次笔记中我们学习了一个LED灯的点亮实验,其实蜂鸣器的控制实验与LED灯的点亮几乎是一样的,只不过蜂鸣器所对应的一个GPIO的引脚不同而已,所以我们需要查找原理图,找到蜂鸣器所对应的GPIO引脚:

8.1.jpg

这里需要注意的一点是蜂鸣器是连接的一个P-MOS,所以我们将对应的引脚置1,P–MOS才导通,蜂鸣器才会响,而LED是对应的引脚置0才亮。
接下来说一下今天的按键输入实验,按键输入实验其实是对应的我们GPIO的另一种模式,即输入模式。前面说的LED灯、蜂鸣器等都是GPIO的输出模式,所以,今天的内容也比较简单,只需要将之前设置的输出模式配置成输入模式即可。STM32F407有4个key按键和一个复位按键,通过查看原理图:

8.2.jpg

我们可以找到四个按键分别对应的一个GPIO引脚,然后我们也像上次LED实验一样,通过配置对应的GPIO来进行按键输入实验。同样,我们在HAREWARE文件夹下添加相应的key.c和key.h文件

8.3.jpg

之前做LED灯点亮实验时我们使用的是GPIO的输出模式,使用的函数是GPIO_SetBits()和GPIO_ResetBits()两个函数来控制引脚输出,这次的输入模式我们将使用GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_4)这个函数来读取相应的引脚状态,第一个参数为对应的GPIO,第二个参数为对应GPIO引脚。大家只要去读取引脚状态就可以通过按键来点亮LED或者控制蜂鸣器响等不同的操作,这里主函数可以由大家自主发挥。这里也可以给一个参考示例给大家,只不过我这里为了方便都是使用的宏定义,然后我也将宏定义部分放在下面,供大家参考:

8.4.jpg
8.5.jpg
8.6.jpg

今天的笔记差不多就这些了,然后通过这一节大家可能会发现可能有时候按键会出现无法点亮或者亮多次的现象,其实主要是我们按键需要做消抖处理,原理其实就是在按键按下去的时候做一个延迟判断,是否确实是按键按下去了,大家有兴趣的可以上网查一下如何实现按键消抖。

拓展一下:我们主要学习了2个实验,大家就是觉得简单的可以再进行一下拓展,想一下如何实现类似手机的呼吸灯原理以及实现按键的长按和短按实现不同的功能,有兴趣的可以一起讨论,一起学习。

文章出处: STM32开发学习

回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|论坛-意法半导体STM32/STM8技术社区

GMT+8, 2024-4-24 01:27 , Processed in 0.152493 second(s), 32 queries .

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表