STM32 GPIO

STM32 GPIO

八种工作模式:

1、推挽输出 2、开漏输出 3、推挽式复用功能 4、开漏式复用功能

5、模拟输入(AD转换) 6、浮空输入 7、下拉输入 8、上拉输入

1、两个重要GPIO输出的HAL库函数:

1.1、GPIO电平输出HAL库函数:void HAL_GPIO_WritePin  
void HAL_GPIO_WritePin(GPIO_TypeDef "GPIOx", uint16_t "GPIO_Pin", GPIO_PinState "PinState");
 //HAL_GPIO_WritePin:电平输出函数名
对应参数:
  /*1、GPIOX:目标引脚的引脚号			
    2、GPIO_PIN:目标引脚的引脚号			
    3、PinState:高电平---GPIO_PIN_SET==1		低电平:GPIO_PIN_RESET==0*/
例子:向PB8引脚输出低电平
     HAL_GPIO_WritePin(GPIOB,GPIO_PIN_8,GPIO_PIN_RESET);
    
1.2 、GPIO电平反转HAL库函数:void HAL_GPIO_TogglePin
void HAL_GPIO_TogglePin(GPIO_TypeDef "*GPIOx", uint16_t "GPIO_Pin");
//void HAL_GPIO_TogglePin:电平反转函数名
对应参数:
  /*1、GPIOX:目标引脚的引脚号            
    2、GPIO_PIN:目标引脚的引脚号     */
例子:将PC13引脚输出电平反转
     HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_13);

2、按键常用的HAL库函数:

2.1、GPIO 电平输入HAL库函数:GPIO_PinState HAL_GPIO_ReadPin
GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef "*GPIOx", uint16_t "GPIO_Pin");
//GPIO_PinState HAL_GPIO_ReadPin:具有返回值的电平输入函数/返回 0或1
对应参数:
  /*1、GPIOX:目标引脚的引脚号            
    2、GPIO_PIN:目标引脚的引脚号     
    3、高电平---GPIO_PIN_SET==1     低电平:GPIO_PIN_RESET==0*/
    
例子:/*示例按键控制LED灯的亮灭(通过A5端口按键控制A12端口LED的亮灭)*/
​
宏定义:
#define KEY1 HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_5)     //宏定义按键KEY1(读取端口A5的输入电平)
#define KEY2 HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_10) // 宏定义按键KEY2(读取端口B10的输入电平)
    
    
延时函数:
void delay(unsigned int t)                          //延时函数
{
  while (t--);
}
​
按键函数:
/*示例按键控制LED灯的亮灭(通过A5端口按键控制A12端口LED的亮灭)按下按键,切换LED1的开关状态。*/
void scan_Keys()
{
  if (KEY1 == 0)                                  // 判断A5端口此时的电平是不是为低电平
  {
    delay(1000);                                  // 延时消抖
    if (KEY1 == 0)                                // 再次判断判断A5端口此时的电平是不是为低电平
    {
      HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_12);     // 通过翻转函数执行A12端口电平翻转实现按键控制led亮灭
      while (KEY1 == 0);
    }
  }
/*示例按键控制LED灯的亮灭(通过B10端口按键控制A11端口LED的亮灭)按下按键,松开后,切换LED2的开关状态。*/
​
  if (KEY2 == 0)                                  // 判断B10端口此时的电平是不是为低电平
  {
    delay(1000);                                  // 延时消抖
    if (KEY2 == 0)                                // 再次判断判断B10端口此时的电平是不是为低电平
    {
      while (KEY2 == 0);                          //按下时状态不变,松开后切换状态
      HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_11);     //通过翻转函数执行A11端口电平翻转实现按键控制led亮灭
    }
  }
}
​

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值