stm32—GIOP固件库输入输出(+点亮LED+按键检测)
2020-03-01 08:12
232 查看
bsp_key.h
#ifndef __BSP_KEY_H #define __BSP_KEY_H #include "stm32f10x.h" #include "bsp_led.h" #define KEY_K1_GPIO_Pin GPIO_Pin_0/*引脚*/ #define KEY_K1_GPIO_PORT GPIOA/*端口*/ #define KEY_K1_GPIO_CLK RCC_APB2Periph_GPIOA/*时钟*/ #define KEY_K2_GPIO_Pin GPIO_Pin_13/*引脚*/ #define KEY_K2_GPIO_PORT GPIOC #define KEY_K2_GPIO_CLK RCC_APB2Periph_GPIOC #define KEY_ON 1 #define KEY_OFF 0 void KEY_GPIO_Config(GPIO_TypeDef *GPIOx ,uint16_t GPIO_PIN ,uint32_t GPIO_CLK);// /* 端口 引脚 时钟*/ void Key_Exercice (GPIO_TypeDef *LED_GPIOx ,uint16_t LED_GPIO_PIN ,uint32_t LED_GPIO_CLK ,GPIO_TypeDef *KEY_GPIOx ,uint16_t KEY_GPIO_PIN ,uint32_t KEY_GPIO_CLK); /* 端口 引脚 时钟 端口 引脚 时钟 */ uint8_t Key_Scan(GPIO_TypeDef *GPIOx ,uint16_t GPIO_Pin);/*KEYÊäÈë¼ì²â*/ /* 端口 引脚*/ #endif /*__BSP_KEY_H*/
bsp_led.h
#ifndef __BSP_KEY_H #define __BSP_KEY_H #include "stm32f10x.h" #include "bsp_led.h" #define KEY_K1_GPIO_Pin GPIO_Pin_0//引脚 #define KEY_K1_GPIO_PORT GPIOA//端口 #define KEY_K1_GPIO_CLK RCC_APB2Periph_GPIOA//时钟 #define KEY_K2_GPIO_Pin GPIO_Pin_13//引脚 #define KEY_K2_GPIO_PORT GPIOC//端口 #define KEY_K2_GPIO_CLK RCC_APB2Periph_GPIOC//时钟 #define KEY_ON 1 #define KEY_OFF 0 void KEY_GPIO_Config(GPIO_TypeDef *GPIOx ,uint16_t GPIO_PIN ,uint32_t GPIO_CLK);// // 端口 引脚 时钟 void Key_Exercice (GPIO_TypeDef *LED_GPIOx ,uint16_t LED_GPIO_PIN ,uint32_t LED_GPIO_CLK ,GPIO_TypeDef *KEY_GPIOx ,uint16_t KEY_GPIO_PIN ,uint32_t KEY_GPIO_CLK); // 端口 引脚 时钟 端口 引脚 时钟 uint8_t Key_Scan(GPIO_TypeDef *GPIOx ,uint16_t GPIO_Pin);//KEYÊäÈë¼ì²â // 端口 引脚 #endif /*__BSP_KEY_H*/
bsp_key.c
//bsp : board support packge #include "bsp_led.h" void LED_GPIO_Config(GPIO_TypeDef *LED_GPIOx ,uint16_t LED_GPIO_PIN ,uint32_t LED_GPIO_CLK)// // 端口 引脚 时钟 { GPIO_InitTypeDef GPIO_InitStruct; GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; RCC_APB2PeriphClockCmd(LED_GPIO_CLK, ENABLE); GPIO_InitStruct.GPIO_Pin = LED_GPIO_PIN; GPIO_Init(LED_GPIOx,&GPIO_InitStruct); } void Delay( uint32_t count) { for(;count!=0;count--); } void LED_LIGHT_EXCERSICE(void) { LED_GPIO_Config(LED_G_GPIO_PORT,LED_G_GPIO_Pin,LED_G_GPIO_CLK); //初始化 Delay(0xfffff); GPIO_SetBits(LED_G_GPIO_PORT,LED_G_GPIO_Pin); Delay(0xfffff); GPIO_ResetBits(LED_G_GPIO_PORT,LED_G_GPIO_Pin); Delay(0xfffff); LED_GPIO_Config(LED_R_GPIO_PORT,LED_R_GPIO_Pin,LED_R_GPIO_CLK); //初始化 Delay(0xfffff); GPIO_SetBits(LED_R_GPIO_PORT,LED_R_GPIO_Pin); Delay(0xfffff); GPIO_ResetBits(LED_R_GPIO_PORT,LED_R_GPIO_Pin); Delay(0xfffff); LED_GPIO_Config(LED_B_GPIO_PORT,LED_B_GPIO_Pin,LED_B_GPIO_CLK); //初始化 Delay(0xfffff); GPIO_SetBits(LED_B_GPIO_PORT,LED_B_GPIO_Pin); Delay(0xfffff); GPIO_ResetBits(LED_B_GPIO_PORT,LED_B_GPIO_Pin); Delay(0xfffff); }
bsp_key.c
/***********************按键检测***********************/ #include "bsp_key.h" #include "bsp_led.h" void KEY_GPIO_Config(GPIO_TypeDef *GPIOx ,uint16_t GPIO_PIN ,uint32_t GPIO_CLK) { GPIO_InitTypeDef GPIO_InitStruct; GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN_FLOATING; RCC_APB2PeriphClockCmd(GPIO_CLK, ENABLE); GPIO_InitStruct.GPIO_Pin = GPIO_PIN; GPIO_Init( GPIOx ,&GPIO_InitStruct); } uint8_t Key_Scan(GPIO_TypeDef *GPIOx ,uint16_t GPIO_Pin) { if(GPIO_ReadInputDataBit(GPIOx,GPIO_Pin) == KEY_ON) { //松手检测 while( GPIO_ReadInputDataBit(GPIOx,GPIO_Pin) == KEY_ON ); return KEY_ON; } else { return KEY_OFF; } } void Key_Exercice (GPIO_TypeDef *LED_GPIOx ,uint16_t LED_GPIO_PIN ,uint32_t LED_GPIO_CLK ,GPIO_TypeDef *KEY_GPIOx ,uint16_t KEY_GPIO_PIN ,uint32_t KEY_GPIO_CLK) { LED_GPIO_Config(LED_GPIOx,LED_GPIO_PIN,LED_GPIO_CLK);//初始化 KEY_GPIO_Config(KEY_GPIOx,KEY_GPIO_PIN,KEY_GPIO_CLK);//初始化 if (Key_Scan(KEY_GPIOx,KEY_GPIO_PIN) == KEY_ON ) { if(LED_GPIO_PIN == LED_G_GPIO_Pin)//当LED引脚GREEN { LED_G_TOGGLE; } else if(LED_GPIO_PIN == LED_R_GPIO_Pin)//当LED引脚为RED { LED_R_TOGGLE; } else if(LED_GPIO_PIN == LED_B_GPIO_Pin)//当LED引脚为BLUE { LED_B_TOGGLE; } } }
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- STM32使用固件库点亮LED
- S3C2440-裸机篇-03 | GPIO的使用(点亮LED、按键检测)
- 第11章 GPIO输出-使用固件库点亮LED—零死角玩转STM32-F429系列
- STM32通过按键中断点亮led灯
- STM32按键控制LED(不用固件库)
- STM32_外部中断之按键控制点亮LED灯
- HAL库学习笔记:一、按键检测点亮LED彩灯
- STM32 外部中断的使用(按键中断点亮LED)
- STM32实战1:按键点亮LED小灯
- 转STM32自学系列——1.gpio(通用复用输入输出口)应用点亮LED和微动开关
- 第11章 GPIO输出-使用固件库点亮LED—零死角玩转STM32-F429系列
- STM32F40实现 按键密码锁、按键控制LED 、串口选择菜单 、串口控制LED开关 、串口控制蜂鸣器开关及响度 、串口控制蜂鸣器播放音乐 、按键控制LED的亮度
- Linux驱动开发之S3C2440按键点亮LED
- Linux驱动开发之S3C2440按键点亮LED
- 第12章 GPIO输入-按键检测—零死角玩转STM32-F429系列
- 2.STM32中对Key_GPIO_Config()函数的理解(自定义)之轮询控制按键LED
- 第7章 使用寄存器点亮LED灯—零死角玩转STM32-F429系列
- STM32学习心得(二)点亮LED灯
- STM32 自建库点亮LED
- STM32学习第一课——新建工程与点亮LED灯