forked from xiaozhi/xiaozhi-esp32
添加 jiuchuan-s3 开发板支持 (#775)
* 添加 jiuchuang-s3 开发板支持 * 增加编译指南 * 优开发板支持包文件目录,更新README.md 删除了多余板载文件 [* ]README.md -> 更新了编译指南和烧录指南 * 修改板级支持包名 * 使用乐鑫提供的电源监测 * 修复部分代码格式问题 * 解决合并冲突 * 解决部分合并内容 * 完善合并内容 * 修复电量映射表错误 --------- Co-authored-by: unknown <jake12355>
This commit is contained in:
62
main/boards/jiuchuan-s3/gpio_manager.h
Normal file
62
main/boards/jiuchuan-s3/gpio_manager.h
Normal file
@@ -0,0 +1,62 @@
|
||||
#pragma once
|
||||
#include <mutex>
|
||||
#include <inttypes.h>
|
||||
#include <driver/gpio.h>
|
||||
#include <esp_log.h>
|
||||
|
||||
class GpioManager {
|
||||
public:
|
||||
enum class GpioMode {
|
||||
INPUT,
|
||||
OUTPUT,
|
||||
INPUT_PULLUP,
|
||||
INPUT_PULLDOWN
|
||||
};
|
||||
|
||||
static void SetLevel(gpio_num_t gpio, uint32_t level) {
|
||||
std::lock_guard<std::mutex> lock(mutex_);
|
||||
ESP_ERROR_CHECK(gpio_set_level(gpio, level));
|
||||
ESP_LOGD("GpioManager", "Set GPIO %d level: %d", static_cast<int>(gpio), static_cast<int>(level));
|
||||
}
|
||||
|
||||
static int GetLevel(gpio_num_t gpio) {
|
||||
std::lock_guard<std::mutex> lock(mutex_);
|
||||
int level = gpio_get_level(gpio);
|
||||
ESP_LOGD("GpioManager", "Get GPIO %d level: %d", static_cast<int>(gpio), level);
|
||||
return level;
|
||||
}
|
||||
|
||||
static void Config(gpio_num_t gpio, GpioMode mode) {
|
||||
std::lock_guard<std::mutex> lock(mutex_);
|
||||
|
||||
gpio_config_t config = {};
|
||||
config.pin_bit_mask = (1ULL << gpio);
|
||||
|
||||
switch(mode) {
|
||||
case GpioMode::INPUT:
|
||||
config.mode = GPIO_MODE_INPUT;
|
||||
config.pull_up_en = GPIO_PULLUP_DISABLE;
|
||||
config.pull_down_en = GPIO_PULLDOWN_DISABLE;
|
||||
break;
|
||||
case GpioMode::OUTPUT:
|
||||
config.mode = GPIO_MODE_OUTPUT;
|
||||
break;
|
||||
case GpioMode::INPUT_PULLUP:
|
||||
config.mode = GPIO_MODE_INPUT;
|
||||
config.pull_up_en = GPIO_PULLUP_ENABLE;
|
||||
break;
|
||||
case GpioMode::INPUT_PULLDOWN:
|
||||
config.mode = GPIO_MODE_INPUT;
|
||||
config.pull_down_en = GPIO_PULLDOWN_ENABLE;
|
||||
break;
|
||||
}
|
||||
|
||||
ESP_ERROR_CHECK(gpio_config(&config));
|
||||
ESP_LOGI("GpioManager", "Configured GPIO %d mode: %d", gpio, static_cast<int>(mode));
|
||||
}
|
||||
|
||||
private:
|
||||
static std::mutex mutex_;
|
||||
};
|
||||
|
||||
std::mutex GpioManager::mutex_;
|
||||
Reference in New Issue
Block a user