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); //設置為高電平}}