stm32-03-输入检测-按键

新建板级支持包文件夹

在这里插入图片描述
在这里插入图片描述

将.c文件加入到工程文件下的user中并在魔法棒中配置.h文件夹的路径

在这里插入图片描述
在这里插入图片描述

根据原理图编写.c文件和.h文件

在这里插入图片描述
关于上拉,下拉电阻的解释:https://blog.csdn.net/fymx203/article/details/89426403
在这里插入图片描述
根据原理图得到的信息:
GBIOA
浮空输入
第0位脚

根据以上信息编写头文件宏定义:

#ifndef __BSP_KEY_H
#define __BSP_KEY_H
#include "stm32f10x.h"

#define KEY_ON   1
#define KEY_OFF  0

#define KEY1_GPIO_PIN    GPIO_Pin_0
#define KEY1_GPIO_PORT   GPIOA
#define KEY1_GPIO_CLK    RCC_APB2Periph_GPIOA

#define LED_TOGGLE LED_G_GPIO_PORT->ODR ^= LED_G_GPIO_PIN; // 通过异或来反转电位实现开关

void KEY_GPIO_Config(void); //初始化GPIOA的函数
uint8_t Key_Scan(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);  //输入检测函数

#endif /* __BSP_KEY_H */

编写.c文件

#include "bsp_key.h"

void KEY_GPIO_Config(void){

	GPIO_InitTypeDef  GPIO_InitStruct;  //定义初始化结构体,初始化GPIO都要定义结构体来配合下面的GPIO_Init()函数
	RCC_APB2PeriphClockCmd(KEY1_GPIO_CLK,ENABLE);  //使能时钟源
	
	GPIO_InitStruct.GPIO_Pin = KEY1_GPIO_PIN; //设置管脚位置
	GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN_FLOATING; //设置模式为浮动输入模式
	GPIO_Init(KEY1_GPIO_PORT,&GPIO_InitStruct);  // 初始化GPIO
}

uint8_t Key_Scan(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin){
	if(GPIO_ReadInputDataBit(GPIOx,GPIO_Pin) == KEY_ON){ //读取GPIOA->IDR的电位来判断开关的状态
		//松手检测
		while(GPIO_ReadInputDataBit(GPIOx,GPIO_Pin) == KEY_ON);
		return KEY_ON;
	}else{
		return KEY_OFF; 
	}
}

写main.c函数

#include "stm32f10x.h"
#include "bsp_led.h"
#include "bsp_key.h"
#include "bsp_rccclkconfig.h"

void Delay(uint32_t count){
	for(;count!=0;count--);

}

int main(void){
	LED_GPIO_Config();
	KEY_GPIO_Config();
	while(1){
		if( Key_Scan(KEY1_GPIO_PORT,KEY1_GPIO_PIN) ==KEY_ON ){
			LED_TOGGLE;
		}
	}
	
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: STM32-F103指南者是一款功能强大的STM32系列微控制器开发板,具有丰富的外设接口和强大的计算能力,可以广泛应用于物联网、工业控制、智能家居等领域。下面是使用STM32-F103指南者的几个关键步骤和技巧: 1. 硬件连接:首先,将STM32-F103指南者与计算机通过USB线连接,并将开发板上的BOOT0脚连接到3.3V电源,用于进入固件烧录模式。此外,根据具体需求连接外设,如按键、LED灯、串口设备等。 2. 环境搭建:在开始开发之前,需要安装所需的开发环境。可以选择使用Keil MDK作为集成开发环境,或者使用CubeMX结合Keil或者IAR等进行开发。此外,还需要安装对应的驱动程序和STM32的开发工具包。 3. 编写代码:使用C语言或汇编语言编写嵌入式程序,可使用Keil或者其他编辑器进行编写。对于初学者,推荐先从简单的LED闪烁等例程开始,逐步学习掌握STM32-F103的各种外设的使用方法和相关驱动库。 4. 烧录程序:编写好的程序需要通过烧录工具将其烧录到STM32-F103指南者中。可以使用ST-Link、J-Link等烧录工具,将生成的二进制文件烧录到开发板的Flash中。 5. 调试和测试:在程序烧录完成后,可以通过串口调试助手等工具进行调试和测试。通过输出调试信息或读取外设状态,检验程序运行是否符合预期。 总之,零死角玩转STM32-F103指南者需要熟练掌握STM32-F103系列微控制器的技术特性和外设接口的使用方法,以及具备相应的嵌入式开发能力。通过不断学习、实践和探索,能够更加灵活和高效地开发基于STM32-F103开发板的应用程序。 ### 回答2: 零死角玩转stm32-f103指南者 stm32-f103指南者是一款非常强大的微控制器开发板,可以实现多种功能和项目。要想充分发挥stm32-f103指南者的能力,需要掌握一些基本的知识和技巧。 首先,我们需要了解stm32-f103指南者的基本硬件和软件结构。它采用了stm32f103芯片,拥有许多的GPIO引脚、模拟输入输出、串口、定时器等功能。了解这些硬件资源的分布和功能,可以帮助我们更好地设计和编程。 其次,我们需要学习并掌握相应的开发工具和语言。stm32-f103指南者支持多种开发环境,比如Keil、IAR等。我们可以选择适合自己的开发工具,并熟悉其使用方法。同时,C语言是stm32-f103指南者的主要开发语言,我们需要学习C语言的基本语法和stm32-f103指南者的相关函数库。 接下来,我们可以尝试一些简单的实践项目,比如LED闪烁、按键检测、PWM控制等。通过这些实践项目,我们可以进一步理解stm32-f103指南者的工作原理和编程方法。 在实际项目中,我们可以结合其他模块和传感器进行更复杂的应用。比如可以连接LCD屏幕显示数据、连接WiFi模块实现远程控制、连接传感器实现环境监测等。这些应用可以帮助我们更好地了解stm32-f103指南者的多功能性。 最后,要想玩转stm32-f103指南者,我们还需要不断学习和尝试。可以参考相关的教程和文档,参与技术交流社区,与其他开发者分享经验。只有持续学习和实践,我们才能在stm32-f103指南者的世界中修炼出一双炉火纯青的技能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值