2024-07-13 05:59:56 +00:00
|
|
|
|
/*
|
|
|
|
|
* uart_dev.c
|
|
|
|
|
*
|
|
|
|
|
* Created on: 2024<EFBFBD><EFBFBD>6<EFBFBD><EFBFBD>22<EFBFBD><EFBFBD>
|
|
|
|
|
* Author: psx
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
#include "uart_dev.h"
|
2024-08-08 04:11:12 +00:00
|
|
|
|
#include "UART.h"
|
2024-07-15 03:33:54 +00:00
|
|
|
|
|
2024-07-13 05:59:56 +00:00
|
|
|
|
|
|
|
|
|
/* ʹ<><CAB9>485<38><35><EFBFBD><EFBFBD> */
|
2024-07-15 03:33:54 +00:00
|
|
|
|
#define rs485_send_enable 1
|
2024-07-13 05:59:56 +00:00
|
|
|
|
|
2024-07-15 03:33:54 +00:00
|
|
|
|
//static void uart_init(uartIndex_e uart_index, int baud);
|
|
|
|
|
static void uart_init(uart_device_info *uart_device, int baud);
|
2024-07-13 05:59:56 +00:00
|
|
|
|
static uint8_t uart_putchar(device_handle device, char ch);
|
|
|
|
|
|
2024-08-07 06:53:50 +00:00
|
|
|
|
device_handle g_J1RS485_UART6_handle = 0;
|
|
|
|
|
device_handle g_J2RS485_UART7_handle = 0;
|
|
|
|
|
device_handle g_J3RS485_USART2_handle = 0;
|
|
|
|
|
device_handle g_J4RS485_UART8_handle = 0;
|
|
|
|
|
device_handle g_J50RS485_USART3_handle = 0;
|
|
|
|
|
device_handle g_LORA_UART4_handle = 0;
|
|
|
|
|
device_handle g_Upward_UART5_handle = 0;
|
2024-07-15 03:33:54 +00:00
|
|
|
|
|
|
|
|
|
#define IN_BUFF_SIZE 128
|
2024-07-17 01:40:41 +00:00
|
|
|
|
static uint8_t J1RS485_in_buff[IN_BUFF_SIZE];
|
|
|
|
|
static uint8_t J2RS485_in_buff[IN_BUFF_SIZE];
|
|
|
|
|
static uint8_t J3RS485_in_buff[IN_BUFF_SIZE];
|
|
|
|
|
static uint8_t J4RS485_in_buff[IN_BUFF_SIZE];
|
|
|
|
|
static uint8_t J50RS485_in_buff[IN_BUFF_SIZE];
|
|
|
|
|
static uint8_t LORA_in_buff[IN_BUFF_SIZE];
|
2024-08-07 06:53:50 +00:00
|
|
|
|
static uint8_t Upward_in_buff[IN_BUFF_SIZE];
|
2024-07-17 01:40:41 +00:00
|
|
|
|
//uint8_t J1RS485_in_buff[IN_BUFF_SIZE];
|
|
|
|
|
//uint8_t J2RS485_in_buff[IN_BUFF_SIZE];
|
|
|
|
|
//uint8_t J3RS485_in_buff[IN_BUFF_SIZE];
|
|
|
|
|
//uint8_t J4RS485_in_buff[IN_BUFF_SIZE];
|
|
|
|
|
//uint8_t J50RS485_in_buff[IN_BUFF_SIZE];
|
|
|
|
|
//uint8_t LORA_in_buff[IN_BUFF_SIZE];
|
2024-07-15 03:33:54 +00:00
|
|
|
|
|
2024-07-13 05:59:56 +00:00
|
|
|
|
//uint8_t rs485_out_buff[100];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
2024-07-15 03:33:54 +00:00
|
|
|
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ں<EFBFBD>.
|
2024-07-13 05:59:56 +00:00
|
|
|
|
* @param uart_index <EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD>Ӳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ں<EFBFBD>
|
|
|
|
|
* @param uart_baudrate <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
*/
|
|
|
|
|
uart_device_info uart_devices[]={
|
2024-07-15 03:33:54 +00:00
|
|
|
|
[0] = {
|
|
|
|
|
.init = 0,
|
2024-07-15 09:22:55 +00:00
|
|
|
|
.uart_index = UART6,
|
2024-07-15 03:33:54 +00:00
|
|
|
|
.uart_num = ONLYONE,
|
2024-08-07 06:53:50 +00:00
|
|
|
|
.uart_baudrate = 9600,
|
2024-07-15 03:33:54 +00:00
|
|
|
|
},
|
|
|
|
|
[1] = {
|
|
|
|
|
.init = 0,
|
2024-07-15 09:22:55 +00:00
|
|
|
|
.uart_index = UART7,
|
2024-07-15 03:33:54 +00:00
|
|
|
|
.uart_num = ONLYONE,
|
2024-08-07 06:53:50 +00:00
|
|
|
|
.uart_baudrate = 9600,
|
2024-07-15 03:33:54 +00:00
|
|
|
|
},
|
|
|
|
|
[2] = {
|
|
|
|
|
.init = 0,
|
2024-07-15 09:22:55 +00:00
|
|
|
|
.uart_index = USART2,
|
2024-07-15 03:33:54 +00:00
|
|
|
|
.uart_num = ONLYONE,
|
2024-08-07 06:53:50 +00:00
|
|
|
|
.uart_baudrate = 9600,
|
2024-07-15 03:33:54 +00:00
|
|
|
|
},
|
|
|
|
|
[3] = {
|
|
|
|
|
.init = 0,
|
2024-07-15 09:22:55 +00:00
|
|
|
|
.uart_index = UART8,
|
2024-07-15 03:33:54 +00:00
|
|
|
|
.uart_num = ONLYONE,
|
2024-08-07 06:53:50 +00:00
|
|
|
|
.uart_baudrate = 9600,
|
2024-07-15 03:33:54 +00:00
|
|
|
|
},
|
|
|
|
|
[4] = {
|
|
|
|
|
.init = 0,
|
2024-07-15 09:22:55 +00:00
|
|
|
|
.uart_index = USART3,
|
2024-07-15 03:33:54 +00:00
|
|
|
|
.uart_num = J0RS485,
|
2024-08-07 06:53:50 +00:00
|
|
|
|
.uart_baudrate = 9600,
|
2024-07-15 03:33:54 +00:00
|
|
|
|
},
|
|
|
|
|
[5] = {
|
2024-08-07 06:53:50 +00:00
|
|
|
|
.init = 0,
|
|
|
|
|
.uart_index = UART4,
|
|
|
|
|
.uart_num = ONLYONE,
|
|
|
|
|
.uart_baudrate = 9600,
|
|
|
|
|
},
|
|
|
|
|
[6] = {
|
2024-07-15 03:33:54 +00:00
|
|
|
|
.init = 0,
|
2024-07-15 09:22:55 +00:00
|
|
|
|
.uart_index = UART5,
|
2024-07-15 03:33:54 +00:00
|
|
|
|
.uart_num = ONLYONE,
|
2024-08-07 06:53:50 +00:00
|
|
|
|
.uart_baudrate = 115200,
|
2024-07-15 03:33:54 +00:00
|
|
|
|
},
|
2024-07-13 05:59:56 +00:00
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief <EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>豸.
|
|
|
|
|
* @param uart_index <EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ں<EFBFBD>
|
|
|
|
|
* @param buff <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѭ<EFBFBD><EFBFBD>buff<EFBFBD><EFBFBD>ַ
|
|
|
|
|
* @param buff_size <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѭ<EFBFBD><EFBFBD>buff<EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD>С
|
|
|
|
|
* @retval <EFBFBD><EFBFBD><EFBFBD>ھ<EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
*/
|
2024-08-07 06:53:50 +00:00
|
|
|
|
#define ELEMENT_OF(x) (sizeof(x) / sizeof((x)[0]))
|
|
|
|
|
device_handle uart_dev_init(USART_TypeDef *uart_index, uint8_t *buff, int buff_size)
|
|
|
|
|
{
|
|
|
|
|
int i = 0;
|
|
|
|
|
for(; i < ELEMENT_OF(uart_devices); i++){
|
|
|
|
|
if(uart_devices[i].uart_index == uart_index){
|
|
|
|
|
if(!uart_devices[i].init){
|
|
|
|
|
InitRingQueue(&uart_devices[i].uart_ring_queue, buff, buff_size);
|
|
|
|
|
uart_init(&uart_devices[i], uart_devices[i].uart_baudrate);
|
|
|
|
|
|
|
|
|
|
uart_devices[i].init = 1;
|
|
|
|
|
}
|
|
|
|
|
return (device_handle)(&uart_devices[i]);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
2024-07-15 03:33:54 +00:00
|
|
|
|
//device_handle uart_dev_init(uart_device_info *uart_device, uint8_t *buff, int buff_size)
|
|
|
|
|
//{
|
|
|
|
|
// int i = 0;
|
|
|
|
|
// for(; i < ELEMENT_OF(uart_devices); i++){
|
|
|
|
|
// if(uart_devices[i].uart_index == uart_device->uart_index){
|
|
|
|
|
// if(!uart_devices[i].init){
|
|
|
|
|
// InitRingQueue(&uart_devices[i].uart_ring_queue, buff, buff_size);
|
|
|
|
|
// uart_init(uart_device, uart_devices[i].uart_baudrate);
|
2024-07-13 05:59:56 +00:00
|
|
|
|
//
|
2024-07-15 03:33:54 +00:00
|
|
|
|
// uart_devices[i].init = 1;
|
2024-07-13 05:59:56 +00:00
|
|
|
|
// }
|
2024-07-15 03:33:54 +00:00
|
|
|
|
// return (device_handle)(&uart_devices[i]);
|
2024-07-13 05:59:56 +00:00
|
|
|
|
// }
|
2024-07-15 03:33:54 +00:00
|
|
|
|
// }
|
|
|
|
|
// return 0;
|
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
|
2024-08-07 06:53:50 +00:00
|
|
|
|
//uint8_t uart_all_dev_init(void)
|
|
|
|
|
//{
|
|
|
|
|
// InitRingQueue(&uart_devices[0].uart_ring_queue, J1RS485_in_buff, sizeof(J1RS485_in_buff));
|
|
|
|
|
// uart_init(&uart_devices[0], 9600);
|
|
|
|
|
// uart_devices[0].init = 1;
|
|
|
|
|
// g_J1RS485_UART6_handle = (device_handle)(&uart_devices[0]);
|
|
|
|
|
//
|
|
|
|
|
// InitRingQueue(&uart_devices[1].uart_ring_queue, J2RS485_in_buff, sizeof(J2RS485_in_buff));
|
|
|
|
|
// uart_init(&uart_devices[1], 9600);
|
|
|
|
|
// uart_devices[1].init = 1;
|
|
|
|
|
// g_J2RS485_UART7_handle = (device_handle)(&uart_devices[1]);
|
|
|
|
|
//
|
|
|
|
|
//
|
|
|
|
|
// InitRingQueue(&uart_devices[2].uart_ring_queue, J3RS485_in_buff, sizeof(J3RS485_in_buff));
|
|
|
|
|
// uart_init(&uart_devices[2], 9600);
|
|
|
|
|
// uart_devices[2].init = 1;
|
|
|
|
|
// g_J3RS485_USART2_handle = (device_handle)(&uart_devices[2]);
|
|
|
|
|
//
|
|
|
|
|
// InitRingQueue(&uart_devices[3].uart_ring_queue, J4RS485_in_buff, sizeof(J4RS485_in_buff));
|
|
|
|
|
// uart_init(&uart_devices[3], 9600);
|
|
|
|
|
// uart_devices[3].init = 1;
|
|
|
|
|
// g_J4RS485_UART8_handle = (device_handle)(&uart_devices[3]);
|
|
|
|
|
//
|
|
|
|
|
//
|
|
|
|
|
// InitRingQueue(&uart_devices[4].uart_ring_queue, J50RS485_in_buff, sizeof(J50RS485_in_buff));
|
|
|
|
|
// uart_init(&uart_devices[4], 9600);
|
|
|
|
|
// uart_devices[4].init = 1;
|
|
|
|
|
// g_J50RS485_USART3_handle = (device_handle)(&uart_devices[4]);
|
|
|
|
|
//
|
|
|
|
|
// InitRingQueue(&uart_devices[5].uart_ring_queue, LORA_in_buff, sizeof(LORA_in_buff));
|
|
|
|
|
// uart_init(&uart_devices[5], 9600);
|
|
|
|
|
// uart_devices[5].init = 1;
|
|
|
|
|
// g_LORA_UART4_handle = (device_handle)(&uart_devices[5]);
|
|
|
|
|
//
|
|
|
|
|
// return 0;
|
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
uint8_t uart_all_dev_init(void)
|
|
|
|
|
{
|
|
|
|
|
g_J1RS485_UART6_handle = uart_dev_init(uart_devices[0].uart_index,
|
|
|
|
|
J1RS485_in_buff, sizeof(J1RS485_in_buff));
|
|
|
|
|
|
|
|
|
|
g_J2RS485_UART7_handle = uart_dev_init(uart_devices[1].uart_index,
|
|
|
|
|
J2RS485_in_buff, sizeof(J2RS485_in_buff));
|
2024-07-15 03:33:54 +00:00
|
|
|
|
|
2024-08-07 06:53:50 +00:00
|
|
|
|
g_J3RS485_USART2_handle = uart_dev_init(uart_devices[2].uart_index,
|
|
|
|
|
J3RS485_in_buff, sizeof(J3RS485_in_buff));
|
2024-07-15 03:33:54 +00:00
|
|
|
|
|
2024-08-07 06:53:50 +00:00
|
|
|
|
g_J4RS485_UART8_handle = uart_dev_init(uart_devices[3].uart_index,
|
|
|
|
|
J4RS485_in_buff, sizeof(J4RS485_in_buff));
|
2024-07-15 03:33:54 +00:00
|
|
|
|
|
2024-08-07 06:53:50 +00:00
|
|
|
|
g_J50RS485_USART3_handle = uart_dev_init(uart_devices[4].uart_index,
|
|
|
|
|
J50RS485_in_buff, sizeof(J50RS485_in_buff));
|
2024-07-15 03:33:54 +00:00
|
|
|
|
|
2024-08-07 06:53:50 +00:00
|
|
|
|
g_LORA_UART4_handle = uart_dev_init(uart_devices[5].uart_index,
|
|
|
|
|
LORA_in_buff, sizeof(LORA_in_buff));
|
2024-07-15 03:33:54 +00:00
|
|
|
|
|
2024-08-07 06:53:50 +00:00
|
|
|
|
g_Upward_UART5_handle = uart_dev_init(uart_devices[6].uart_index,
|
|
|
|
|
Upward_in_buff, sizeof(Upward_in_buff));
|
2024-07-13 05:59:56 +00:00
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>.
|
|
|
|
|
* @param uart_index <EFBFBD><EFBFBD><EFBFBD>ں<EFBFBD>
|
|
|
|
|
* @param baud <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* @retval None
|
|
|
|
|
*/
|
2024-07-15 03:33:54 +00:00
|
|
|
|
void uart_init(uart_device_info *uart_device, int baud)
|
2024-07-15 09:22:55 +00:00
|
|
|
|
{
|
2024-07-15 03:33:54 +00:00
|
|
|
|
uart_device->uart_baudrate = baud;
|
2024-07-15 09:22:55 +00:00
|
|
|
|
if (uart_device->uart_index == UART6) {
|
2024-07-15 03:33:54 +00:00
|
|
|
|
J1_485_Init(baud);
|
2024-07-15 09:22:55 +00:00
|
|
|
|
} else if (uart_device->uart_index == UART7) {
|
2024-07-15 03:33:54 +00:00
|
|
|
|
J2_485_Init(baud);
|
2024-07-15 09:22:55 +00:00
|
|
|
|
} else if (uart_device->uart_index == USART2) {
|
2024-07-15 03:33:54 +00:00
|
|
|
|
J3_485_Init(baud);
|
2024-07-15 09:22:55 +00:00
|
|
|
|
} else if (uart_device->uart_index == UART8) {
|
2024-07-15 03:33:54 +00:00
|
|
|
|
J4_485_Init(baud);
|
2024-07-15 09:22:55 +00:00
|
|
|
|
} else if (uart_device->uart_index == USART3) {
|
2024-07-15 03:33:54 +00:00
|
|
|
|
J5_0_485_Init(baud);
|
|
|
|
|
if (uart_device->uart_num == J0RS485) {
|
|
|
|
|
USART_CONNET_J0();
|
|
|
|
|
} else if (uart_device->uart_num == J5RS485) {
|
|
|
|
|
USART_CONNET_J5();
|
|
|
|
|
} else if (uart_device->uart_num == J6RS485) {
|
|
|
|
|
USART_CONNET_J6();
|
|
|
|
|
} else if (uart_device->uart_num == J7RS485) {
|
|
|
|
|
USART_CONNET_J7();
|
|
|
|
|
} else if (uart_device->uart_num == J8RS485) {
|
|
|
|
|
USART_CONNET_J8();
|
|
|
|
|
} else if (uart_device->uart_num == J9RS485) {
|
|
|
|
|
USART_CONNET_J9();
|
|
|
|
|
}
|
2024-07-15 09:22:55 +00:00
|
|
|
|
} else if (uart_device->uart_index == UART5) {
|
2024-08-08 04:11:12 +00:00
|
|
|
|
Upward_UART5_Init(baud);
|
2024-08-07 06:53:50 +00:00
|
|
|
|
} else if (uart_device->uart_index == UART4) {
|
2024-08-08 04:11:12 +00:00
|
|
|
|
LORA_UART4_Init(baud);
|
2024-07-15 03:33:54 +00:00
|
|
|
|
}
|
2024-07-13 05:59:56 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD>.
|
|
|
|
|
* @param uart_index <EFBFBD><EFBFBD><EFBFBD>ں<EFBFBD>
|
|
|
|
|
* @param ch <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD>
|
|
|
|
|
* @retval 1 <EFBFBD>ɹ<EFBFBD> 0ʧ<EFBFBD><EFBFBD>
|
|
|
|
|
*/
|
|
|
|
|
uint8_t uart_putchar(device_handle device, char ch)
|
|
|
|
|
{
|
|
|
|
|
uart_device_info *device_info = (uart_device_info *)device;
|
|
|
|
|
if((!device) || (!device_info->init))
|
|
|
|
|
return 0;
|
|
|
|
|
|
2024-07-15 09:22:55 +00:00
|
|
|
|
USARTx_SendByte_str(device_info->uart_index, ch);
|
2024-07-15 03:33:54 +00:00
|
|
|
|
|
2024-07-13 05:59:56 +00:00
|
|
|
|
|
|
|
|
|
return 1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
2024-07-15 03:33:54 +00:00
|
|
|
|
* @brief J1RS485<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD>.
|
2024-07-13 05:59:56 +00:00
|
|
|
|
* @param
|
|
|
|
|
* @retval
|
|
|
|
|
*/
|
2024-07-15 03:33:54 +00:00
|
|
|
|
void J1RS485_tx_enabla(void)
|
2024-07-13 05:59:56 +00:00
|
|
|
|
{
|
2024-07-15 03:33:54 +00:00
|
|
|
|
rt_pin_write(J1_DE, write);
|
2024-07-13 05:59:56 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
2024-07-15 03:33:54 +00:00
|
|
|
|
* @brief J1RS485<EFBFBD><EFBFBD><EFBFBD>ر<EFBFBD>.
|
2024-07-13 05:59:56 +00:00
|
|
|
|
* @param
|
|
|
|
|
* @retval
|
|
|
|
|
*/
|
2024-07-15 03:33:54 +00:00
|
|
|
|
void J1RS485_tx_disenabla(void)
|
2024-07-13 05:59:56 +00:00
|
|
|
|
{
|
2024-07-15 03:33:54 +00:00
|
|
|
|
rt_pin_write(J1_DE, read);
|
2024-07-13 05:59:56 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
2024-07-15 03:33:54 +00:00
|
|
|
|
* @brief J2RS485<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD>.
|
2024-07-13 05:59:56 +00:00
|
|
|
|
* @param
|
|
|
|
|
* @retval
|
|
|
|
|
*/
|
2024-07-15 03:33:54 +00:00
|
|
|
|
void J2RS485_tx_enabla(void)
|
2024-07-13 05:59:56 +00:00
|
|
|
|
{
|
2024-07-15 03:33:54 +00:00
|
|
|
|
rt_pin_write(J2_DE, write);
|
2024-07-13 05:59:56 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
2024-07-15 03:33:54 +00:00
|
|
|
|
* @brief J2RS485<EFBFBD><EFBFBD><EFBFBD>ر<EFBFBD>.
|
2024-07-13 05:59:56 +00:00
|
|
|
|
* @param
|
|
|
|
|
* @retval
|
|
|
|
|
*/
|
2024-07-15 03:33:54 +00:00
|
|
|
|
void J2RS485_tx_disenabla(void)
|
2024-07-13 05:59:56 +00:00
|
|
|
|
{
|
2024-07-15 03:33:54 +00:00
|
|
|
|
rt_pin_write(J2_DE, read);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief J3RS485<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD>.
|
|
|
|
|
* @param
|
|
|
|
|
* @retval
|
|
|
|
|
*/
|
|
|
|
|
void J3RS485_tx_enabla(void)
|
|
|
|
|
{
|
|
|
|
|
rt_pin_write(J3_DE, write);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief J3RS485<EFBFBD><EFBFBD><EFBFBD>ر<EFBFBD>.
|
|
|
|
|
* @param
|
|
|
|
|
* @retval
|
|
|
|
|
*/
|
|
|
|
|
void J3RS485_tx_disenabla(void)
|
|
|
|
|
{
|
|
|
|
|
rt_pin_write(J3_DE, read);
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* @brief J4RS485<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD>.
|
|
|
|
|
* @param
|
|
|
|
|
* @retval
|
|
|
|
|
*/
|
|
|
|
|
void J4RS485_tx_enabla(void)
|
|
|
|
|
{
|
|
|
|
|
rt_pin_write(J4_DE, write);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief J4RS485<EFBFBD><EFBFBD><EFBFBD>ر<EFBFBD>.
|
|
|
|
|
* @param
|
|
|
|
|
* @retval
|
|
|
|
|
*/
|
|
|
|
|
void J4RS485_tx_disenabla(void)
|
|
|
|
|
{
|
|
|
|
|
rt_pin_write(J4_DE, read);
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* @brief J50RS485<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD>.
|
|
|
|
|
* @param
|
|
|
|
|
* @retval
|
|
|
|
|
*/
|
|
|
|
|
void J50RS485_tx_enabla(void)
|
|
|
|
|
{
|
|
|
|
|
rt_pin_write(USART3_DE, write);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief J50RS485<EFBFBD><EFBFBD><EFBFBD>ر<EFBFBD>.
|
|
|
|
|
* @param
|
|
|
|
|
* @retval
|
|
|
|
|
*/
|
|
|
|
|
void J50RS485_tx_disenabla(void)
|
|
|
|
|
{
|
|
|
|
|
rt_pin_write(USART3_DE, read);
|
2024-07-13 05:59:56 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD>.
|
|
|
|
|
* @param uart_index <EFBFBD><EFBFBD><EFBFBD>ں<EFBFBD>
|
|
|
|
|
* @param str <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
|
|
|
|
|
* @retval None
|
|
|
|
|
*/
|
|
|
|
|
void uart_sendstr(device_handle device,char *str)
|
|
|
|
|
{
|
|
|
|
|
#if rs485_send_enable
|
2024-07-15 03:33:54 +00:00
|
|
|
|
if(device == g_J1RS485_UART6_handle){
|
|
|
|
|
J1RS485_tx_enabla();
|
|
|
|
|
} else if (device == g_J2RS485_UART7_handle) {
|
|
|
|
|
J2RS485_tx_enabla();
|
|
|
|
|
} else if (device == g_J3RS485_USART2_handle) {
|
|
|
|
|
J3RS485_tx_enabla();
|
|
|
|
|
} else if (device == g_J4RS485_UART8_handle) {
|
|
|
|
|
J4RS485_tx_enabla();
|
|
|
|
|
} else if (device == g_J50RS485_USART3_handle) {
|
|
|
|
|
J50RS485_tx_enabla();
|
2024-07-13 05:59:56 +00:00
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
while ((*str) != (char )0u) {
|
|
|
|
|
if (*str == ASCII_CHAR_LINE_FEED){
|
|
|
|
|
uart_putchar(device, (ASCII_CHAR_CARRIAGE_RETURN));
|
|
|
|
|
uart_putchar(device, ASCII_CHAR_LINE_FEED);
|
|
|
|
|
str++;
|
|
|
|
|
}else{
|
|
|
|
|
uart_putchar(device, *str++);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#if rs485_send_enable
|
2024-07-15 03:33:54 +00:00
|
|
|
|
if(device == g_J1RS485_UART6_handle){
|
|
|
|
|
J1RS485_tx_disenabla();
|
|
|
|
|
} else if (device == g_J2RS485_UART7_handle) {
|
|
|
|
|
J2RS485_tx_disenabla();
|
|
|
|
|
} else if (device == g_J3RS485_USART2_handle) {
|
|
|
|
|
J3RS485_tx_disenabla();
|
|
|
|
|
} else if (device == g_J4RS485_UART8_handle) {
|
|
|
|
|
J4RS485_tx_disenabla();
|
|
|
|
|
} else if (device == g_J50RS485_USART3_handle) {
|
|
|
|
|
J50RS485_tx_disenabla();
|
|
|
|
|
}
|
2024-07-13 05:59:56 +00:00
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief <EFBFBD><EFBFBD><EFBFBD>ڶ<EFBFBD><EFBFBD>ֽڷ<EFBFBD><EFBFBD><EFBFBD>.
|
|
|
|
|
* @param device <EFBFBD><EFBFBD><EFBFBD>ھ<EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* @param data <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* @param len <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* @retval None
|
|
|
|
|
*/
|
|
|
|
|
void uart_dev_write(device_handle device, void *data, int len)
|
|
|
|
|
{
|
|
|
|
|
#if rs485_send_enable
|
2024-07-15 03:33:54 +00:00
|
|
|
|
if(device == g_J1RS485_UART6_handle){
|
|
|
|
|
J1RS485_tx_enabla();
|
|
|
|
|
} else if (device == g_J2RS485_UART7_handle) {
|
|
|
|
|
J2RS485_tx_enabla();
|
|
|
|
|
} else if (device == g_J3RS485_USART2_handle) {
|
|
|
|
|
J3RS485_tx_enabla();
|
|
|
|
|
} else if (device == g_J4RS485_UART8_handle) {
|
|
|
|
|
J4RS485_tx_enabla();
|
|
|
|
|
} else if (device == g_J50RS485_USART3_handle) {
|
|
|
|
|
J50RS485_tx_enabla();
|
2024-07-13 05:59:56 +00:00
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
for (int i = 0; i < len; i++) {
|
|
|
|
|
uart_putchar(device, ((u_int8_t *)data)[i]);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#if rs485_send_enable
|
2024-07-15 03:33:54 +00:00
|
|
|
|
if(device == g_J1RS485_UART6_handle){
|
|
|
|
|
J1RS485_tx_disenabla();
|
|
|
|
|
} else if (device == g_J2RS485_UART7_handle) {
|
|
|
|
|
J2RS485_tx_disenabla();
|
|
|
|
|
} else if (device == g_J3RS485_USART2_handle) {
|
|
|
|
|
J3RS485_tx_disenabla();
|
|
|
|
|
} else if (device == g_J4RS485_UART8_handle) {
|
|
|
|
|
J4RS485_tx_disenabla();
|
|
|
|
|
} else if (device == g_J50RS485_USART3_handle) {
|
|
|
|
|
J50RS485_tx_disenabla();
|
|
|
|
|
}
|
2024-07-13 05:59:56 +00:00
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief <EFBFBD>жϴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>豸ѭ<EFBFBD><EFBFBD>buff<EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
|
|
|
|
* @param device <EFBFBD><EFBFBD><EFBFBD>ھ<EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* @retval 0 <EFBFBD><EFBFBD> 1<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
*/
|
|
|
|
|
int uart_dev_char_present(device_handle device)
|
|
|
|
|
{
|
|
|
|
|
uart_device_info *device_info = (uart_device_info *)device;
|
|
|
|
|
|
|
|
|
|
if((!device) || (!device_info->init))
|
|
|
|
|
return 0;
|
|
|
|
|
|
|
|
|
|
return !RingQueueEmpty(&device_info->uart_ring_queue);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief <EFBFBD>Ӵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>豸ѭ<EFBFBD><EFBFBD>buff<EFBFBD><EFBFBD>ȡһ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
|
|
|
|
* @param device <EFBFBD><EFBFBD><EFBFBD>ھ<EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* @retval <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD>
|
|
|
|
|
*/
|
|
|
|
|
char uart_dev_in_char(device_handle device)
|
|
|
|
|
{
|
|
|
|
|
uart_device_info *device_info = (uart_device_info *)device;
|
|
|
|
|
char c = 0;
|
|
|
|
|
|
|
|
|
|
if (uart_dev_char_present(device))
|
|
|
|
|
OutRingQueue(&device_info->uart_ring_queue, (u_int8_t*)&c);
|
|
|
|
|
return c;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief <EFBFBD>ж<EFBFBD>ѭ<EFBFBD><EFBFBD>buff<EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
|
|
|
|
* @param ring_queue ѭ<EFBFBD><EFBFBD>buff<EFBFBD><EFBFBD>ַ
|
|
|
|
|
* @retval 0 <EFBFBD><EFBFBD> 1<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
*/
|
|
|
|
|
int ring_queue_dev_char_present(RingQueue *ring_queue)
|
|
|
|
|
{
|
|
|
|
|
return !RingQueueEmpty(ring_queue);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief <EFBFBD><EFBFBD>ѭ<EFBFBD><EFBFBD>buff<EFBFBD><EFBFBD>ȡһ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
|
|
|
|
* @param ring_queue ѭ<EFBFBD><EFBFBD>buff<EFBFBD><EFBFBD>ַ
|
|
|
|
|
* @retval <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD>
|
|
|
|
|
*/
|
|
|
|
|
char ring_queue_dev_in_char(RingQueue *ring_queue)
|
|
|
|
|
{
|
|
|
|
|
char c = 0;
|
|
|
|
|
if (ring_queue_dev_char_present(ring_queue))
|
|
|
|
|
OutRingQueue(ring_queue, (u_int8_t*)&c);
|
|
|
|
|
return c;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief <EFBFBD>鿴ѭ<EFBFBD><EFBFBD>buff<EFBFBD>е<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݸ<EFBFBD><EFBFBD><EFBFBD>.
|
|
|
|
|
* @param ring_queue ѭ<EFBFBD><EFBFBD>buff<EFBFBD><EFBFBD>ַ
|
|
|
|
|
* @retval ѭ<EFBFBD><EFBFBD>buff<EFBFBD>еĸ<EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
*/
|
|
|
|
|
int ring_queue_length(device_handle device)
|
|
|
|
|
{
|
|
|
|
|
uart_device_info *device_info = (uart_device_info *)device;
|
|
|
|
|
return RingQueueLength(&device_info->uart_ring_queue);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|