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

ESP32开发学习记录---》GPIO

she        2025年2月5日,新年后决定开始充电提升自己,故作此记,以前没有使用过IDF开发ESP32因此新年学习一下ESP32。

        ESPIDF开发环境配置网上已经有很多的资料了,我就不再赘述,我这里只是对我的学习经历的一些记录。

        首先学习一个芯片我们当然先使用的GPIO设置啦,GPIO对一个单片机来说相当于各个语言的hello world。那么第一章学习我们就从GPIO配置开始吧,学习一个单片机的最应该做的就是学习官方的文档,学不明白可以看视屏查资料所以我们的开端也是从官方手册开始搜索ESP32的编程文档。GPIO & RTC GPIO - ESP32 - — ESP-IDF 编程指南 latest 文档

首先我们来到GPIO章节可以看到:gpio_config()函数配置了所有的GPIO模式配置。

头文件配置使用的是driver/gpio.h的头文件,那么这些头文件在哪呢?

查看头文件的位置

GPIO配置函数:

/**
 * @brief GPIO common configuration
 *
 *        Configure GPIO's Mode,pull-up,PullDown,IntrType
 *
 * @param  pGPIOConfig Pointer to GPIO configure struct
 *
 * @return
 *     - ESP_OK success
 *     - ESP_ERR_INVALID_ARG Parameter error
 *
 */
esp_err_t gpio_config(const gpio_config_t *pGPIOConfig);

设置GPIO输出的函数: 

/**
 * @brief  GPIO set output level
 *
 * @note This function is allowed to be executed when Cache is disabled within ISR context, by enabling `CONFIG_GPIO_CTRL_FUNC_IN_IRAM`
 *
 * @param  gpio_num GPIO number. If you want to set the output level of e.g. GPIO16, gpio_num should be GPIO_NUM_16 (16);
 * @param  level Output level. 0: low ; 1: high
 *
 * @return
 *     - ESP_OK Success
 *     - ESP_ERR_INVALID_ARG GPIO number error
 *
 */
esp_err_t gpio_set_level(gpio_num_t gpio_num, uint32_t level);

那么我们只需要配置相应的函数即可。

#include <stdio.h>
#include"driver/gpio.h"

void app_main(void)
{
    const gpio_config_t io_config={
        .intr_type=GPIO_INTR_DISABLE,         //失能中断
        .mode=GPIO_MODE_OUTPUT,               //模式为输出模式
        .pin_bit_mask=1ull<<GPIO_NUM_2,       //设置输出引脚为gpio2
        .pull_down_en=GPIO_PULLDOWN_DISABLE,  //设置不下拉(上拉下拉与输入有关与输出无关都设置为失能)
        .pull_up_en=GPIO_PULLUP_DISABLE        
    };                                        //结构体初始化,配置相应的参数
    gpio_config(&io_config);

    while(1)                                  //设置死循环反复执行
    {
        gpio_set_level(GPIO_NUM_2,1);         //设置为高电平
    }
    
}

 


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

相关文章:

  • 【教程】docker升级镜像
  • 【CPP】CPP经典面试题
  • k8s常见面试题2
  • 动静态库的学习
  • 【Origin笔记-2】降水量变化趋势单位理解
  • 电梯系统的UML文档14
  • 第四十六天|动态规划|子序列|647. 回文子串,5.最长回文子串, 516.最长回文子序列,动态规划总结篇
  • Mac 终端命令大全
  • 记录 | WPF创建和基本的页面布局
  • S4 HANA (递延所得税传输)Deferred Tax Transfer - S_AC0_52000644
  • 基于Hexo实现一个静态的博客网站
  • 本地机器上便捷部署和运行大型语言模型(LLM)而设计的开源框架Ollama
  • 《利用原始数据进行深度神经网络闭环 用于光学驻留空间物体检测》论文精读
  • Temperature、Top-P、Top-K、Frequency Penalty详解
  • 网络安全 | 加密技术揭秘:保护数据隐私的核心
  • 组合总和III(力扣216)
  • 腾讯社招流程记录
  • eclipse memory analyzer(mat)使用笔记
  • Yageo国巨的RC系列0402封装1%电阻库来了
  • 【OpenCV实战】混合运动跟踪算法的视频目标轨迹可视化系统设计与实现
  • 10. 神经网络(二.多层神经网络模型)
  • 面试题-SpringCloud的启动流程
  • 使用 Ollama 在腾讯云服务器环境部署 DeepSeek 大模型实战指南
  • Linux详细讲解
  • 【新手上路】洛谷算法1-1:模拟与高精度(高精度部分)
  • 2.07 算法练习