原创 STM32的TCP/IP网络采集器番外篇之键控LED

2008-8-11 23:23 3854 10 10 分类: MCU/ 嵌入式

学习完流水LED,也要学习简单的输入控制,就是按键了,还是单独的按键,不是点阵按键,够简单了吧。按KEY2就点亮LED4,按KEY3就熄灭LED4,好了,上代码


#include <stm32f10x_lib.h>


GPIO_InitTypeDef GPIO_InitStructure; //GPIO初始化结构体
void Delay(vu32 nCount);
u16 getkey(void);


int main(void)
{
 //使能GPIO时钟
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE);
       
        //初始化LED输出IO
 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7;
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //带上拉输出
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; //输出频率最大2M
 GPIO_Init(GPIOC, &GPIO_InitStructure);
       
        //初始化KEY2,KEY3输入IO
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3 | GPIO_Pin_4;  
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;     //带上拉输入
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
        GPIO_Init(GPIOD, &GPIO_InitStructure);
       
 //KEY2点亮LED1,KEY3关闭LED1
        while(1)
  {
                   switch(getkey())
                   {
                    case 2:
                      GPIO_SetBits(GPIOC, GPIO_Pin_4);
        break;
                    case 3:
                      GPIO_ResetBits(GPIOC, GPIO_Pin_4);
                      break;
                   }
  }


}


/*****************************************************
函数: void Delay(vu32 nCount)
参数: vu32 nCount 延时时间
描述: 延时指定时间
返回: 无
******************************************************/
void Delay(vu32 nCount)
{
  for(; nCount != 0; nCount--);
}


/*****************************************************
函数: u16 getkey(void)
参数:
描述: 延时指定时间
返回: 按键值
******************************************************/
u16 getkey(void)
{
    u16 input;
    while(1)
    {
        input = GPIO_ReadInputData(GPIOD);
        if(!(input & 0x08))
          return 2;
        if(!(input & 0x10))
          return 3;
    }
}

文章评论0条评论)

登录后参与讨论
我要评论
0
10
关闭 站长推荐上一条 /2 下一条