新增了呼吸模拟器指令下发函数,调整了Main任务的栈空间
This commit is contained in:
parent
5022a65504
commit
be4a0e5ecc
@ -112,6 +112,11 @@ void bs_test_task(void* arg)
|
||||
|
||||
while(1)
|
||||
{
|
||||
/* 调节呼吸模拟器频率 */
|
||||
ModbusRTU_Send_0x05(bs_addr_all[testCount]);
|
||||
lv_label_set_text_fmt(ui_pageHome_labelBSInfo,"%s %s",test_rate[testCount],test_info[5]);
|
||||
vTaskDelay(5000 / portTICK_PERIOD_MS);
|
||||
|
||||
/* 下发测试时间 */
|
||||
flux_test_time_set(flux_test_time_series[testCount]);
|
||||
vTaskDelay(1000 / portTICK_PERIOD_MS);
|
||||
|
||||
@ -38,6 +38,14 @@ extern "C" {
|
||||
#define SPIRIT_6_STAGE_NUM 6
|
||||
#define SPIRIT_8_STAGE_NUM 8
|
||||
|
||||
/* 定义呼吸模拟器六个挡位控制所在Modbus地址 */
|
||||
#define BS_ADDR_15BPM 0x080B
|
||||
#define BS_ADDR_20BPM 0x080C
|
||||
#define BS_ADDR_25BPM 0x080D
|
||||
#define BS_ADDR_30BPM 0x080E
|
||||
#define BS_ADDR_35BPM 0x080F
|
||||
#define BS_ADDR_40BPM 0x0810
|
||||
|
||||
/* 定义枚举用于标记呼吸频率 */
|
||||
typedef enum Bs_test_Rate{
|
||||
BS_RATE_15BPM,
|
||||
@ -99,8 +107,11 @@ extern float Spirit3_Volume[4];
|
||||
extern float Spirit6_Volume[6];
|
||||
extern float YULite8_Volume[6];
|
||||
|
||||
/* 导出呼吸模拟器控制地址 */
|
||||
extern uint32_t bs_addr_all[6];
|
||||
|
||||
/* 导出消息数据*/
|
||||
extern char *test_info[];
|
||||
extern char *test_info[6];
|
||||
|
||||
/* 导出LED小灯控制句柄 */
|
||||
extern TaskHandle_t bs_stateLED_task_handle;
|
||||
|
||||
@ -23,6 +23,9 @@ float Spirit3_Volume[4] = { 210,420,630,750};
|
||||
float Spirit6_Volume[6] = { 210,420,630,840,1050,1200};
|
||||
float YULite8_Volume[6] = { 210,420,630,750,870,990,1110,990};
|
||||
|
||||
/* 定义用于存储呼吸模拟器频率控制的Modbus寄存器地址 */
|
||||
uint32_t bs_addr_all[6] = { BS_ADDR_15BPM,BS_ADDR_20BPM,BS_ADDR_25BPM,BS_ADDR_30BPM,BS_ADDR_35BPM,BS_ADDR_40BPM};
|
||||
|
||||
/* 用于存储三款机器挡位stage的数据 */
|
||||
int32_t Spirit3_Stage[4] = { 1,2,3,4};
|
||||
int32_t Spirit6_Stage[6] = { 1,2,3,4,5,6};
|
||||
@ -37,11 +40,12 @@ int32_t YULite8_Stage[8] = { 1,2,3,4,5,6,7,8};
|
||||
* 5.所有频率测试完毕,请记录。 All frequency tests have been completed, please record.
|
||||
* 6.设备已启动成功,请开始测试。 Device started successfully, please start testing.
|
||||
*/
|
||||
char *test_info[5] = {"Time setting Send",\
|
||||
char *test_info[6] = {"Time setting Send",\
|
||||
"testing...",\
|
||||
"wait for end",\
|
||||
" frequency test finished",\
|
||||
"all done",\
|
||||
"breath command sent"
|
||||
};
|
||||
|
||||
/* 测试呼吸频率 */
|
||||
|
||||
@ -514,6 +514,8 @@ void on_buttonStartTestBS_clicked(lv_event_t * e)
|
||||
|
||||
is_bs_test_ing = true;
|
||||
lv_label_set_text(ui_pageHome_labelStartTest1,"Cancel Test BS");
|
||||
/* 清空已完成的测试结果 */
|
||||
BS_ALL_RESULT_CLEAR;
|
||||
}
|
||||
|
||||
#if 0
|
||||
|
||||
@ -133,7 +133,7 @@ void uart1_echoTask(void* arg)
|
||||
};
|
||||
int intr_alloc_flags = 0;
|
||||
|
||||
ESP_ERROR_CHECK(uart_driver_install(ECHO_UART_PORT_NUM1, BUF_SIZE * 2, 0, 0, NULL, intr_alloc_flags));
|
||||
ESP_ERROR_CHECK(uart_driver_install(ECHO_UART_PORT_NUM1, BUF_SIZE * 2, BUF_SIZE * 2, 0, NULL, intr_alloc_flags));
|
||||
ESP_ERROR_CHECK(uart_param_config(ECHO_UART_PORT_NUM1, &uart_config));
|
||||
ESP_ERROR_CHECK(uart_set_pin(ECHO_UART_PORT_NUM1, ECHO_TEST_TXD1, ECHO_TEST_RXD1, ECHO_TEST_RTS, ECHO_TEST_CTS));
|
||||
|
||||
@ -351,30 +351,29 @@ void uart2_echoTask(void* arg)
|
||||
};
|
||||
int intr_alloc_flags = 0;
|
||||
|
||||
ESP_ERROR_CHECK(uart_driver_install(ECHO_UART_PORT_NUM2, BUF_SIZE * 2, 0, 0, NULL, intr_alloc_flags));
|
||||
ESP_ERROR_CHECK(uart_driver_install(ECHO_UART_PORT_NUM2, BUF_SIZE * 2, BUF_SIZE * 2, 0, NULL, intr_alloc_flags));
|
||||
ESP_ERROR_CHECK(uart_param_config(ECHO_UART_PORT_NUM2, &uart_config));
|
||||
ESP_ERROR_CHECK(uart_set_pin(ECHO_UART_PORT_NUM2, ECHO_TEST_TXD2, ECHO_TEST_RXD2, ECHO_TEST_RTS, ECHO_TEST_CTS));
|
||||
|
||||
uint8_t *data = (uint8_t *) malloc(BUF_SIZE);
|
||||
|
||||
ESP_LOGI("uart2_echoTask", "UART2 ECHO TEST: start test");
|
||||
|
||||
#if LOG_RECORD_ENABLE
|
||||
example_write_log("呼吸模拟器消息处理任务初始化完毕",__FILE__,__LINE__);
|
||||
#endif
|
||||
|
||||
while (1)
|
||||
{
|
||||
vTaskDelay(1000 / portTICK_PERIOD_MS);
|
||||
|
||||
// Read data from the UART
|
||||
int len = uart_read_bytes(ECHO_UART_PORT_NUM2, data, (BUF_SIZE - 1), 20 / portTICK_PERIOD_MS);
|
||||
|
||||
// Write data back to the UART
|
||||
uart_write_bytes(ECHO_UART_PORT_NUM2, (const char *) data, len);
|
||||
|
||||
if (len)
|
||||
{
|
||||
data[len] = '\0';
|
||||
lv_textarea_add_char(ui_pageFluxDebug_textAreaContent,'\n');
|
||||
lv_textarea_add_text(ui_pageFluxDebug_textAreaContent, (char *) data);
|
||||
}
|
||||
|
||||
ESP_LOGI("uart2_echoTask", "Read %d bytes: '%s'", len, data);
|
||||
}
|
||||
|
||||
}
|
||||
@ -420,6 +419,7 @@ esp_err_t ModbusRTU_Send_0306(uart_port_t uart_num, struct ModbusRTU_Frame *fram
|
||||
return ESP_OK;
|
||||
}
|
||||
|
||||
#if USART_USE_10_COMMAND
|
||||
/**
|
||||
* @brief 封装多寄存器写函数 0x10指令
|
||||
*
|
||||
@ -450,6 +450,47 @@ esp_err_t ModbusRTU_Send_0x10(uart_port_t uart_num, struct ModbusRTU_Frame2Reg *
|
||||
ESP_LOGI("uart_write_bytes", "uart_write_bytes success");
|
||||
return ESP_OK;
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief 封装05指令,修改单个寄存器开关量
|
||||
*
|
||||
* @param[in] uart_num 串口号
|
||||
* @param[in] frame 需要发送的数据帧
|
||||
*
|
||||
*/
|
||||
esp_err_t ModbusRTU_Send_0x05(uint32_t ADDR)
|
||||
{
|
||||
struct ModbusRTU_Frame frame;
|
||||
unsigned short crc;
|
||||
|
||||
frame.ADDR = 0x01;
|
||||
frame.FUNC = 0x05;
|
||||
|
||||
/* 寄存器所在地址 */
|
||||
frame.DATA[0] = (ADDR >> 8);
|
||||
frame.DATA[1] = (ADDR & 0xFF);
|
||||
|
||||
/* 启动命令 */
|
||||
frame.DATA[2] = 0xFF;
|
||||
frame.DATA[3] = 0x00;
|
||||
|
||||
crc = CRC16((unsigned char *)&frame, sizeof(frame.ADDR) + sizeof(frame.FUNC) + sizeof(frame.DATA));
|
||||
frame.CRC[1] = (crc & 0xFF);
|
||||
frame.CRC[0] = (crc >> 8);
|
||||
|
||||
int res = uart_write_bytes(ECHO_UART_PORT_NUM2, (const char *)&frame, sizeof(struct ModbusRTU_Frame)/sizeof(unsigned char));
|
||||
if (res == -1)
|
||||
{
|
||||
return ESP_FAIL;
|
||||
example_write_log("05指令数据发送失败。",__FILE__,__LINE__);
|
||||
ESP_LOGI("uart_write_bytes", "uart_write_bytes fail");
|
||||
}
|
||||
|
||||
example_write_log("05指令数据发送成功。",__FILE__,__LINE__);
|
||||
|
||||
return ESP_OK;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 根据主界面内容刷新测试结果
|
||||
|
||||
@ -28,6 +28,8 @@ extern "C" {
|
||||
/* UART */
|
||||
/* UART1 RT-2 TX-1*/
|
||||
/* UART2 RT-46 TX-45*/
|
||||
#if 1
|
||||
|
||||
#define ECHO_TEST_TXD2 GPIO_NUM_45
|
||||
#define ECHO_TEST_RXD2 GPIO_NUM_46
|
||||
#define ECHO_UART_PORT_NUM2 (UART_NUM_2)
|
||||
@ -36,13 +38,25 @@ extern "C" {
|
||||
#define ECHO_TEST_RXD1 GPIO_NUM_2
|
||||
#define ECHO_UART_PORT_NUM1 (UART_NUM_1)
|
||||
|
||||
#else
|
||||
|
||||
#define ECHO_TEST_TXD2 GPIO_NUM_1
|
||||
#define ECHO_TEST_RXD2 GPIO_NUM_2
|
||||
#define ECHO_UART_PORT_NUM2 (UART_NUM_2)
|
||||
|
||||
#define ECHO_TEST_TXD1 GPIO_NUM_45
|
||||
#define ECHO_TEST_RXD1 GPIO_NUM_46
|
||||
#define ECHO_UART_PORT_NUM1 (UART_NUM_1)
|
||||
|
||||
#endif
|
||||
|
||||
/*不使用RTS CTS*/
|
||||
#define ECHO_TEST_RTS (UART_PIN_NO_CHANGE)
|
||||
#define ECHO_TEST_CTS (UART_PIN_NO_CHANGE)
|
||||
|
||||
/* 通讯参数设置 */
|
||||
#define ECHO_UART_BAUD_RATE (9600)
|
||||
#define ECHO_TASK_STACK_SIZE (16*1024)
|
||||
#define ECHO_TASK_STACK_SIZE (8*1024)
|
||||
|
||||
/* 选择使用大端/小端模式 */
|
||||
#define BIG_ENDIAN_USED 0
|
||||
@ -208,6 +222,7 @@ unsigned short CRC16(unsigned char* pchMsg, unsigned short wDataLen);
|
||||
*/
|
||||
esp_err_t ModbusRTU_Send_0306(uart_port_t uart_num, struct ModbusRTU_Frame *frame);
|
||||
|
||||
#if USART_USE_10_COMMAND
|
||||
/**
|
||||
* @brief 封装多寄存器写函数 0x10指令
|
||||
*
|
||||
@ -216,6 +231,16 @@ esp_err_t ModbusRTU_Send_0306(uart_port_t uart_num, struct ModbusRTU_Frame *fram
|
||||
*
|
||||
*/
|
||||
esp_err_t ModbusRTU_Send_0x10(uart_port_t uart_num, struct ModbusRTU_Frame2Reg *frame);
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief 封装05指令,修改单个寄存器开关量
|
||||
*
|
||||
* @param[in] uart_num 串口号
|
||||
* @param[in] frame 需要发送的数据帧
|
||||
*
|
||||
*/
|
||||
esp_err_t ModbusRTU_Send_0x05(uint32_t ADDR);
|
||||
|
||||
/**
|
||||
* @brief 根据主界面内容刷新测试结果
|
||||
|
||||
@ -138,8 +138,8 @@ extern "C" void app_main(void)
|
||||
xTaskCreate(nom_test_led_task, "nom_test_led_task", 4 * 1024, NULL, 2, &nom_stateLED_task_handle);
|
||||
vTaskSuspend(nom_stateLED_task_handle);
|
||||
|
||||
#if 0/*暂时不支持呼吸模拟器*/
|
||||
/*创建UART2响应任务*/
|
||||
#if 1/* 支持呼吸模拟器 */
|
||||
/* 创建UART2响应任务 */
|
||||
xTaskCreate(uart2_echoTask, "uart2_echo_task", ECHO_TASK_STACK_SIZE, NULL, 10, NULL);
|
||||
lv_bar_set_value(ui_pageWelCome_barStartProgress,100,LV_ANIM_ON);
|
||||
lv_label_set_text(ui_pageWelCome_labelStartInfo,"serial port task 100%");
|
||||
|
||||
@ -1125,7 +1125,7 @@ CONFIG_ESP_SYSTEM_MEMPROT_FEATURE_LOCK=y
|
||||
|
||||
CONFIG_ESP_SYSTEM_EVENT_QUEUE_SIZE=32
|
||||
CONFIG_ESP_SYSTEM_EVENT_TASK_STACK_SIZE=2304
|
||||
CONFIG_ESP_MAIN_TASK_STACK_SIZE=65536
|
||||
CONFIG_ESP_MAIN_TASK_STACK_SIZE=4096
|
||||
CONFIG_ESP_MAIN_TASK_AFFINITY_CPU0=y
|
||||
# CONFIG_ESP_MAIN_TASK_AFFINITY_CPU1 is not set
|
||||
# CONFIG_ESP_MAIN_TASK_AFFINITY_NO_AFFINITY is not set
|
||||
@ -2442,7 +2442,7 @@ CONFIG_ESP32S3_DEFAULT_CPU_FREQ_160=y
|
||||
CONFIG_ESP32S3_DEFAULT_CPU_FREQ_MHZ=160
|
||||
CONFIG_SYSTEM_EVENT_QUEUE_SIZE=32
|
||||
CONFIG_SYSTEM_EVENT_TASK_STACK_SIZE=2304
|
||||
CONFIG_MAIN_TASK_STACK_SIZE=65536
|
||||
CONFIG_MAIN_TASK_STACK_SIZE=4096
|
||||
CONFIG_CONSOLE_UART_DEFAULT=y
|
||||
# CONFIG_CONSOLE_UART_CUSTOM is not set
|
||||
# CONFIG_CONSOLE_UART_NONE is not set
|
||||
|
||||
Loading…
Reference in New Issue
Block a user