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

(备份) 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)

 

 

 

 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Excel根据分数排名次,RANK函数来帮忙
  • 股指期货的指数一直贴水是什么意思?
  • 线下活动|落地武汉、长沙高校,10场AI沙龙火爆来袭
  • vue开发遇到的js逻辑判断问题
  • 从简单分析到智能问数,Smartbi AIChat让数据回归业务
  • Android13_SystemUI下拉框新增音量控制条
  • uniapp 发布苹果IOS详细流程,包括苹果开发者公司账号申请、IOS证书、.p12证书文件等
  • 【系统架构设计师-2024年真题】案例分析-答案及详解
  • 无人直播好帮手,视频指定词语消音,消除违禁词,直播视频录制,音视频分离,分段
  • 《Discriminative Class Tokens for Text-to-Image Diffusion Models》ICCV2023
  • 网络安全-dom破坏结合jq漏洞以及框架漏洞造成的xss-World War 3
  • FastAPI 中的错误处理:如何让错误信息更有价值
  • 上传文件到钉盘流程详解
  • SpringBoot整合WebSocket实现消息推送或聊天功能示例
  • 【计算机网络】HTTPHTTPS
  • IE9 : DOM Exception: INVALID_CHARACTER_ERR (5)
  • bearychat的java client
  • Date型的使用
  • JAVA多线程机制解析-volatilesynchronized
  • NLPIR语义挖掘平台推动行业大数据应用服务
  • Shell编程
  • 案例分享〡三拾众筹持续交付开发流程支撑创新业务
  • 分享一份非常强势的Android面试题
  • 面试总结JavaScript篇
  • 深入浏览器事件循环的本质
  • 思考 CSS 架构
  • 系统认识JavaScript正则表达式
  • 一文看透浏览器架构
  • 源码安装memcached和php memcache扩展
  • 测评:对于写作的人来说,Markdown是你最好的朋友 ...
  • ​Base64转换成图片,android studio build乱码,找不到okio.ByteString接腾讯人脸识别
  • ​LeetCode解法汇总1276. 不浪费原料的汉堡制作方案
  • ​软考-高级-信息系统项目管理师教程 第四版【第19章-配置与变更管理-思维导图】​
  • ​香农与信息论三大定律
  • # linux 中使用 visudo 命令,怎么保存退出?
  • #单片机(TB6600驱动42步进电机)
  • (173)FPGA约束:单周期时序分析或默认时序分析
  • (3)(3.2) MAVLink2数据包签名(安全)
  • (Matalb时序预测)WOA-BP鲸鱼算法优化BP神经网络的多维时序回归预测
  • (附源码)ssm教材管理系统 毕业设计 011229
  • (一)硬件制作--从零开始自制linux掌上电脑(F1C200S) <嵌入式项目>
  • .Net Core和.Net Standard直观理解
  • .Net 应用中使用dot trace进行性能诊断
  • .net6 core Worker Service项目,使用Exchange Web Services (EWS) 分页获取电子邮件收件箱列表,邮件信息字段
  • .sdf和.msp文件读取
  • @31省区市高考时间表来了,祝考试成功
  • [04]Web前端进阶—JS伪数组
  • [ActionScript][AS3]小小笔记
  • [AI]ChatGPT4 与 ChatGPT3.5 区别有多大
  • [AutoSAR系列] 1.3 AutoSar 架构
  • [BUAA软工]第一次博客作业---阅读《构建之法》
  • [C]编译和预处理详解
  • [EFI]MSI GF63 Thin 9SCXR电脑 Hackintosh 黑苹果efi引导文件
  • [ffmpeg] 定制滤波器
  • [Foreman]解决Unable to find internal system admin account