STM32最小系统板教程第三章第4讲|STM32 按键实验
置顶公众号,不错过每一讲内容。
完整课程体系(公众号每日更新一讲):
本讲知识点:按键检测、外部中断
3.4.1 按键实验
这一讲我们来实现开发板上的按键功能,先看一下原理图中按键的驱动电路。
图3-4-1 按键驱动电路
从驱动电路中可以看出,按键驱动电路也是由一个GPIO(PB12)引脚控制,初始化我们把这个管脚配置为上拉输入,因此当按键没有按下时,电路不导通;当按键按下时,管脚电平为低电平,此时电路导通。为了测试按键,我们编写一个按键扫描的程序,同时加入重定向的代码,当检测到按键按下时,通过串口向电脑端的串口助手输出相应信息。
同样,我们复制一份上一讲的代码,在此基础上加入按键代码,同样新建key.c、key.h文件,添加好后贴图如下:
图3-4-2 添加key.c、key.h文件
接下来,在key.c中编写按键程序,贴图如下:
图3-4-3 按键初始化及扫描函数
接下来,我们将按键扫描函数加到主函数里面,编译下载后,打开串口助手,反复按下按键,观察串口助手的输出信息:
图3-4-4 主函数初始化
图3-4-5 串口接线
图3-4-6 串口助手显示
3.4.2 外部中断
经过实际实验我们发现,按键扫描函数检测按键是否按下并不是很准确,接下来给大家介绍一种准确的按键识别方法,就是利用GPIO的外部中断。有关外部中断的配置贴图如下:
图3-4-7 外部中断配置
图3-4-8 外部中断服务函数
这里需要注意的是我们配置的工程里没有stm32f10x_it.c和stm32f10x_it.h这两个文件,这个需要我们自己创建添加,stm32f10x_it.c我们添加到USER分组下,stm32f10x_it.h和其他外设头文件路径一致。主函数中包含stm32f10x_it.h头文件,删掉按键扫描函数,编译整个工程下载到开发板上,反复按下用户按键,观察串口助手的打印信息,实测我们发现,利用外部中断的方法检测按键还是比较准确的。
图3-4-9 外部中断法检测按键
本讲内容就到这里,趁热打铁,大家亲自动手试一试吧
视频课程(点击文末左下角“阅读原文”,可看高清视频):
扫描检测按键
外部中断法检测
最小系统板的购买链接(复制到淘宝打开即可):
https://item.taobao.com/item.htm?&id=573256065703
elink32仿真器购买链接(复制到淘宝打开即可):
https://item.taobao.com/item.htm?&id=558334383550
课程系列回顾:
STM32最小系统板教程第三章第1讲|从“点灯”入门STM32
STM32最小系统板教程第三章第2讲|STM32时钟系统及实现准确延时
STM32最小系统板教程第三章第3讲|STM32 UART串口通信
感谢您阅读“电子开发学习”的文章,如果您觉得图文能帮助您学习,欢迎关注我们。请点击右上角按钮,选择“查看公众号”,再点击关注即可。或者可以通过搜索公众号的方式关注: electricstudy 。您可以通过扫码下面的二维码关注我们。如果您想阅读往期文章,可点击“查看历史消息”。
历史好文推荐(点击文章标题可跳转):
小马哥四轴硬件第1讲、 Altium Designer安装与介绍
如何让Arduino IDE支持你手里的STM32 nucleo开发板