zoukankan      html  css  js  c++  java
  • 04、基于STM32的按键操作

    void deply(uint32_t count)
    {
    	while(count--);
    }
    
    void InitLED()
    {
    
    	GPIO_InitTypeDef GPIO_InitStrue;
    	
    	//打开端口A、E、F时钟,使能通电
    	RCC_AHB1PeriphClockCmd(  RCC_AHB1Periph_GPIOA 
    							|RCC_AHB1Periph_GPIOE
    							|RCC_AHB1Periph_GPIOF,ENABLE);
    	
    	//设置端口F为输出模式
    	GPIO_InitStrue.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10;//设置引脚9、10
    	GPIO_InitStrue.GPIO_Mode = GPIO_Mode_OUT;//设置为输出模式
    	GPIO_InitStrue.GPIO_OType = GPIO_OType_PP;//设置为推挽模式
    	GPIO_InitStrue.GPIO_PuPd = GPIO_PuPd_NOPULL;//设置为无上下拉电阻
    	GPIO_InitStrue.GPIO_Speed = GPIO_Speed_100MHz;//设置输出速率为100MHz
    	GPIO_Init(GPIOF,&GPIO_InitStrue);//初始化端口F
    	
    	GPIO_InitStrue.GPIO_Pin = GPIO_Pin_13|GPIO_Pin_14;//设置引脚13、14
    	
    	GPIO_Init(GPIOE,&GPIO_InitStrue);//初始化端口E
    	
    	GPIO_InitStrue.GPIO_Pin = GPIO_Pin_0;//设置引脚0
    	GPIO_InitStrue.GPIO_Mode = GPIO_Mode_IN;//设置为输入模式
    	GPIO_InitStrue.GPIO_PuPd = GPIO_PuPd_NOPULL;//设置无上下拉电阻
    	GPIO_InitStrue.GPIO_Speed = GPIO_Speed_100MHz;//设置输出速率为100MHz
    	GPIO_Init(GPIOA,&GPIO_InitStrue);//初始化话端口A
    	
    	GPIO_InitStrue.GPIO_Pin = GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4;//设置引脚2、3、4
    	GPIO_Init(GPIOE,&GPIO_InitStrue);//初始化端口E
    		
    	
    	GPIO_SetBits(GPIOF,GPIO_Pin_9|GPIO_Pin_10);
    	
    	
    	GPIO_SetBits(GPIOE,GPIO_Pin_13|GPIO_Pin_14);
    	
    	
    }
    
    void LED_on()
    {
    	GPIO_ResetBits(GPIOF,GPIO_Pin_9);
    	deply(0x0FFFFF);
    	GPIO_SetBits(GPIOF,GPIO_Pin_9);
    	deply(0x0FFFFF);
    	
    	GPIO_ResetBits(GPIOF,GPIO_Pin_10);
    	deply(0x0FFFFF);
    	GPIO_SetBits(GPIOF,GPIO_Pin_10);
    	deply(0x0FFFFF);
    	
    	GPIO_ResetBits(GPIOE,GPIO_Pin_13);
    	deply(0x0FFFFF);
    	GPIO_SetBits(GPIOE,GPIO_Pin_13);
    	deply(0x0FFFFF);
    	
    	GPIO_ResetBits(GPIOE,GPIO_Pin_14);
    	deply(0x0FFFFF);
    	GPIO_SetBits(GPIOE,GPIO_Pin_14);
    	deply(0x0FFFFF);
    }
    
    void LED_off()
    {
    	GPIO_SetBits(GPIOF,GPIO_Pin_9);
    	GPIO_SetBits(GPIOF,GPIO_Pin_10);
    	GPIO_SetBits(GPIOE,GPIO_Pin_13);
    	GPIO_SetBits(GPIOE,GPIO_Pin_14);
    }
    
    void LED_cycle()
    {
    	while(1)
    	{
    		//按下key0
    		if(Bit_RESET==GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0))
    		{
    			LED_on();
    		}
    		else
    		{
    			LED_off();
    		}
    		
    		//按下key1
    		if(Bit_RESET==GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_2))
    		{
    			LED_on();
    		}
    		else
    		{
    			LED_off();
    		}
    		
    		//按下key2
    		if(Bit_RESET==GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_3))
    		{
    			LED_on();
    		}
    		else
    		{
    			LED_off();
    		}
    		
    		//按下key3
    		if(Bit_RESET==GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_4))
    		{
    				LED_on();
    		}
    		else
    		{
    			LED_off();
    		}
    	}
    }
    
    int main(void)
    {
    	InitLED();
    
    	LED_cycle();
    	
    	
    }
    
  • 相关阅读:
    HDOJ 1069_大二写
    HDOJ 2037:今年暑假不AC_大二写
    第二次HDOJ:1058
    HDOJ 1019
    第二次 HDOJ 1003
    第二次做HDOJ 1051
    memset()的用法
    数据结构中的频度含义
    程序框图的书写
    python课堂整理22----装饰器进阶
  • 原文地址:https://www.cnblogs.com/lp06/p/11841439.html
Copyright © 2011-2022 走看看