(备份) esp32 GPIO

发布于:2024-09-18 ⋅ 阅读:(4) ⋅ 点赞:(0)

我理解,任何要对esp32某一脚进行读写操作都要配置gpio。

可以对不同类型,不同的io脚进行配置,比如可以配置2脚为输入,3脚为输出,4脚为上升沿中断

可以用gpio_config_t  结构体对某脚进行配置,也可以用多个gpio函数对某脚进行配置


struct    gpio_config_t

Public Members
{

      uint64_t                   pin_bit_mask                  //使用位掩码设置,每个位映射到一个 GPIO。  1ULL<<12

      gpio_mode_t            mode                      //GPIO 模式:设置输入/输出模式
                                                                               GPIO_MODE_INPUT:将 GPIO 设置为输入模式
                                                                                GPIO_MODE_OUTPUT:将 GPIO 设置为输出模式
                                                                                GPIO_MODE_INPUT_OUTPUT:将 GPIO 设置为输入/输出模式
                                                                                 GPIO_MODE_OUTPUT_OD:将 GPIO 设置为开漏输出模式 这种模式下,GPIO 引脚可以将电流拉到地,但不会主动驱动高电平。通常与外部上拉电阻配合使用
                                                                                GPIO_MODE_INPUT_OUTPUT_OD:将 GPIO 设置为开漏输入/输出模式
                                                                                GPIO_MODE_INPUT_OUTPUT_STRONG:将 GPIO 设置为强驱动输入/输出模式。这种模式下,GPIO 引脚能够主动驱动高电平和低电平
    
       gpio_pullup_t            pull_up_en               //GPIO 上拉
                                                                       GPIO_PULLUP_DISABLE:禁用上拉电阻。GPIO 引脚不会连接到 VCC
                                                                       GPIO_PULLUP_ENABLE:启用上拉电阻。GPIO 引脚会通过上拉电阻连接到 VCC

      gpio_pulldown_t       pull_down_en     //  GPIO 下拉
                                                                        GPIO_PULLDOWN_DISABLE:禁用下拉电阻。GPIO 引脚不会连接到地。

                                                                         GPIO_PULLDOWN_ENABLE:启用下拉电阻。GPIO 引脚会通过下拉电阻连接到地。

      gpio_int_type_t         intr_type                //GPIO 中断类型

                                                                      GPIO_INTR_DISABLE:禁用 GPIO 中断。GPIO 引脚不会触发中断。

                                                                     GPIO_INTR_POSEDGE:在上升沿触发中断。GPIO 引脚从低电平变为高电平时触发中断。

                                                                      GPIO_INTR_NEGEDGE:在下降沿触发中断。GPIO 引脚从高电平变为低电平时触发中断。

                                                                      GPIO_INTR_ANYEDGE:在任意边沿触发中断。GPIO 引脚在上升沿或下降沿时触发中断。

                                                                      GPIO_INTR_LOW_LEVEL:在低电平期间触发中断。GPIO 引脚保持低电平时触发中断。

                                                                      GPIO_INTR_HIGH_LEVEL:在高电平期间触发中断。GPIO 引脚保持高电平时触发中断

}

//---函数------------------------------------------------------------------------------


1   esp_err_t      gpio_config (const gpio_config_t *pGPIOConfig)

2.  esp_err_t       gpio_reset_pin  (gpio_num_t gpio_num)

    将 GPIO 复位为默认状态(选择 GPIO 功能,启用上拉,并禁用输入和输出)

3   esp_err_t       gpio_set_intr_type   (gpio_num_t gpio_num, gpio_int_type_t intr_type)

      设置 GPIO 的中断触发类型

4   esp_err_t     gpio_intr_enable  (gpio_num_t gpio_num)

        启用 GPIO 模块的中断信号。

5  esp_err_t      gpio_intr_disable  (gpio_num_t gpio_num)

     禁用 GPIO 模块的中断信号

6  esp_err_t     gpio_set_level  (gpio_num_t gpio_num, uint32_t level)

    
 7   int       gpio_get_level  (gpio_num_t gpio_num)     


8  esp_err_t      gpio_set_direction  (gpio_num_t gpio_num, gpio_mode_t mode)

     设置指定 GPIO 的工作模式。
9   esp_err_t     gpio_set_pull_mode (gpio_num_t gpio_num, gpio_pull_mode_t pull)

      配置 GPIO 的上拉/下拉电阻。

10  esp_err_t      gpio_wakeup_enable  (gpio_num_t gpio_num, gpio_int_type_t intr_type)

       启用 GPIO 唤醒功能

11   esp_err_t    gpio_wakeup_disable (gpio_num_t gpio_num)

12   esp_err_t    gpio_pullup_en  (gpio_num_t gpio_num)

       Enable pull-up on GPIO.

13    esp_err_t     gpio_pulldown_en (gpio_num_t gpio_num)

        Enable pull-down on GPIO.

14   esp_err_t     gpio_pulldown_dis (gpio_num_t gpio_num)

       Disable pull-down on GPIO.

15    esp_err_t    gpio_install_isr_service  (int intr_alloc_flags)

       安装 GPIO 驱动程序的 ETS_GPIO_INTR_SOURCE ISR 处理程序服务,该服务允许为每个引脚设置 GPIO 中断处理程序

16     void    gpio_uninstall_isr_service(void)

        
       卸载驱动程序的 GPIO ISR 服务,释放相关资源。
17   esp_err_t     gpio_isr_handler_add  (gpio_num_t gpio_num, gpio_isr_t isr_handler, void *args)

        为相应的 GPIO 引脚添加 ISR 处理程序。

18    esp_err_t      gpio_isr_handler_remove  (gpio_num_t gpio_num)


19   esp_err_t     gpio_set_drive_capability  (gpio_num_t gpio_num, gpio_drive_cap_t strength)

      设置 GPIO 引脚的驱动能力。
20    esp_err_t      gpio_get_drive_capability  (gpio_num_t gpio_num, gpio_drive_cap_t *strength)


21   esp_err_t     gpio_hold_en (gpio_num_t gpio_num)

         启用 GPIO 引脚保持功能

22    esp_err_t     gpio_hold_dis (gpio_num_t gpio_num)


23   void     gpio_deep_sleep_hold_en  (void)

       在深度睡眠期间启用所有数字 GPIO 引脚的保持功能。

24   void     gpio_deep_sleep_hold_dis (void)


25   void     gpio_iomux_in  (uint32_t gpio_num, uint32_t signal_idx)


         通过 IOMUX 将引脚输入设置为外设信号

26   void    gpio_iomux_out  (uint8_t gpio_num, int func, bool out_en_inv)

       通过 IOMUX 将外设输出设置到 GPIO 引脚

27   esp_err_t     gpio_sleep_sel_en  (gpio_num_t gpio_num)


        启用 SLP_SEL 以在轻度睡眠中自动更改 GPIO 状态
28    esp_err_t gpio_sleep_sel_dis(gpio_num_t gpio_num)


29   esp_err_t     gpio_sleep_set_direction  (gpio_num_t gpio_num, gpio_mode_t mode)


30   esp_err_t      gpio_sleep_set_pull_mode  (gpio_num_t gpio_num, gpio_pull_mode_t pull)


31   esp_err_t       gpio_dump_io_configuration  (FILE *out_stream, uint64_t io_bit_mask)

 

 

 

 


网站公告

今日签到

点亮在社区的每一天
去签到