• 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();
    	
    	
    }
    
  • 相关阅读:
    centos基于.net的第一个asp项目
    centos创建第一个 .NET app
    centos搭建.net3.1环境
    ASP.NET Core 的 Docker 映像
    centos+python2+django+nginx+uwsgi环境搭建
    centos+python2+flask+nginx+uwsgi环境搭建
    centos+python2+apache2+flask环境搭建
    小程序字体转换
    小程序播放语音之wx.createInnerAudioContext()
    小程序隐藏scroll-view滚动条的实现
  • 原文地址:https://www.cnblogs.com/lp06/p/11841439.html
Copyright © 2020-2023  润新知