#include "ms_uart.h"
#define ECHO_TXD0 GPIO_NUM_1
#define ECHO_RXD0 GPIO_NUM_3
#define ECHO_TXD1 GPIO_NUM_26
#define ECHO_RXD1 GPIO_NUM_25
#define ECHO_TXD2 GPIO_NUM_17
#define ECHO_RXD2 GPIO_NUM_16
#define ECHO_TEST_RTS UART_PIN_NO_CHANGE
#define ECHO_TEST_CTS UART_PIN_NO_CHANGE
#define BUF_SIZE (1024)
TimerHandle_t updateHeartBeat_handle;
int uartConnectFlag;
extern char serialNum[16];
extern int downloadFlag;
void Uart0Recv() {
/* Configure parameters of an UART driver,
* communication pins and install the driver */
uart_config_t uart_config = { .baud_rate = 115200, .data_bits =
UART_DATA_8_BITS, .parity = UART_PARITY_DISABLE, .stop_bits =
UART_STOP_BITS_1, .flow_ctrl = UART_HW_FLOWCTRL_DISABLE };
uart_param_config(UART_NUM_0, &uart_config);
uart_set_pin(UART_NUM_0, ECHO_TXD0, ECHO_RXD0, ECHO_TEST_RTS,
ECHO_TEST_CTS);
uart_driver_install(UART_NUM_0, BUF_SIZE * 2, 0, 0, NULL, 0);
while (1) {
vTaskDelay(1000 / portTICK_RATE_MS);
uart_write_bytes(UART_NUM_0, (const char *) "uart0:", strlen("uart0:"));
}
}
void Uart1Recv() {
/* Configure parameters of an UART driver,
* communication pins and install the driver */
uart_config_t uart_config = { .baud_rate = 115200, .data_bits =
UART_DATA_8_BITS, .parity = UART_PARITY_DISABLE, .stop_bits =
UART_STOP_BITS_1, .flow_ctrl = UART_HW_FLOWCTRL_DISABLE };
uart_param_config(UART_NUM_1, &uart_config);
uart_set_pin(UART_NUM_1, ECHO_TXD1, ECHO_RXD1, ECHO_TEST_RTS,
ECHO_TEST_CTS);
uart_driver_install(UART_NUM_1, BUF_SIZE * 2, 0, 0, NULL, 0);
uart_set_mode(UART_NUM_1, UART_MODE_RS485_HALF_DUPLEX);
while (1) {
vTaskDelay(1000 / portTICK_RATE_MS);
uart_write_bytes(UART_NUM_1, (const char *) "uart1:", strlen("uart1:"));
}
}
void updateHeartBeatCallback(TimerHandle_t xTimer) {
uartConnectFlag = 0;
}
void Uart2Recv() {
/* Configure parameters of an UART driver,
* communication pins and install the driver */
uart_config_t uart_config = { .baud_rate = 115200, .data_bits =
UART_DATA_8_BITS, .parity = UART_PARITY_DISABLE, .stop_bits =
UART_STOP_BITS_1, .flow_ctrl = UART_HW_FLOWCTRL_DISABLE };
uart_param_config(UART_NUM_2, &uart_config);
uart_set_pin(UART_NUM_2, ECHO_TXD2, ECHO_RXD2, ECHO_TEST_RTS,
ECHO_TEST_CTS);
uart_driver_install(UART_NUM_2, BUF_SIZE * 2, 0, 0, NULL, 0);
while (1) {
vTaskDelay(1000 / portTICK_RATE_MS);
uart_write_bytes(UART_NUM_2, (const char *) "uart2:", strlen("uart2:"));
}
}
//周期定时器的回调函数
void heartBeatCallback(TimerHandle_t xTimer) {
if (!downloadFlag) {
char handShakeCmd[10] = { 0x5A, 0x4D, 0x53, 0x01, 0x00, 0x01, 0x05,
0x4B, 0xA5, 0x4D };
char heartBeatCmd[9] = { 0x5A, 0x4D, 0x53, 0x0B, 0x00, 0x00, 0x68, 0x88,
0x4D };
char getDeviceInfoCmd[9] = { 0x5A, 0x4D, 0x53, 0x03, 0x00, 0x00, 0xE9,
0x4A, 0x4D };
if (uartConnectFlag) {
if (serialNum == NULL || strlen(serialNum) == 0) {
printf("=========3=======\n");
uart_write_bytes(UART_NUM_2, (const char *) getDeviceInfoCmd,
9);
} else {
uart_write_bytes(UART_NUM_2, (const char *) heartBeatCmd, 9);
}
} else {
uart_write_bytes(UART_NUM_2, (const char *) handShakeCmd, 10);
}
}
}
ESP32 三个串口使用
于 2020-07-30 09:48:14 首次发布