STM32HAL-GPIO基础理论以及函数应用

目录

IO端口的硬件结构

8种输出模式:

​编辑

HAL库中常见的GPIO函数以及用法:

1.GPIO的初始化

Mode:

Pull:

Speed:

2.HAL_GPIO_DeInit

3.HAL_GPIO_ReadPin

4.HAL_GPIO_WritePin

5.HAL_GPIO_TogglePin

7.HAL_GPIO_EXTI_Callback

8. __HAL_RCC_GPIOX_CLK_ENABLE();  

实战特训:

1.点亮LED

(a)LED灯的初始化

    (b)延时函数控制灯的亮变

2.按键输入实验:

(a)按键key.h

(b)key.c

(c)beep.c蜂鸣器

(d)beep.c

(e)main.c

原理图:STM32 GPIO 详解-CSDN博客



IO端口的硬件结构

保护二极管,保护接入电路的电压不会超过可承受的范围

上下拉电阻,通常阻值在 30-50KΩ ,是一种弱上下拉(电流很小,不具备驱动能力)

施密特触发器,可以使得非方波信号转为方波信号

   施密特触发器就是一种整形电路,可以将非标准方波整形成方波,特点如下当输入电压高于正向阈值电压,输出为高;当输入电压低于负向阈值电压,输出为低;当输入在正负向阈值电压之间,输出不改变

P-MOS & N-MOS 管

G是栅极,S是源极,D是漏极
对于 P-MOS:Vgs<0,导通
对于 N-MOS:Vgs>0,导通

8种输出模式:

HAL库中常见的GPIO函数以及用法:

1.GPIO的初始化
/** @defgroup GPIO_mode_define GPIO mode define
  * @brief GPIO Configuration Mode 
  *        Elements values convention: 0xX0yz00YZ
  *           - X  : GPIO mode or EXTI Mode
  *           - y  : External IT or Event trigger detection 
  *           - z  : IO configuration on External IT or Event
  *           - Y  : Output type (Push Pull or Open Drain)
  *           - Z  : IO Direction mode (Input, Output, Alternate or Analog)
  * @{
  */
#define  GPIO_MODE_INPUT                        MODE_INPUT                                               /*!< Input Floating Mode                   */
#define  GPIO_MODE_OUTPUT_PP                    (MODE_PP | MODE_OUTPUT)                                  /*!< Output Push Pull Mode                 */
#define  GPIO_MODE_OUTPUT_OD                    (MODE_OD | MODE_OUTPUT)                                  /*!< Output Open Drain Mode                */
#define  GPIO_MODE_AF_PP                        (MODE_PP | MODE_AF)                                      /*!< Alternate Function Push Pull Mode     */
#define  GPIO_MODE_AF_OD                        (MODE_OD | MODE_AF)                                      /*!< Alternate Function Open Drain Mode    */

#define  GPIO_MODE_ANALOG                       MODE_ANALOG                                              /*!< Analog Mode  */

#define  GPIO_MODE_IT_RISING                    (EXTI_MODE | GPIO_MODE_IT | RISING_EDGE)                 /*!< External Interrupt Mode with Rising edge trigger detection          */
#define  GPIO_MODE_IT_FALLING                   (EXTI_MODE | GPIO_MODE_IT               | FALLING_EDGE)  /*!< External Interrupt Mode with Falling edge trigger detection         */
#define  GPIO_MODE_IT_RISING_FALLING            (EXTI_MODE | GPIO_MODE_IT | RISING_EDGE | FALLING_EDGE)  /*!< External Interrupt Mode with Rising/Falling edge trigger detection  */

#define  GPIO_MODE_EVT_RISING                   (EXTI_MODE | GPIO_MODE_EVT | RISING_EDGE)                /*!< External Event Mode with Rising edge trigger detection               */
#define  GPIO_MODE_EVT_FALLING                  (EXTI_MODE | GPIO_MODE_EVT               | FALLING_EDGE) /*!< External Event Mode with Falling edge trigger detection              */
#define  GPIO_MODE_EVT_RISING_FALLING           (EXTI_MODE | GPIO_MODE_EVT | RISING_EDGE | FALLING_EDGE) /*!< External Event Mode with Rising/Falling edge trigger detection       */

void led_init(void)
{
    GPIO_InitTypeDef gpio_init_struct; //结构体
    
    __HAL_RCC_GPIOF_CLK_ENABLE();   //GPIOF时钟使能                    

    gpio_init_struct.Pin = GPIO_PIN_9;                 
    gpio_init_struct.Mode = GPIO_MODE_OUTPUT_PP;        
    gpio_init_struct.Pull = GPIO_PULLUP;               
    gpio_init_struct.Speed = GPIO_SPEED_FREQ_HIGH;      
    HAL_GPIO_Init(GPIOF, &gpio_init_struct);           

    gpio_init_struct.Pin = GPIO_PIN_10;               
    HAL_GPIO_Init(GPIOF, &gpio_init_struct);            

    HAL_GPIO_WritePin(GPIOF, GPIO_PIN_9, GPIO_PIN
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值