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配置函数:

objectivec 复制代码
/**
 * @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输出的函数:

objectivec 复制代码
/**
 * @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);

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

objectivec 复制代码
#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);         //设置为高电平
    }
    
}
相关推荐
凡人叶枫3 分钟前
Effective C++ 条款30:透彻了解 inlining 的里里外外
linux·开发语言·c++·嵌入式开发·effective c++
noipp4 分钟前
推荐题目:洛谷 P10907 [蓝桥杯 2024 国 B] 蚂蚁开会
c语言·c++·算法·编程·洛谷
学逆向的27 分钟前
C++纯虚函数
开发语言·c++·网络安全
程序员二叉1 小时前
【JUC】ThreadLocal底层原理|内存泄漏|弱引用|跨线程传递方案
java·开发语言·面试·职场和发展·juc
程序员二叉1 小时前
【JUC】线程池全套深度详解|参数|流程|拒绝策略|调优|异常处理
java·开发语言·jvm·算法·面试·juc
青山木1 小时前
Hot 100 --- 轮转数组
java·数据结构·算法
徐小夕2 小时前
Loop Engineering 深度解析与实战指南(全网最全)
前端·算法·github
凡人叶枫2 小时前
Effective C++ 条款22:将成员变量声明为 private
linux·开发语言·c++
Qt程序员2 小时前
掌握 Linux 内核调度:从原理到实现(进程篇)
java·开发语言
code bean2 小时前
【LangChain】检索器完全指南:从向量检索到生产级 RAG 架构
java·开发语言·微服务