单片机基础——使用GPIO扫描检测按键
1. 准备工作
硬件准备
开发板
首先需要准备一个小熊派IoT开发板,并通过USB线与电脑连接。
软件准备
需要安装好Keil - MDK及芯片对应的包,以便编译和下载生成的代码,可参考MDK安装教程
2.生成MDK工程
选择芯片型号
打开STM32CubeMX,打开MCU选择器:
搜索并选中芯片STM32L431RCT6
:
配置时钟源
- 如果选择使用外部高速时钟(HSE),则需要在System Core中配置RCC;
- 如果使用默认内部时钟(HSI),这一步可以略过;
这里我都使用外部时钟:
配置LED的GPIO引脚
查看小熊派开发板的原理图,如下:
所以接下来我们选择配置PC13
引脚:
设置用户标签为LED:
配置按键的GPIO引脚
查看原理图,确定控制按键引脚,这里我们的F1按键接的是PB2,F2按键接的是PB3。
所以接下来我们选择配置PB2
引脚和PB3
引脚:
因为没有设置硬件上拉,所以我们配置开启上拉电阻,并设置用户标签为KEY1
和KEY2
:
配置时钟树
STM32L4的最高主频到80M,所以配置PLL,最后使HCLK = 80Mhz
即可:
生成工程设置
代码生成设置
最后设置生成独立的初始化文件:
生成代码
点击GENERATE CODE
即可生成MDK-V5工程:
3. 在MDK中编写、编译、下载用户代码
编写用户代码
打开MDK工程,在main.c中的main函数中编写简单的用户代码,这里的代码意思为:一直循环读取按键引脚的电平,当读取到F1按键引脚为低电平时,LED灯引脚输出高电平;当读取到F2按键引脚为低电平时,LED灯引脚输出低电平,所以当按下KEY1,LED点亮,按下KEY2,LED熄灭。
int main(void)
{ HAL_Init(); SystemClock_Config(); MX_GPIO_Init(); while ()
{
/* USER CODE BEGIN 3 */
if( == HAL_GPIO_ReadPin(KEY1_GPIO_Port, KEY1_Pin))
{
HAL_GPIO_WritePin(LED_GPIO_Port,LED_Pin,GPIO_PIN_SET);
}
if( == HAL_GPIO_ReadPin(KEY2_GPIO_Port, KEY2_Pin))
{
HAL_GPIO_WritePin(LED_GPIO_Port,LED_Pin,GPIO_PIN_RESET);
}
}
/* USER CODE END 3 */
}
编译代码
点击如图所示的按钮编译工程
编译成功
设置下载器
点击如图所示按钮打开设置页面
进行下载设置,选择“ST-Link Debugger”,并点击“Settings”。
在“Flash Download”菜单下勾选“Reset and Run”选项,已达到烧录程序后单片机自动复位并运行程序的目的。
下载运行
点击"LOAD"按钮即可烧录代码到单片机中。
烧录成功
实验现象
下载运行后,实验现象如下:
- 上电复位时LED处于熄灭状态;
- 按下KEY1,LED点亮;
- 按下KEY2,LED熄灭;
至此,我们已经学会了如何使用STM32CubeMX快速生成MDK的工程,以及如何使用 STM32CubeMX初始化GPIO进行按键检测,下一节讲述如何配置NVIC使用外部中断检测按键。
单片机基础——使用GPIO扫描检测按键的更多相关文章
- 单片机基础——使用GPIO输出点亮一个LED灯
1. 准备工作 硬件准备 开发板首先需要准备一个小熊派IoT开发板,并通过USB线与电脑连接. 软件准备 需要安装好Keil - MDK及芯片对应的包,以便编译和下载生成的代码,可参考MDK安装教程 ...
- 【STM32H7教程】第19章 STM32H7的GPIO应用之按键FIFO
完整教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第19章 STM32H7的GPIO应用之按键FIF ...
- TI-RTOS 之 GPIO中断(按键)
TI-RTOS 之 GPIO中断(按键) 前面已经用过LED, 定时器,这次来了解GPIO的中断是怎么用的,从CC1310+TI-RTOS的例程可以直接找到相应的例子程序,它的关键是在于要使能中断,也 ...
- PIC单片机基础2
PIC中档系列单片机,每条指令14位,共有35条汇编指令,根据操作对象不同,可将其分为三类: 字节操作类指令 位操作类指令 立即数与控制类操作指令 1.字节操作类指令,以MOVF指令为例: 指令:MO ...
- STM32基本GPIO操作:按键输入(扫描+外部中断)
(涉及专有名词较多,难免解释不到位,若有错误还请指出,谢谢!) 硬件连接图如下: 一.扫描 思路是在main函数中通过死循环来扫描端口电平状态检测,以此判断按键是否按下.实现较为简单. 1.初始化(注 ...
- CC2530学习路线-基础实验-GPIO 按键控制LED灯亮灭(2)
目录 1.前期预备知识 1.1 新大陆Zigbee模块按键电路图 1.2 CC2530相关寄存器 1.3 CC2530中断走向图 1.4 使用C语言为51单片机编写中断程序 1.5 *函数指针 2. ...
- 51单片机学习笔记(郭天祥版)(1)——单片机基础和点亮LED灯
关于单片机型号的介绍: STC89C52RC40C-PDIP 0721CV4336..... STC:STC公司 89:89系列 C:COMS 52(还有51,54,55,58,516,):2表示存储 ...
- CC2530学习路线-基础实验-GPIO 控制LED灯亮灭(1)
目录 1.前期预备知识 1.1 新大陆ZigBee模块LED灯电路 1.2 CC2530相关寄存器 1.3 寄存器操作技巧 1.4 CPU空转延时 1.4 操作流程图 2.程序代码 The End 1 ...
- STM32单片机复位后GPIO电平状态
stm32单片机gpio共有八种工作模式,如下图: stm32单片机是一个低功耗的处理器,当复位以后,gpio默认是高阻状态,也就是浮空输入.这样的好处是: 1.降低了单片机的功耗 2.把gpio模式 ...
随机推荐
- js手机浏览器video标签会一直置顶,遮盖住弹出层问题
<video x5-playsinline="" playsinline="" webkit-playsinline="">&l ...
- cs231n spring 2017 lecture6 Training Neural Networks I
1. 激活函数: 1)Sigmoid,σ(x)=1/(1+e-x).把输出压缩在(0,1)之间.几个问题:(a)x比较大或者比较小(比如10,-10),sigmoid的曲线很平缓,导数为0,在用链式法 ...
- deeplearning.ai 神经网络和深度学习 week3 浅层神经网络
1. 第i层网络 Z[i] = W[i]A[i-1] + B[i],A[i] = f[i](Z[i]). 其中, W[i]形状是n[i]*n[i-1],n[i]是第i层神经元的数量: A[i-1]是第 ...
- HTTP请求方法及响应码详解(http get post head)
HTTP是Web协议集中的重要协议,它是从客户机/服务器模型发展起来的.客户机/服务器是运行一对相互通信的程序,客户与服务器连接时,首先,向服务 器提出请求,服务器根据客户的请求,完成处理并给出响 ...
- 线程、volatile与synchronized、Lock
目录 线程 1.概念: 2.线程生命周期: 3.线程调度 4.线程实现 4.1.实现方式 4.2.之间的区别: 5.线程安全 5.1.volatile与synchronized 5.1.synchro ...
- Protein interaction|insight QUANTA|SYBYL COMPOSER|MODELLER|SWISS_MODEL|WHAT IF|3D-JIGSAW|CPH-ModelGPCRs|Membrane protein|
生命组学 蛋白质之间的互作可以有以下应用: Eg:改变蛋白质基因,从而组改变结构,削弱蛋白质之间的相互作用. Eg:数据模拟出蛋白质的靶点,即结合腔,将此数据存入结合化合物的dataset,用于制药 ...
- css - inline-block 盒子下的内容文字错位问题
参考资料: “display:block-inline形式的Span或Div中添加文字后,导致Span或Div排版掉落.错位”的原因及解决方法: 正文: 场景:两个 div 排在一行上,各有固定宽高, ...
- Mysql主从同步原理简介
1.定义:当master(主)库的数据发生变化的时候,变化会实时的同步到slave(从)库. 2.好处: 1)水平扩展数据库的负载能力. 2)容错,高可用.Failover(失败切换)/High Av ...
- Java 原子类 java.util.concurrent.atomic
Java 原子类 java.util.concurrent.atomic 1.i++为什么是非线程安全的 i++其实是分为3个步骤:获取i的值, 把i+1, 把i+1的结果赋给i 如果多线程执行i++ ...
- 吴裕雄--天生自然 R语言开发学习:分类
#-----------------------------------------------------------------------------# # R in Action (2nd e ...