STM32:按键控制LED

简介: STM32:按键控制LED

1.主函数部分:


8055ec339b5c48329f83bfb4fa3643bf.png

#include "stm32f10x.h"                  // Device header
#include "Delay.h"
#include "LED.h"
#include "Key.h"
int main(void)
{
    uint8_t Key_Num=0;
    Key_Num=Key_GetNum();
    while(1)
    {
        if(Key_Num==1)
            LED1_Turn();
        if(Key_Num==2)
            LED1_Turn();
    }
}

2.LED.c代码部分:

708a53dde3654453aa49a4891ac3bf09.png


#include "stm32f10x.h"                  // Device header
void LED_Init(void)
{
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
    GPIO_InitTypeDef GPIO_InitStruct;
    GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP;
    GPIO_InitStruct.GPIO_Pin=GPIO_Pin_1|GPIO_Pin_2;
    GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
    GPIO_Init(GPIOA,&GPIO_InitStruct);
}
void LED1_ON(void)
{
    GPIO_ResetBits(GPIOA,GPIO_Pin_1);
}
void LED1_OFF(void)
{
    GPIO_SetBits(GPIOA,GPIO_Pin_1);
}
void LED2_ON(void)
{
    GPIO_ResetBits(GPIOA,GPIO_Pin_2);
}
void LED2_OFF(void)
{
    GPIO_SetBits(GPIOA,GPIO_Pin_2);
}
void LED1_Turn(void)
{
    if(GPIO_ReadOutputDataBit(GPIOA,GPIO_Pin_1)==0)
        GPIO_SetBits(GPIOA,GPIO_Pin_1);
    else
        GPIO_ResetBits(GPIOA,GPIO_Pin_1);
}
void LED2_Turn(void)
{
    if(GPIO_ReadOutputDataBit(GPIOA,GPIO_Pin_2)==0)
        GPIO_SetBits(GPIOA,GPIO_Pin_2);
    else
        GPIO_ResetBits(GPIOA,GPIO_Pin_2);
}

LED.h代码部分:


b34d58b19a53444d83ae215dc2191bcc.png


#ifndef  __LED_H
#define  __LED_H
void LED_Init(void);
void LED1_ON(void);
void LED1_OFF(void);
void LED1_Turn(void);
void LED2_ON(void);
void LED2_OFF(void);
void LED2_Turn(void);
#endif

3.Key(按键)代码部分:

ed941815de914f9fa530bf19fba82cde.png

53cbed5117564962bc85370802d446eb.png


#include "stm32f10x.h"                  // Device header
#include "Delay.h"
void Key_Init()
{
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
    GPIO_InitTypeDef GPIO_InitStruct;
    GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP;
    GPIO_InitStruct.GPIO_Pin=GPIO_Pin_1|GPIO_Pin_11;
    GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
    GPIO_Init(GPIOB,&GPIO_InitStruct);
}
uint8_t Key_GetNum(void)
{
    uint8_t Key_Num=0;
    if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_1)==0)
    {
        Delay_ms(10);
        while(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_1)==0)
            Delay_ms(10);
            Key_Num=1;
    }
    return Key_Num;
    if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_11)==0)
    {
        Delay_ms(10);
        while(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_11)==0)
            Delay_ms(10);
            Key_Num=2;
    }
    return Key_Num;
}

Key.h(按键)代码部分:


f88005f47dce4f8784ff92cee58d598d.png

#ifndef  __Key_H
#define  __Key_H
void Key_Init(void);
uint8_t Key_GetNum(void);
#endif
目录
打赏
0
0
0
0
11
分享
相关文章
最详细STM32,cubeMX 按键点亮 led
最详细STM32,cubeMX 按键点亮 led
265 0
|
9月前
使用STM32F103标准库实现定时器控制LED点亮和关闭
通过这篇博客,我们学习了如何使用STM32F103标准库,通过定时器来控制LED的点亮和关闭。我们配置了定时器中断,并在中断处理函数中实现了LED状态的切换。这是一个基础且实用的例子,适合初学者了解STM32定时器和中断的使用。 希望这篇博客对你有所帮助。如果有任何问题或建议,欢迎在评论区留言。
652 2
|
5月前
stm32学习 3-2 LED流水灯
stm32学习 3-2 LED流水灯
104 4
|
5月前
stm32学习3-1 LED闪烁
stm32学习3-1 LED闪烁
59 4
|
8月前
STM32CubeMX FreeRTOS点亮LED
STM32CubeMX FreeRTOS点亮LED
147 10
STM32速成笔记(三)—按键检测
本文介绍了如何利用STM32进行按键检测,先介绍了原理,后面给出了配置步骤和应用例程。此外,本文还叙述了如何利用一个按键单独控制一个LED亮灭,以及如何检测按键长短按。
949 0
STM32速成笔记(三)—按键检测
|
8月前
STM32CubeMX 按键控制LED
STM32CubeMX 按键控制LED
127 0
|
8月前
STM32CubeMX 点亮LED
STM32CubeMX 点亮LED
102 0
|
8月前
stm32f407探索者开发板(八)——按键输入实验--GPIO做输入
stm32f407探索者开发板(八)——按键输入实验--GPIO做输入