STM32
直播中

安立路

8年用户 787经验值
私信 关注
[问答]

请问STM32F407VET6怎么实现按键控制LED灯状态?

请问STM32F407VET6怎么实现按键控制LED灯状态?

回帖(1)

陈俊

2021-11-18 14:42:47
前言

使用反客科技STM32F407VET6 M1的核心板,板载8M主时钟晶振(HSE),32.768kHz低速外部晶振(LSE)。含有一个用户LED以及一个用户按键。
任务目标

使用按键以及外部中断,编程实现按键控制LED灯状态。
设计过程

硬件

本次实验采用的核心板,带有一个LED灯以及一个按键,核心版图如下










复位按键以及电源灯一般都是不可控制的,所以我们需要控制的是用户LED以及按键。
从图上可以看出,灯和按键分别接在了芯片的PC13以及PA15引脚。所以接下来我们就要对对应的引脚进行编程实现对应的目的。





可以看出PA15属于EXTI15。
软件

GPIO口的配置

#include "gpio.h"


void GPIO_init(void)
{
    GPIO_InitTypeDef  GPIO_InitStructure;
       
   RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC, ENABLE);
   RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);   
        //初始化PC13 LED灯
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;                                 
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//输出模式
        GPIO_InitStructure.GPIO_OType= GPIO_OType_PP;//推挽输出
        GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; //上拉
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//设置IO口带宽               
        GPIO_Init(GPIOC,&GPIO_InitStructure);
        GPIO_SetBits(GPIOC,GPIO_Pin_13);   //拉高
}         
这里解释一下为什么要配置为上拉,这是我之前学习时候一直模糊的点。只知道一味的上拉。
GPIO上拉表示接上一个上拉电阻。如下图,





从图中可以看出IO口经过一对保护二极管之后就是上拉或下拉电阻。那么他们的作用又是什么呢。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分