Lizongdi 2 weeks ago
parent
commit
95da4c27e6
  1. 5
      bspMCU/bsp_uart.c
  2. 111
      project/Spoolend/Spoolend.c

5
bspMCU/bsp_uart.c

@ -2,14 +2,15 @@
#ifdef USE_UART
extern DMA_HandleTypeDef hdma_usart1_rx;
extern DMA_HandleTypeDef hdma_usart2_rx;
extern DMA_HandleTypeDef hdma_usart3_rx;
#ifdef CONFIG_UART_IT_IDLEDMA
static TUartTab g_ptUartTab[] = {
{&hlpuart1, &hdma_usart2_rx},
{&huart1, &hdma_usart1_rx},
{&huart2, &hdma_usart2_rx},
#ifdef IOC_100PIN
{&huart3, &hdma_usart3_rx},
#ifdef IOC_100PIN
{&huart4, &hdma_usart4_rx},
{&huart5, &hdma_usart5_rx},
{&huart6, &hdma_usart6_rx},
@ -21,8 +22,8 @@ static TUartTab g_ptUartTab[] = {
{&hlpuart1, NULL},
{&huart1, NULL},
{&huart2, NULL},
#ifdef IOC_100PIN
{&huart3, NULL},
#ifdef IOC_100PIN
{&huart4, NULL},
{&huart5, NULL},
{&huart6, NULL},

111
project/Spoolend/Spoolend.c

@ -72,14 +72,18 @@ static int RS485_2_Send(char *_pBuffer, uint32_t _iSize)
#ifndef CONFIG_UART_IT_IDLEDMA
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
if (huart->Instance == LPUART1)
if (huart->Instance == USART1)
{
UART_RX_IRQHandler(g_ptRS485_1);
}
else if (huart->Instance == USART1)
else if (huart->Instance == USART3)
{
UART_RX_IRQHandler(g_ptRS485_2);
}
else if (huart->Instance == LPUART1)
{
//UART_RX_IRQHandler(g_ptRS485_2);
}
}
#endif
@ -100,12 +104,12 @@ static int check_Spoolend(char *_pBuffer, uint32_t _iSize)
static void decode_RS485_1(const char *_pBuffer, uint32_t _iSize)
{
rd_ComSend(g_ptRS485_1, (char *)_pBuffer, _iSize);
//rd_ComWrite(g_ptRS485_1, (char *)_pBuffer, _iSize);
}
static void decode_RS485_2(const char *_pBuffer, uint32_t _iSize)
{
rd_ComSend(g_ptRS485_2, (char *)_pBuffer, _iSize);
//rd_ComWrite(g_ptRS485_2, (char *)_pBuffer, _iSize);
}
static void decode_Spoolend(const char *_pBuffer, uint32_t _iSize)
@ -136,42 +140,42 @@ void HAL_FDCAN_RxFifo0Callback(FDCAN_HandleTypeDef *hfdcan, uint32_t RxFifo0ITs)
}
}
void Myprint_Init(void)
{
TUartUserData *ptUartUserData = UART_userdata_init(1, 115200, 4096);
g_ptRS485_2 = rd_ComCreate(NULL, NULL, RS485_2_Send, ptUartUserData->m_buf_size, ptUartUserData);
UART_IT_init(g_ptRS485_2);
}
int Myprint_putchar(uint8_t ch)
{
char tx_buf[2];
if (ch == '\n')
{
// 遇到换行,发送 \r\n
tx_buf[0] = '\r';
tx_buf[1] = '\n';
if (rd_ComSend(g_ptRS485_2, tx_buf, 2) < 0) return EOF;
return 2;
}
else
{
// 普通字符
tx_buf[0] = ch;
if (rd_ComSend(g_ptRS485_2, tx_buf, 1) < 0) return EOF;
return 1;
}
}
//void Myprint_Init(void)
//{
// TUartUserData *ptUartUserData = UART_userdata_init(3, 115200, 4096);
// g_ptRS485_2 = rd_ComCreate(NULL, NULL, RS485_1_Send, ptUartUserData->m_buf_size, ptUartUserData);
// UART_IT_init(g_ptRS485_2);
//}
//
//int Myprint_putchar(uint8_t ch)
//{
// char tx_buf[2];
//
// if (ch == '\n')
// {
// // 遇到换行,发送 \r\n
// tx_buf[0] = '\r';
// tx_buf[1] = '\n';
// if (rd_ComSend(g_ptRS485_2, tx_buf, 2) < 0) return EOF;
// return 2;
// }
// else
// {
// // 普通字符
// tx_buf[0] = ch;
// if (rd_ComSend(g_ptRS485_2, tx_buf, 1) < 0) return EOF;
// return 1;
// }
//}
void SpoolendInit(void)
{
TUartUserData *ptUartUserData = UART_userdata_init(0, 115200, 512);
g_ptRS485_1 = rd_ComCreate(check_RS485_1, decode_RS485_1, RS485_1_Send, ptUartUserData->m_buf_size, ptUartUserData);
TUartUserData *ptUartUserData = UART_userdata_init(1, 115200, 512);
g_ptRS485_1 = rd_ComCreate(NULL, NULL, RS485_1_Send, ptUartUserData->m_buf_size, ptUartUserData); // 仿照My_print,check和decode传NULL
UART_IT_init(g_ptRS485_1);
// TUartUserData *ptUartUserData1 = UART_userdata_init(0, 115200, 512);
// g_ptRS485_2 = rd_ComCreate(check_RS485_2, decode_RS485_2, RS485_2_Send, ptUartUserData1->m_buf_size, ptUartUserData1);
// UART_IT_init(g_ptRS485_2);
TUartUserData *ptUartUserData1 = UART_userdata_init(3, 115200, 512);
g_ptRS485_2 = rd_ComCreate(NULL, NULL, RS485_2_Send, ptUartUserData1->m_buf_size, ptUartUserData1); // 仿照My_print,check和decode传NULL
UART_IT_init(g_ptRS485_2);
TCANUserData *ptCANUserData = CAN_userdata_init(&hfdcan1, 8, 0);
g_ptFDCAN1 = rd_ComCreate(check_Spoolend, decode_Spoolend, FDCAN1_Send, CONFIG_UART_BUFFER_SIZE, ptCANUserData);
CAN_IT_init(g_ptFDCAN1);
@ -179,26 +183,39 @@ void SpoolendInit(void)
void SpoolendTask(void)
{
static int iCount = 0;
char pcBuffer1[52] = {0};
// char pcBuffer2[52] = {0};
char pcBuffer2[52] = {0};
char pcBuffer3[52] = {0};
__disable_irq();
rd_ComRead(g_ptRS485_1, pcBuffer1, sizeof(pcBuffer1));
// rd_ComRead(g_ptRS485_2, pcBuffer2, sizeof(pcBuffer2));
int i485_1 = rd_ComRead(g_ptRS485_1, pcBuffer1, sizeof(pcBuffer1));
int i485_2 = rd_ComRead(g_ptRS485_2, pcBuffer2, sizeof(pcBuffer2));
rd_ComRead(g_ptFDCAN1, pcBuffer3, sizeof(pcBuffer3));
__enable_irq();
printf("Hello world\n");
if (i485_1 > 0) rd_ComWrite(g_ptRS485_1, pcBuffer1, i485_1);
if (i485_2 > 0) rd_ComWrite(g_ptRS485_2, pcBuffer2, i485_2);
// rd_ComIDWrite(g_ptFDCAN1, 1, "Hello\n", 6);
if (iCount > 50000)
{
HAL_GPIO_TogglePin(LED1_GPIO_Port, LED1_Pin);
HAL_GPIO_TogglePin(LED2_GPIO_Port, LED2_Pin);
HAL_GPIO_TogglePin(LED3_GPIO_Port, LED3_Pin);
HAL_GPIO_TogglePin(K1_GPIO_Port, K1_Pin);
HAL_GPIO_TogglePin(K2_GPIO_Port, K2_Pin);
HAL_GPIO_TogglePin(K3_GPIO_Port, K3_Pin);
HAL_GPIO_TogglePin(K4_GPIO_Port, K4_Pin);
HAL_GPIO_TogglePin(K5_GPIO_Port, K5_Pin);
iCount = 0;
}
else
{
iCount++;
}
// HAL_GPIO_TogglePin(K1_GPIO_Port, K1_Pin);
// HAL_GPIO_TogglePin(K2_GPIO_Port, K2_Pin);
// HAL_GPIO_TogglePin(K3_GPIO_Port, K3_Pin);
// HAL_GPIO_TogglePin(K4_GPIO_Port, K4_Pin);
// HAL_GPIO_TogglePin(K5_GPIO_Port, K5_Pin);
rd_ComSendProc(g_ptRS485_1);
rd_ComSendProc(g_ptRS485_2);
rd_ComSendProc(g_ptFDCAN1);
HAL_Delay(500);
}

Loading…
Cancel
Save