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
相关文章
|
6月前
|
芯片
最详细STM32,cubeMX 按键点亮 led
最详细STM32,cubeMX 按键点亮 led
110 0
|
6月前
|
传感器 芯片
最详细STM32,cubeMX 点亮 led
最详细STM32,cubeMX 点亮 led
82 0
|
6月前
STM32速成笔记(三)—按键检测
本文介绍了如何利用STM32进行按键检测,先介绍了原理,后面给出了配置步骤和应用例程。此外,本文还叙述了如何利用一个按键单独控制一个LED亮灭,以及如何检测按键长短按。
190 0
STM32速成笔记(三)—按键检测
|
3月前
|
数据安全/隐私保护 芯片
【STM32基础 CubeMX】按键的检测
【STM32基础 CubeMX】按键的检测
No.6 STM32F429IGT6 LED按键检测 按键点灯 (STM32F429/F767/H743)
No.6 STM32F429IGT6 LED按键检测 按键点灯 (STM32F429/F767/H743)
No.5 STM32F429IGT6 标准库实战GPIO输出LED灯 点亮闪烁(STM32F429/F767/H743)
No.5 STM32F429IGT6 标准库实战GPIO输出LED灯 点亮闪烁(STM32F429/F767/H743)
|
9月前
STM32使用PWM实现led亮度变化
STM32使用PWM实现led亮度变化
191 0
|
10月前
使用STM32CubeMX实现LED闪烁
使用STM32CubeMX实现LED闪烁
135 0
|
11月前
|
传感器 芯片 开发者
STM32实战之LED循环点亮
STM32实战之LED循环点亮
|
11月前
|
C语言 芯片
STM32 实战之点亮LED
STM32 实战之点亮LED