大学生
最后登录1970-1-1
在线时间 小时
注册时间2016-11-30
|
现象:按下复位键,LED2和LED3被点亮。按下K1(K2)键,LED2(LED3)灭,再按一次,LED2(LED3)亮。。。。。
code
- #ifndef _BSP_KEY_H
- #define _BSP_KEY_H
- #include "stm32f10x.h"
- #define KEY1_GPIO_PIN GPIO_Pin_0
- #define KEY1_GPIO_PORT GPIOA
- #define KEY1_RCC_APB2_CLOCK_ENABLE RCC_APB2Periph_GPIOA
- #define KEY2_GPIO_PIN GPIO_Pin_13
- #define KEY2_GPIO_PORT GPIOC
- #define KEY2_RCC_APB2_CLOCK_ENABLE RCC_APB2Periph_GPIOC
- #define KEY_ON 1
- #define KEY_OFF 0
- void KEY1_GPIO_Config(void);
- void KEY2_GPIO_Config(void);
- uint8_t Key2_Scan(GPIO_TypeDef* GPIOx,uint16_t GPIO_Pin);
- uint8_t Key3_Scan(GPIO_TypeDef* GPIOx,uint16_t GPIO_Pin);
- #endif /*_BSP_KEY_H*/
- #include "bsp_key.h"
- void Delay(uint32_t count)
- {
- for(;count!=0;count--);
- }
- void KEY1_GPIO_Config(void)
- {
- GPIO_InitTypeDef KEY1_GPIO_InitStruct;
-
- RCC_APB2PeriphClockCmd(KEY1_RCC_APB2_CLOCK_ENABLE,ENABLE);
- KEY1_GPIO_InitStruct.GPIO_Pin = KEY1_GPIO_PIN;
- KEY1_GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN_FLOATING;
-
- GPIO_Init(KEY1_GPIO_PORT,&KEY1_GPIO_InitStruct);
- }
- void KEY2_GPIO_Config(void)
- {
- GPIO_InitTypeDef KEY2_GPIO_InitStruct;
-
- RCC_APB2PeriphClockCmd(KEY2_RCC_APB2_CLOCK_ENABLE,ENABLE);
- KEY2_GPIO_InitStruct.GPIO_Pin = KEY2_GPIO_PIN;
- KEY2_GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN_FLOATING;
-
- GPIO_Init(KEY2_GPIO_PORT,&KEY2_GPIO_InitStruct);
- }
- uint8_t Key2_Scan(GPIO_TypeDef* GPIOx,uint16_t GPIO_Pin)
- {
- if(GPIO_ReadInputDataBit(GPIOx,GPIO_Pin) == KEY_ON)
- {
- Delay(20000);//软件消抖
- if(GPIO_ReadInputDataBit(GPIOx,GPIO_Pin) == KEY_ON)
- {//松手检测
- while(GPIO_ReadInputDataBit(GPIOx,GPIO_Pin) == KEY_ON);
- return KEY_ON;
- }
- else return KEY_OFF;
- }
- else return KEY_OFF;
- }
- uint8_t Key3_Scan(GPIO_TypeDef* GPIOx,uint16_t GPIO_Pin)
- {
- if(GPIO_ReadInputDataBit(GPIOx,GPIO_Pin) == KEY_OFF)
- {
- Delay(20000);//软件消抖
- if(GPIO_ReadInputDataBit(GPIOx,GPIO_Pin) == KEY_OFF)
- {//松手检测
- while(GPIO_ReadInputDataBit(GPIOx,GPIO_Pin) == KEY_OFF);
- return KEY_OFF;
- }
- else return KEY_ON;
- }
- else return KEY_ON;
- }
- #include "stm32f10x.h"
- #include "bsp_led.h"
- #include "bsp_key.h"
- int main(void)
- {
- LED2_GPIO_Config();
- LED3_GPIO_Config();
- KEY1_GPIO_Config();
- KEY2_GPIO_Config();
- while(1)
- {
- if( Key2_Scan(KEY1_GPIO_PORT,KEY1_GPIO_PIN) == ((uint8_t)KEY_ON))
- LED2_GPIO_TOGGLE;
- if( Key3_Scan(KEY2_GPIO_PORT,KEY2_GPIO_PIN) == ((uint8_t)KEY_OFF))
- LED3_GPIO_TOGGLE;
- }
- }
复制代码
|
|