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); //设置为高电平
}
}