pwd 测试成功。
This commit is contained in:
parent
860f83ca0d
commit
dce2cf64bb
5
components/LedController/CMakeLists.txt
Normal file
5
components/LedController/CMakeLists.txt
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
idf_component_register(SRCS
|
||||||
|
LedController.cpp
|
||||||
|
INCLUDE_DIRS .
|
||||||
|
REQUIRES console spi_flash driver
|
||||||
|
)
|
63
components/LedController/LedController.cpp
Normal file
63
components/LedController/LedController.cpp
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
#include "LedController.h"
|
||||||
|
#include <cstring>
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
LedController::LedController() {
|
||||||
|
memset(m_channels, 0, sizeof(m_channels));
|
||||||
|
}
|
||||||
|
|
||||||
|
bool LedController::initialize() {
|
||||||
|
ledc_timer_config_t ledc_timer;
|
||||||
|
memset(&ledc_timer, 0, sizeof(ledc_timer));
|
||||||
|
ledc_timer.speed_mode = LEDC_HIGH_SPEED_MODE;
|
||||||
|
ledc_timer.duty_resolution = LEDC_TIMER_13_BIT;
|
||||||
|
ledc_timer.timer_num = LEDC_TIMER_0;
|
||||||
|
ledc_timer.freq_hz = 4000;
|
||||||
|
ledc_timer.clk_cfg = LEDC_AUTO_CLK;
|
||||||
|
auto status = ledc_timer_config(&ledc_timer);
|
||||||
|
if (status != ESP_OK) {
|
||||||
|
std::cout << "ledc_timer_config() failed." << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
m_channels[0].gpio_num = 18; // gpio18
|
||||||
|
m_channels[0].speed_mode = LEDC_HIGH_SPEED_MODE;
|
||||||
|
m_channels[0].channel = LEDC_CHANNEL_0;
|
||||||
|
m_channels[0].timer_sel = LEDC_TIMER_0;
|
||||||
|
m_channels[0].duty = 0;
|
||||||
|
m_channels[0].hpoint = 0;
|
||||||
|
m_channels[0].flags.output_invert = 0;
|
||||||
|
|
||||||
|
m_channels[1].gpio_num = 19; // gpio19
|
||||||
|
m_channels[1].speed_mode = LEDC_HIGH_SPEED_MODE;
|
||||||
|
m_channels[1].channel = LEDC_CHANNEL_1;
|
||||||
|
m_channels[1].timer_sel = LEDC_TIMER_0;
|
||||||
|
m_channels[1].duty = 0;
|
||||||
|
m_channels[1].hpoint = 0;
|
||||||
|
m_channels[1].flags.output_invert = 0;
|
||||||
|
|
||||||
|
for (int i = 0; i < sizeof(m_channels) / sizeof(m_channels[0]); i++) {
|
||||||
|
status = ledc_channel_config(&m_channels[i]);
|
||||||
|
if (status != ESP_OK) {
|
||||||
|
std::cout << "ledc_timer_config() failed." << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
ledc_set_duty(m_channels[i].speed_mode, m_channels[i].channel, 4096);
|
||||||
|
ledc_update_duty(m_channels[i].speed_mode, m_channels[i].channel);
|
||||||
|
}
|
||||||
|
std::cout << "led controller initialize finished." << std::endl;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void LedController::setDuty(int32_t channel, int32_t duty) {
|
||||||
|
duty = static_cast<float>(0x1FFF * duty) / 100;
|
||||||
|
|
||||||
|
if ((channel < 0) || (channel >= sizeof(m_channels) / sizeof(m_channels[0]))) return;
|
||||||
|
std::cout<<"set channle "<<channel<<" duty: "<<duty<<std::endl;
|
||||||
|
ledc_set_duty(m_channels[channel].speed_mode, m_channels[channel].channel, duty);
|
||||||
|
ledc_update_duty(m_channels[channel].speed_mode, m_channels[channel].channel);
|
||||||
|
}
|
||||||
|
|
||||||
|
LedController *LedController::instance() {
|
||||||
|
static LedController self;
|
||||||
|
return &self;
|
||||||
|
}
|
16
components/LedController/LedController.h
Normal file
16
components/LedController/LedController.h
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
#ifndef __LEDCONTROLLER_H__
|
||||||
|
#define __LEDCONTROLLER_H__
|
||||||
|
|
||||||
|
#include <driver/ledc.h>
|
||||||
|
|
||||||
|
class LedController {
|
||||||
|
public:
|
||||||
|
static LedController *instance();
|
||||||
|
bool initialize();
|
||||||
|
void setDuty(int32_t channel, int32_t duty);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
LedController();
|
||||||
|
ledc_channel_config_t m_channels[2];
|
||||||
|
};
|
||||||
|
#endif // __LEDCONTROLLER_H__
|
@ -1,9 +1,9 @@
|
|||||||
idf_component_register(SRCS
|
idf_component_register(SRCS
|
||||||
cmd_system.c
|
cmd_system.c
|
||||||
cmd_system_common.c
|
cmd_system_common.c
|
||||||
cmd_custom.c
|
CustomCommand.cpp
|
||||||
INCLUDE_DIRS .
|
INCLUDE_DIRS .
|
||||||
REQUIRES console spi_flash driver
|
REQUIRES console spi_flash driver LedController
|
||||||
)
|
)
|
||||||
|
|
||||||
target_sources(${COMPONENT_LIB} PRIVATE cmd_system_sleep.c)
|
target_sources(${COMPONENT_LIB} PRIVATE cmd_system_sleep.c)
|
36
components/command/CustomCommand.cpp
Normal file
36
components/command/CustomCommand.cpp
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
#include "CustomCommand.h"
|
||||||
|
#include "LedController.h"
|
||||||
|
#include "esp_console.h"
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
static int custom_command(int argc, char **argv) {
|
||||||
|
printf("i am amass.\n");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int led_command(int argc, char **argv) {
|
||||||
|
for (int i = 0; i < argc; i++) {
|
||||||
|
std::cout << i << " " << argv[i] << std::endl;
|
||||||
|
}
|
||||||
|
LedController::instance()->setDuty(atoi(argv[1]), atoi(argv[2]));
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void register_custom() {
|
||||||
|
const esp_console_cmd_t heap_cmd = {
|
||||||
|
.command = "amass",
|
||||||
|
.help = "test command.",
|
||||||
|
.hint = NULL,
|
||||||
|
.func = &custom_command,
|
||||||
|
};
|
||||||
|
ESP_ERROR_CHECK(esp_console_cmd_register(&heap_cmd));
|
||||||
|
|
||||||
|
const esp_console_cmd_t led_cmd = {
|
||||||
|
.command = "led",
|
||||||
|
.help = "led pwm duty.",
|
||||||
|
.hint = NULL,
|
||||||
|
.func = &led_command,
|
||||||
|
};
|
||||||
|
ESP_ERROR_CHECK(esp_console_cmd_register(&led_cmd));
|
||||||
|
}
|
11
components/command/CustomCommand.h
Normal file
11
components/command/CustomCommand.h
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
#ifndef __CUSTOMCOMMAND_H__
|
||||||
|
#define __CUSTOMCOMMAND_H__
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void register_custom();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#endif // __CUSTOMCOMMAND_H__
|
@ -1,18 +0,0 @@
|
|||||||
#include "cmd_custom.h"
|
|
||||||
#include "esp_console.h"
|
|
||||||
|
|
||||||
|
|
||||||
static int custom_command(int argc, char **argv) {
|
|
||||||
printf("i am amass.\n");
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
void register_custom() {
|
|
||||||
const esp_console_cmd_t heap_cmd = {
|
|
||||||
.command = "amass",
|
|
||||||
.help = "test command.",
|
|
||||||
.hint = NULL,
|
|
||||||
.func = &custom_command,
|
|
||||||
};
|
|
||||||
ESP_ERROR_CHECK(esp_console_cmd_register(&heap_cmd));
|
|
||||||
}
|
|
@ -1,6 +0,0 @@
|
|||||||
#ifndef __CMD_CUSTOM_H__
|
|
||||||
#define __CMD_CUSTOM_H__
|
|
||||||
|
|
||||||
void register_custom();
|
|
||||||
|
|
||||||
#endif // __CMD_CUSTOM_H__
|
|
@ -1,2 +1,2 @@
|
|||||||
idf_component_register(SRCS "main.c"
|
idf_component_register(SRCS "main.cpp"
|
||||||
INCLUDE_DIRS ".")
|
INCLUDE_DIRS ".")
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
#include "cmd_custom.h"
|
#include "CustomCommand.h"
|
||||||
|
#include "LedController.h"
|
||||||
#include "cmd_system.h"
|
#include "cmd_system.h"
|
||||||
#include "driver/uart.h"
|
#include "driver/uart.h"
|
||||||
#include "esp_console.h"
|
#include "esp_console.h"
|
||||||
@ -22,7 +23,7 @@ static void initialize_nvs();
|
|||||||
static void initialize_filesystem();
|
static void initialize_filesystem();
|
||||||
static void initialize_console();
|
static void initialize_console();
|
||||||
|
|
||||||
void app_main() {
|
extern "C" void app_main() {
|
||||||
const char *prompt = LOG_COLOR_I PROMPT_STR "> " LOG_RESET_COLOR;
|
const char *prompt = LOG_COLOR_I PROMPT_STR "> " LOG_RESET_COLOR;
|
||||||
initialize_nvs();
|
initialize_nvs();
|
||||||
initialize_filesystem();
|
initialize_filesystem();
|
||||||
@ -31,6 +32,8 @@ void app_main() {
|
|||||||
register_system_common();
|
register_system_common();
|
||||||
register_system_sleep();
|
register_system_sleep();
|
||||||
register_custom();
|
register_custom();
|
||||||
|
|
||||||
|
LedController::instance()->initialize();
|
||||||
while (true) {
|
while (true) {
|
||||||
char *line = linenoise(prompt);
|
char *line = linenoise(prompt);
|
||||||
if (line == NULL) { /* Break on EOF or error */
|
if (line == NULL) { /* Break on EOF or error */
|
||||||
@ -68,24 +71,22 @@ static void initialize_console() {
|
|||||||
esp_vfs_dev_uart_port_set_rx_line_endings(CONFIG_ESP_CONSOLE_UART_NUM, ESP_LINE_ENDINGS_CR);
|
esp_vfs_dev_uart_port_set_rx_line_endings(CONFIG_ESP_CONSOLE_UART_NUM, ESP_LINE_ENDINGS_CR);
|
||||||
esp_vfs_dev_uart_port_set_tx_line_endings(CONFIG_ESP_CONSOLE_UART_NUM, ESP_LINE_ENDINGS_CRLF);
|
esp_vfs_dev_uart_port_set_tx_line_endings(CONFIG_ESP_CONSOLE_UART_NUM, ESP_LINE_ENDINGS_CRLF);
|
||||||
|
|
||||||
const uart_config_t uart_config = {
|
uart_config_t uart_config = {0};
|
||||||
.baud_rate = CONFIG_ESP_CONSOLE_UART_BAUDRATE,
|
uart_config.baud_rate = CONFIG_ESP_CONSOLE_UART_BAUDRATE;
|
||||||
.data_bits = UART_DATA_8_BITS,
|
uart_config.data_bits = UART_DATA_8_BITS;
|
||||||
.parity = UART_PARITY_DISABLE,
|
uart_config.parity = UART_PARITY_DISABLE;
|
||||||
.stop_bits = UART_STOP_BITS_1,
|
uart_config.stop_bits = UART_STOP_BITS_1;
|
||||||
.source_clk = UART_SCLK_REF_TICK,
|
uart_config.source_clk = UART_SCLK_REF_TICK;
|
||||||
};
|
ESP_ERROR_CHECK(uart_driver_install(static_cast<uart_port_t>(CONFIG_ESP_CONSOLE_UART_NUM), 256, 0, 0, NULL, 0));
|
||||||
|
ESP_ERROR_CHECK(uart_param_config(static_cast<uart_port_t>(CONFIG_ESP_CONSOLE_UART_NUM), &uart_config));
|
||||||
ESP_ERROR_CHECK(uart_driver_install(CONFIG_ESP_CONSOLE_UART_NUM, 256, 0, 0, NULL, 0));
|
|
||||||
ESP_ERROR_CHECK(uart_param_config(CONFIG_ESP_CONSOLE_UART_NUM, &uart_config));
|
|
||||||
|
|
||||||
esp_vfs_dev_uart_use_driver(CONFIG_ESP_CONSOLE_UART_NUM);
|
esp_vfs_dev_uart_use_driver(CONFIG_ESP_CONSOLE_UART_NUM);
|
||||||
|
|
||||||
esp_console_config_t console_config = {
|
esp_console_config_t console_config = {0};
|
||||||
.max_cmdline_args = 8,
|
console_config.max_cmdline_args = 8;
|
||||||
.max_cmdline_length = 256,
|
console_config.max_cmdline_length = 256;
|
||||||
.hint_color = atoi(LOG_COLOR_CYAN),
|
console_config.hint_color = atoi(LOG_COLOR_CYAN);
|
||||||
};
|
|
||||||
ESP_ERROR_CHECK(esp_console_init(&console_config));
|
ESP_ERROR_CHECK(esp_console_init(&console_config));
|
||||||
|
|
||||||
linenoiseSetMultiLine(1);
|
linenoiseSetMultiLine(1);
|
||||||
@ -111,11 +112,11 @@ static void initialize_nvs() {
|
|||||||
|
|
||||||
static void initialize_filesystem(void) {
|
static void initialize_filesystem(void) {
|
||||||
static wl_handle_t wl_handle;
|
static wl_handle_t wl_handle;
|
||||||
const esp_vfs_fat_mount_config_t mount_config = {
|
esp_vfs_fat_mount_config_t config;
|
||||||
.max_files = 4,
|
memset(&config, 0, sizeof(esp_vfs_fat_mount_config_t));
|
||||||
.format_if_mount_failed = true,
|
config.max_files = 4;
|
||||||
};
|
config.format_if_mount_failed = true;
|
||||||
esp_err_t err = esp_vfs_fat_spiflash_mount_rw_wl(MOUNT_PATH, "storage", &mount_config, &wl_handle);
|
esp_err_t err = esp_vfs_fat_spiflash_mount_rw_wl(MOUNT_PATH, "storage", &config, &wl_handle);
|
||||||
if (err != ESP_OK) {
|
if (err != ESP_OK) {
|
||||||
ESP_LOGE(TAG, "Failed to mount FATFS (%s)", esp_err_to_name(err));
|
ESP_LOGE(TAG, "Failed to mount FATFS (%s)", esp_err_to_name(err));
|
||||||
return;
|
return;
|
@ -14,7 +14,7 @@ CONFIG_PARTITION_TABLE_FILENAME="partitions.csv"
|
|||||||
CONFIG_FREERTOS_USE_TRACE_FACILITY=y
|
CONFIG_FREERTOS_USE_TRACE_FACILITY=y
|
||||||
CONFIG_FREERTOS_USE_STATS_FORMATTING_FUNCTIONS=y
|
CONFIG_FREERTOS_USE_STATS_FORMATTING_FUNCTIONS=y
|
||||||
|
|
||||||
CONFIG_ESPTOOLPY_FLASHSIZE_4MB=y
|
CONFIG_ESPTOOLPY_FLASHSIZE_16MB=y
|
||||||
|
|
||||||
# On chips with USB serial, disable secondary console which does not make sense when using console component
|
# On chips with USB serial, disable secondary console which does not make sense when using console component
|
||||||
CONFIG_ESP_CONSOLE_SECONDARY_NONE=y
|
CONFIG_ESP_CONSOLE_SECONDARY_NONE=y
|
||||||
|
Loading…
Reference in New Issue
Block a user