跳转至

setup.hsetup.c 文件

SETUP.H 和 SETUP.C

这些文件用于配置 components 目录下的所有组件。setup.h 文件用于定义组件的配置。

它们是如何工作的?

setup.h 文件用于定义组件的配置。setup.c 文件用于实现组件的配置。setup.h 包含在每个组件的头文件中,然后,每个组件的头文件包含在 main.h 文件中。最后,main.h 文件包含在 main.c 文件中。

SETUP.H

/**
 * @file setup.h
 * @author SHUAIWEN
 * @brief This file contains the configurations to setup the node. SETUP -> BSP/TINYSHM -> MAIN.H -> APP -> MAIN.C
 * @version 1.0
 * @date 2024-11-20
 *
 * @copyright Copyright (c) 2024
 *
 */

#ifndef __SETUP_H__
#define __SETUP_H__

/* DEPENDENCIES */

// C Standard Libraries
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdint.h>
#include <stddef.h>
#include <inttypes.h>
#include <sys/unistd.h>
#include <sys/time.h>
#include <sys/param.h>
#include <sys/stat.h>

// ESP
#include "esp_system.h" // ESP32 System
// #include "nvs_flash.h"  // ESP32 NVS
#include "esp_chip_info.h" // ESP32 Chip Info
// #include "esp_psram.h" // ESP32 PSRAM
// #include "esp_flash.h" // ESP32 Flash
#include "esp_random.h"        // ESP32 Random
#include "esp_timer.h"         // ESP32 Timer
#include "esp_log.h"           // ESP32 Logging
#include "esp_err.h"           // ESP32 Error
#include "driver/gpio.h"       // ESP32 GPIO
#include "driver/spi_master.h" // ESP32 SPI
#include "driver/sdspi_host.h" // ESP32 SD SPI
#include "driver/spi_common.h" // ESP32 SPI Common
#include "driver/sdmmc_host.h" // ESP32 SDMMC
#include "sdkconfig.h"         // ESP32 SDK Configuration
#include "esp_attr.h"         // ESP32 Attribute
#include "esp_cpu.h"         // ESP32 CPU
#include "soc/wdev_reg.h"   // ESP32 WDEV Register
#include "esp_private/esp_clk.h" // ESP32 Clock
#include "esp_vfs.h" // ESP32 VFS
#include "esp_spiffs.h" // ESP32 SPIFFS
#include "esp_vfs_fat.h" // ESP32 VFS FAT
#include "sdmmc_cmd.h" // ESP32 SDMMC

// FreeRTOS
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "freertos/queue.h"
#include "freertos/semphr.h"
#include "freertos/event_groups.h"


/* CONSTANTS */

/* MACROS */

/* GPIO*/

// LED
#define LED_GPIO_PIN GPIO_NUM_1 /* GPIO port connected to LED */

// RGB
#define RGB_R_GPIO_PIN GPIO_NUM_4 /* GPIO port connected to RGB Red */
#define RGB_G_GPIO_PIN GPIO_NUM_5 /* GPIO port connected to RGB Green */
#define RGB_B_GPIO_PIN GPIO_NUM_6 /* GPIO port connected to RGB Blue */

// KEY
#define BOOT_GPIO_PIN GPIO_NUM_0     /* GPIO port connected to BOOT key */
#define BOOT_INT_GPIO_PIN GPIO_NUM_0 /* GPIO port connected to BOOT key interrupt */

// SPI
#define SPI2_MOSI_GPIO_PIN GPIO_NUM_11 /* SPI2_MOSI */
#define SPI2_CLK_GPIO_PIN GPIO_NUM_12  /* SPI2_CLK */
#define SPI2_MISO_GPIO_PIN GPIO_NUM_13 /* SPI2_MISO */

#define SPI3_MOSI_GPIO_PIN GPIO_NUM_40 /* SPI3_MOSI */
#define SPI3_MISO_GPIO_PIN GPIO_NUM_41 /* SPI3_MISO */
#define SPI3_CLK_GPIO_PIN GPIO_NUM_42  /* SPI3_CLK */

// LCD
#define LCD_NUM_RST GPIO_NUM_38 /* Reset pin */
#define LCD_NUM_CS GPIO_NUM_39  /* Chip select pin */
#define LCD_NUM_WR GPIO_NUM_40  /* Write control pin */
#define LCD_NUM_BL GPIO_NUM_41  /* Backlight control pin */

// SD - note the pins below are actually the same as the SPI pins.
#define USE_SPI_MODE
#ifdef USE_SPI_MODE
// When using SPI mode, the pin mapping allows the SD card to be used in both SPI mode and 1-line SD mode.
// Note: When in SD mode, a pull-up resistor is required on the CS line.
#define SD_PIN_NUM_CS    GPIO_NUM_2
#define SD_PIN_NUM_MOSI  GPIO_NUM_11
#define SD_PIN_NUM_CLK   GPIO_NUM_12
#define SD_PIN_NUM_MISO  GPIO_NUM_13
#endif //USE_SPI_MODE

// SPI3 - ADXL355
#define CS_ADXL355           GPIO_NUM_39
#define ADXL355_PIN_NUM_MOSI GPIO_NUM_40
#define ADXL355_PIN_NUM_MISO GPIO_NUM_41
#define ADXL355_PIN_NUM_CLK  GPIO_NUM_42

/* GPIO States */

// LED
#define LED_PIN_RESET 0
#define LED_PIN_SET 1

// RGB
#define RGB_PIN_RESET 0
#define RGB_PIN_SET 1

// KEY
#define BOOT_PRES 1

/* File System */

// SPIFFS
#define DEFAULT_FD_NUM          5
#define DEFAULT_MOUNT_POINT     "/spiffs"
#define WRITE_DATA              "ESP32-S3\r\n"

// SD Card
#define MOUNT_POINT     "/sdcard" 
#define SD_MAX_CHAR_SIZE    64

// SPI DMA Channel
#ifndef SPI_DMA_CHAN
#define SPI_DMA_CHAN    1
#endif //SPI_DMA_CHAN

// Note: When testing SD and SPI modes, remember that once the card has been initialized in SPI mode, 
// it cannot be reinitialized in SD mode without switching card power.

/* VARIABLES */

// TAGs
extern const char *TAG_SD;

// Time Structure
typedef struct
{
    uint8_t hour; /* Hour */
    uint8_t min;  /* Minute */
    uint8_t sec;  /* Second */
    /* Gregorian year, month, day, and week */
    uint16_t year; /* Year */
    uint8_t month; /* Month */
    uint8_t date;  /* Day */
    uint8_t week;  /* Weekday */
} _calendar_obj;

extern _calendar_obj calendar; /* Time structure */

#endif /* __SETUP_H__ */

SETUP.C

/**
 * @file setup.c
 * @author SHUAIWEN CUI (SHUAIWEN001@e.ntu.edu.sg)
 * @brief This file contains the configurations to setup the node. SETUP -> BSP/TINYSHM -> MAIN.H -> APP -> MAIN.C
 * @version 1.0
 * @date 2024-11-20
 * 
 * @copyright Copyright (c) 2024
 * 
 */