STM32之按键检测

KEY是按键,接PE2口,LED灯,接PC0口,使用STMF103ZET6,则用按键控制小灯亮灭的标准库程序如下:

#include "led.h"                  // Device header
#include "key.h"
#include "SysTick.h"

int main()
{   
    SysTick_Init(72);
    Led_Init();
    Key_Init();
    while(1)
    {
      if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)==1)
        {
            delay_ms(20);
            while(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)==1)
            {
                GPIO_ResetBits(GPIOC,GPIO_Pin_0);
                delay_ms(50);
            }
             
        }
      if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)==0)
        {
            delay_ms(20);
            while(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)==0)
            {
                GPIO_SetBits(GPIOC,GPIO_Pin_0);
                delay_ms(50);
            }
        }
    }
}   





使用HAL库,其代码如下:

while (1)
  {
	 HAL_GPIO_ReadPin(KEY_GPIO_Port,KEY_Pin);
	 if(HAL_GPIO_ReadPin(KEY_GPIO_Port,KEY_Pin)==GPIO_PIN_RESET)
	 {
		 HAL_GPIO_WritePin(LED_GPIO_Port,LED_Pin,GPIO_PIN_RESET);

	 }else
	 {
		 HAL_GPIO_WritePin(LED_GPIO_Port,LED_Pin,GPIO_PIN_SET);

	 }

    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }

需要注意的是,HAL库的库函数比较少,不如标准库的灵活,但是HAL可以实现图形化编程,大大降低了编程的难度。

你可能感兴趣的:(stm32,嵌入式硬件,单片机)