STM32_配置按键key

 程序代码

/*实现按键点亮红灯,熄灭红灯转换,即按一下亮,再按一下灭*/
#include "stm32f10x.h" #include "stm32f10x_gpio.h" #include "stm32f10x_exti.h" #include "led.h" #include "key1.h" void key1(){ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//时钟外设使能,因为按键的管脚在GPIOA的外设下,所以是配置GPIOA GPIO_InitTypeDef gpio; //定义结构体变量 gpio.GPIO_Mode = GPIO_Mode_IN_FLOATING; //配置GPIO管脚工作状态为浮空输入 gpio.GPIO_Pin = GPIO_Pin_0; //选择GPIO的第0个引脚 gpio.GPIO_Speed = GPIO_Speed_50MHz; //设置管脚的速率为50MHz GPIO_Init(GPIOA,&gpio); //GPIO初始化 //点亮红灯,此函数在LED.H文件里头 RED_ON //定义一个记录按键之前状态的变量 pre char pre =0; while(1) { //把GPIOA_pin_0管脚的值读取出来,也就是按键的状态值,赋给states int states = GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0); //如果按键按下,且按键之前的状态值是松开的,实际上是为了避免按键一直按着,不能准确的判断出LED的状态 if(states == 0 && pre == 1) { //读取GPIOB_pin_5管脚的状态数据,如果它是低电平,即红灯是点亮的 if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_5) == 0) { //熄灭红灯 RED_OFF }else { //否则,亮红灯 RED_ON } } //把当前的按键状态赋给pre,作为下一次的之前状态 pre = states; } }

 

转载于:https://www.cnblogs.com/liangjinjie/p/8021894.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
STM32F407上配置按键需要进行以下步骤: 1. 打开STM32CubeMX软件,选择对应的芯片型号和工程路径。 2. 在Pinout & Configuration选项卡中,找到对应的引脚配置。根据引用\[1\]中提供的信息,KEY0连接到PE4,KEY1连接到PE3,KEY2连接到PE2,KEY_UP连接到PA0。 3. 将这些引脚配置为输入模式,并设置默认状态为下拉。这可以通过在GPIO设置中进行配置来实现。 4. 生成代码并打开生成的工程。 5. 在工程中新建key.c和key.h文件,并将其添加到工程中。引用\[3\]中提供了一个示例的key.h文件,你可以根据需要进行修改。 6. 在key.h文件中,定义按键的读取函数和按键的状态宏。根据引用\[3\]中的示例,你可以使用HAL库函数来读取IO引脚的状态。 7. 在主程序中调用KEY_Scan函数来扫描按键状态,并根据需要进行相应的处理。你可以根据需要在KeyEvent函数中编写按键事件的处理代码。 这样,你就可以在STM32F407上成功配置按键了。 #### 引用[.reference_title] - *1* *2* *3* [4.STM32F407之HAL库——按键](https://blog.csdn.net/qq_36528377/article/details/122475292)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值