STM32---按键控制小灯

   STM32按键点灯的实现需要用到STM32的GPIO外设,不同开发板的LED外设不同,本文将采用野火STM32mini开发板来实现按键点灯。

在这里插入图片描述

1.首先,我们要想使用mini开发板按键控制小灯,就需要找到它的原理图,查找到板载的led和按键是用的哪一个引脚。
下图为led的板载引脚图,从图中我们可以知道mini板的两个led灯连接的是PC2、PC3引脚。且为低电平点亮、高电平熄灭
在这里插入图片描述

下图为mini板的按键引脚图,从图中我们也可以知道两个按键的引脚为PA0、PC13。且为高电平驱动,低电平阻断
在这里插入图片描述

所以当我们在使用不同的STM32开发板时,led和按键的引脚以及驱动方式是不同的,这就需要我们必须使用相应开发板的原理图这里我把mini板的原理图奉上,希望能帮助到有缘人。

2.代码驱动
首先我们需要创建一个led的驱动文件以及按键的驱动文件。

key.c
#include "stm32f10x.h"                  // Device header


void delay(uint32_t ms)//毫秒延时
{
    uint32_t i, j;
    for (i = 0; i < ms; i++)
    {
        for (j = 0; j < 5000; j++)
        {
            __NOP(); // 空操作,不做任何事情,占用一个CPU周期
        }
    }
}


void Key_Init(void)
{
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOC, ENABLE);//开启GPIOA、GPIOC时钟
    
    
    GPIO_InitTypeDef GPIO_InitStructure;//初始化GPIO引脚
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;//输入上拉模式
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;//
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//时钟频率
     GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIOA
    
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
     GPIO_Init(GPIOC, &GPIO_InitStructure);//初始化GPIOC
    
    
}

uint8_t Key_GetNum(void)
{
    uint8_t KeyNum = 0;
    if (GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0) == 1)
    {
        delay(20);
        while (GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0) == 1);
        delay(20);
        KeyNum = 1;
    }
    if (GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_13) == 1)
    {
        delay(20);
        while (GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_13) == 1);
        delay(20);
        KeyNum = 2;
    }
    
    return KeyNum;
}

key.h

#ifndef __KEY_H
#define __KEY_H

void Key_Init(void);
uint8_t Key_GetNum(void);
void delay(uint32_t ms);
#endif

led.c

#include "stm32f10x.h"                  // Device header

void LED_Init(void)
{
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);//开启GPIOA、GPIOC时钟
    
    GPIO_InitTypeDef GPIO_InitStructure;//初始化GPIO引脚
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//推挽输出模式
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2 | GPIO_Pin_3;//使能引脚
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//设置GPIO的速度
    GPIO_Init(GPIOC, &GPIO_InitStructure);//初始化GPIOC
    
    GPIO_SetBits(GPIOC, GPIO_Pin_2 | GPIO_Pin_3);//给PC2、PC3
}

void LED1_ON(void)
{
    GPIO_ResetBits(GPIOC, GPIO_Pin_2);
}

void LED1_OFF(void)
{
    GPIO_SetBits(GPIOC, GPIO_Pin_2);
}



void LED2_ON(void)
{
    GPIO_ResetBits(GPIOC, GPIO_Pin_3);
}

void LED2_OFF(void)
{
    GPIO_SetBits(GPIOC, GPIO_Pin_3);
}

led.h

#ifndef __LED_H
#define __LED_H

void LED_Init(void);
void LED1_ON(void);
void LED1_OFF(void);
void LED2_ON(void);
void LED2_OFF(void);


#endif

main.c

#include "stm32f10x.h"                  // Device header
#include "LED.h"
#include "Key.h"

uint8_t KeyNum;

int main(void)
{
    LED_Init();
    Key_Init();
    
    while (1)
    {
        KeyNum = Key_GetNum();
        if (KeyNum == 1)//按key1键led1亮
        {
            LED1_ON();
        }
        if (KeyNum == 2)//按key2键小灯2亮一秒熄灭
        {
            LED2_ON();
            delay(1000);
            LED2_OFF();
        }
    }
}
  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: ​ STM32-STLink是一款常见的STM32单片机的USB调试工具,它可以方便地进行芯片的程序下载、烧录、调试和监测工作。在使用STM32-STLink进行调试工作前,需要先安装STM32-STLink驱动。 STM32-STLink驱动可以在ST官网或软件开发社区中获取。在安装驱动前需要确保电脑已经连接上STM32-STLink,并且已经准备好了相应的开发环境。建议先卸载旧版本的驱动再进行安装。 具体操作步骤如下: 1. 连接STM32-STLink到电脑,确保正常供电和通信。 2. 安装驱动,可以从ST官网或者软件开发社区中下载最新驱动程序。 3. 解压下载的驱动程序,双击运行安装程序。 4. 驱动安装过程中需要注意选择与自己操作系统版本相对应的驱动程序,勾选“核心组件”和“驱动程序”选项,进行安装。 5. 安装完成后,重启电脑,确认驱动程序已经成功安装。 6. 打开开发环境,并连接STM32-STLink,进行调试工作。在调试过程中,可以通过STLink Utility等工具进行芯片的操作。 总之,STM32-STLink驱动是STM32单片机开发必备的驱动程序之一。通过安装该驱动,可以方便地进行芯片的调试工作和程序烧录操作。 ### 回答2: stm32-stlink驱动是一种用于连接STM32单片机与电脑的驱动。STM32是一种低功耗、高性能的32位微控制器,而stlink是一种芯片级调试工具,用于将计算机与STM32单片机连接起来,进行程序的调试和下载。由于stm32-stlink驱动具备高性能、可靠性和灵活性等优势,因此在计算机与STM32单片机之间的数据传输过程中发挥了重要作用。 stm32-stlink驱动可以实现多种不同的功能。例如,在调试过程中,它可以帮助开发者调试程序,并实时监测STM32单片机的运行情况。此外,该驱动还可以实现对单片机的程序下载、烧录、刷写等操作,方便开发者进行快速迭代和测试。 除了实现上述功能之外,stm32-stlink驱动还具备多种其他特点。例如,该驱动可以长时间稳定运行,且不会对系统稳定性产生不利影响。此外,该驱动还具备自动适配的能力,可以适应不同版本的STM32单片机。 在使用stm32-stlink驱动之前,开发者需要根据自己的需要进行安装和配置。具体来说,需要下载适合自己系统版本的stm32-stlink驱动,并在电脑上安装。此外,在进行开发过程中,开发者还需要根据需要对该驱动进行相应的设置和调整,以保障程序的正常运行。 总的来说,stm32-stlink驱动是一种实现STM32单片机与电脑之间数据传输的重要工具,具备多种优势和特点。在进行相关开发工作时,合理配置和使用该驱动可以极大地提高开发效率和程序稳定性。 ### 回答3: STM32-STLINK驱动是用于连接计算机和STM32微控制器开发板之间的软件程序。STM32-STLINK驱动可用于下载代码,调试和仿真微控制器。STM32-STLINK驱动由STMicroelectronics提供,并且是免费提供的。该驱动程序可以在Windows和Linux操作系统上使用,并且支持多种开发工具,例如Keil,IAR和Atollic。 在使用STM32-STLINK驱动之前,需要先将开发板与计算机连接。连接过程可以通过USB连接或JTAG/SWD接口完成。当前,STMicroelectronics生产的大多数STM32微控制器都具有内置的ST-LINK / V2-1调试器,因此无需单独购买ST-LINK外设。只需使用USB线缆将STM32板连接到计算机上,即可使用STM32-STLINK驱动。 一旦STM32开发板和计算机连接成功并且安装了STM32-STLINK驱动,就可以开始进行下载、调试和仿真微控制器的工作了。STM32-STLINK驱动提供了基本的调试工具,例如设置断点、查看变量和跟踪程序执行等功能,以帮助开发人员进行程序调试。此外,该驱动程序还支持许多高级功能,例如实时追踪、功耗分析和定时器分析等,以帮助开发人员更深入地了解和优化代码。 综上所述,STM32-STLINK驱动是连接STM32微控制器和计算机之间的关键软件程序,用于下载、调试和仿真微控制器。它具有易于使用和灵活的优点,是STM32开发的重要工具之一。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值