当前位置: 首页 > article >正文

(备份) esp32 GPIO

我理解,任何要对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)

 

 

 

 


http://www.kler.cn/a/299384.html

相关文章:

  • Java 学习中使用文件、网络连接等资源时,未正确关闭资源,导致资源泄漏应该怎么办?
  • 你对Grok AI和数据隐私了解多少?
  • jetbrains激活服务器
  • info_scan!自动化漏洞扫描系统,附下载链接
  • 关于Acrel-1000DP分布式光伏监控系统在某制药公司21.35MW光伏10KV并网系统的应用探讨-安科瑞 蒋静
  • linux线程cp模型,posix信号量,线程池,线程封装,单例模型,懒汉饿汉实现方式,自旋锁,读者写者模型
  • 吐血整理(最全论文指令手册),还有 ChatGPT 3.5/4.0 新手使用手册~ 【亲测好用】
  • Oceanbase Restore Point实践
  • FPGA随记——状态机
  • Qml 实现水波进度动画条
  • 分布式光伏的劣势
  • Spark-ShuffleWriter
  • Groovy -> Groovy类和对象
  • 828华为云征文 | 使用华为云X实例部署图数据库Virtuoso并存储6500万条大数据的完整过程与性能测评
  • 加密与安全 _ 安全原则:任何客户端的东西都不可信任
  • Spark2.x 入门:决策树分类器
  • 【笔记】408刷题笔记
  • K8S - 外部访问集群
  • 26. Redis缓存过期
  • LabVIEW程序员每天会阅读哪些技术网站来提升自己