首页 > 代码库 > [stm32] 按键

[stm32] 按键

 

防抖时间设的不是太好....

 1 /*
 2 ::按键控制
 3 PA8接LED,PE2接按键
 4 */
 5 #include"stm32f10x.h"
 6 void RCC_Configuration(void);
 7 void GPIO_Config(void);
 8 void Delay(__IO uint32_t nCount);
 9 
10 int main()
11 {
12   RCC_Configuration();                   //系统时钟配置|使能GPIO口
13   GPIO_Config();                            //LED控制配置
14   while (1)
15   {
16       if(!GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_2))
17     {
18          Delay(0x000FF);//延时防抖
19         if(!GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_2))
20         {
21             GPIO_WriteBit(GPIOA,GPIO_Pin_8,(BitAction)(1-GPIO_ReadOutputDataBit(GPIOA,GPIO_Pin_8)));
22         }
23     }
24   }
25 }
26 /****************************************************************************
27 * 名    称:void GPIO_Config(void)
28 * 功    能:GPIO初始化函数
29 * 入口参数:无
30 * 出口参数:无
31 * 说    明:
32 * 调用方法:无 
33 ****************************************************************************/ 
34 void GPIO_Config(void)
35 {
36   GPIO_InitTypeDef GPIO_InitStructure;
37   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;    //配置LEDA8                  
38   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//推挽输出
39   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;        
40   GPIO_Init(GPIOA, &GPIO_InitStructure);
41   
42   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;    //配置按键PE2          
43   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;//上拉输入
44   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;        
45   GPIO_Init(GPIOE, &GPIO_InitStructure);
46 }
47 /****************************************************************************
48 * 名    称:void RCC_Configuration(void)
49 * 功    能:系统时钟配置为72MHZ|使能GPIO口
50 * 入口参数:无
51 * 出口参数:无
52 * 说    明:
53 * 调用方法:无 
54 ****************************************************************************/ 
55 void RCC_Configuration(void)
56 {   
57   SystemInit();
58   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA |RCC_APB2Periph_GPIOE, ENABLE);//使能GPIO口
59 }
60 /****************************************************************************
61 * 名    称:void Delay(__IO uint32_t nCount)
62 * 功    能:延时函数
63 * 入口参数:无
64 * 出口参数:无
65 * 说    明:
66 * 调用方法:无 
67 ****************************************************************************/ 
68 void Delay(__IO uint32_t nCount)
69 {
70    for(; nCount != 0; nCount--);
71 }