HAL_Project/Project -APP-V1.0/Hardware/USART/usart.c.orig

524 lines
30 KiB
C
Raw Normal View History

2025-05-09 15:43:42 +08:00
#include "usart.h"
USART_ControlCB UART1_ControlCB; // <20><><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD>ƽ<C6BD><E1B9B9>
uint8_t U1_TxBuff[U1_TXBUFF_SIZE]; // <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E9BBBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD>
USART_ControlCB UART2_ControlCB; // <20><><EFBFBD><EFBFBD>2<EFBFBD><32><EFBFBD>ƽ<C6BD><E1B9B9>
uint8_t U2_TxBuff[U2_TXBUFF_SIZE]; // <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E9BBBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD><32><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD>
uint8_t U2_RxBuff[U2_RXBUFF_SIZE]; // <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E9BBBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD><32><EFBFBD><EFBFBD><EFBFBD>ճ<EFBFBD><D5B3><EFBFBD>
uint8_t U2_CopyBuff[U2_RXMAX_SIZE + 1]; //<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E9BBBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
USART_ControlCB UART3_ControlCB; //<2F><><EFBFBD><EFBFBD>3<EFBFBD><33><EFBFBD>ƽ<C6BD><E1B9B9>
uint8_t U3_TxBuff[U3_TXBUFF_SIZE]; //<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E9BBBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>3<EFBFBD><33><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD>
uint8_t U3_RxBuff[U3_RXBUFF_SIZE]; //<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E9BBBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>3<EFBFBD><33><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
uint8_t TempBuff[512]; // <20><><EFBFBD><EFBFBD>ν<EFBFBD><CEBD>յģ<D5B5><C4A3><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/**
* @brief USART1 Initialization Function
* @param None
* @retval None
*/
void usart1Init(uint32_t bound) {
UART1_ControlCB.USART_Handler.Instance = USART1;
UART1_ControlCB.USART_Handler.Init.BaudRate = bound;
UART1_ControlCB.USART_Handler.Init.WordLength = UART_WORDLENGTH_8B;
UART1_ControlCB.USART_Handler.Init.StopBits = UART_STOPBITS_1;
UART1_ControlCB.USART_Handler.Init.Parity = UART_PARITY_NONE;
UART1_ControlCB.USART_Handler.Init.Mode = UART_MODE_TX;
UART1_ControlCB.USART_Handler.Init.HwFlowCtl = UART_HWCONTROL_NONE;
UART1_ControlCB.USART_Handler.Init.OverSampling = UART_OVERSAMPLING_16;
if (HAL_UART_Init(&UART1_ControlCB.USART_Handler) != HAL_OK)
Error_Handler();
}
/**
* @brief USART2 Initialization Function
* @param None
* @retval None
*/
void usart2Init(uint32_t bound) {
UART2_ControlCB.USART_Handler.Instance = USART2;
UART2_ControlCB.USART_Handler.Init.BaudRate = bound;
UART2_ControlCB.USART_Handler.Init.WordLength = UART_WORDLENGTH_8B;
UART2_ControlCB.USART_Handler.Init.StopBits = UART_STOPBITS_1;
UART2_ControlCB.USART_Handler.Init.Parity = UART_PARITY_NONE;
UART2_ControlCB.USART_Handler.Init.Mode = UART_MODE_TX_RX;
UART2_ControlCB.USART_Handler.Init.HwFlowCtl = UART_HWCONTROL_NONE;
UART2_ControlCB.USART_Handler.Init.OverSampling = UART_OVERSAMPLING_16;
HAL_UART_Init(&UART2_ControlCB.USART_Handler);
if (HAL_UART_Init(&UART2_ControlCB.USART_Handler) != HAL_OK)
Error_Handler();
u2_BuffInit();
}
/*-------------------------------------------------*/
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>3 */
/*<2A><> <20><><EFBFBD><EFBFBD>bound<6E><64><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
/*<2A><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD> */
/*-------------------------------------------------*/
void usart3Init(uint32_t bound) {
UART3_ControlCB.USART_Handler.Instance = USART3; // ָ<><D6B8>ʹ<EFBFBD>õڼ<C3B5><DABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
UART3_ControlCB.USART_Handler.Init.BaudRate = bound; // <20><><EFBFBD>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD>
UART3_ControlCB.USART_Handler.Init.WordLength = UART_WORDLENGTH_8B; // <20><><EFBFBD><EFBFBD><EFBFBD>ֳ<EFBFBD>Ϊ8λ<38><CEBB><EFBFBD>ݸ<EFBFBD>ʽ
UART3_ControlCB.USART_Handler.Init.StopBits = UART_STOPBITS_1; // <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>ֹͣλ
UART3_ControlCB.USART_Handler.Init.Parity = UART_PARITY_NONE; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>żУ<C5BC><D0A3>λ
UART3_ControlCB.USART_Handler.Init.Mode = UART_MODE_TX_RX; // <20><><EFBFBD><EFBFBD><EFBFBD>շ<EFBFBD>ģʽ
UART3_ControlCB.USART_Handler.Init.HwFlowCtl = UART_HWCONTROL_NONE; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӳ<EFBFBD><D3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (HAL_UART_Init(&UART3_ControlCB.USART_Handler) != HAL_OK) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>ʧ<EFBFBD><CAA7>
Error_Handler(); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
u3_BuffInit(); // <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>3<EFBFBD>շ<EFBFBD><D5B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
}
/*-------------------------------------------------*/
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD>ĵײ<C4B5><D7B2><EFBFBD>ʼ<EFBFBD><CABC> */
/*<2A><> <20><><EFBFBD><EFBFBD>huart<72><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>þ<EFBFBD><C3BE><EFBFBD> */
/*<2A><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD> */
/*˵ <20><><EFBFBD><EFBFBD><EFBFBD>˺<EFBFBD><CBBA><EFBFBD><EFBFBD>ᱻHAL_UART_Init()<29>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD> */
/*-------------------------------------------------*/
void HAL_UART_MspInit(UART_HandleTypeDef *huart) {
GPIO_InitTypeDef GPIO_InitStruct; // GPIO<49>˿<EFBFBD><CBBF><EFBFBD><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD>
if (huart->Instance == USART1) {
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><C3B5>Ǵ<EFBFBD><C7B4><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>if<69><66>֧<EFBFBD><D6A7><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD>1<EFBFBD>ĵײ<C4B5><D7B2><EFBFBD>ʼ<EFBFBD><CABC>
__HAL_RCC_GPIOA_CLK_ENABLE(); // ʹ<><CAB9>GPIOAʱ<41><CAB1>
__HAL_RCC_USART1_CLK_ENABLE(); // ʹ<>ܴ<EFBFBD><DCB4><EFBFBD><31><CAB1>
/**USART1 GPIO Configuration
PA9 ------> USART1_TX
PA10 ------> USART1_RX
*/
GPIO_InitStruct.Pin = GPIO_PIN_9;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
GPIO_InitStruct.Pin = GPIO_PIN_10;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
}
if (huart->Instance == USART3) {
__HAL_RCC_GPIOB_CLK_ENABLE(); // ʹ<><CAB9>GPIOBʱ<42><CAB1>
__HAL_RCC_USART3_CLK_ENABLE(); // ʹ<>ܴ<EFBFBD><DCB4><EFBFBD><33><CAB1>
__HAL_RCC_DMA1_CLK_ENABLE(); // ʹ<><CAB9>DMA1ʱ<31><CAB1>
/**USART3 GPIO Configuration
PB10 ------> USART3_TX
PB11 ------> USART3_RX
*/
GPIO_InitStruct.Pin = GPIO_PIN_10;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
GPIO_InitStruct.Pin = GPIO_PIN_11;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
/* USART3 interrupt Init */
HAL_NVIC_SetPriority(USART3_IRQn, 0, 2);
HAL_NVIC_EnableIRQ(USART3_IRQn);
/* USART3 DMA Init */
/* USART3_TX Init */
UART3_ControlCB.USART_TxDMA.Instance = DMA1_Channel2;
UART3_ControlCB.USART_TxDMA.Init.Direction = DMA_MEMORY_TO_PERIPH; //<2F><EFBFBD><E6B4A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
UART3_ControlCB.USART_TxDMA.Init.PeriphInc = DMA_PINC_DISABLE; //<2F><><EFBFBD><EFBFBD><E8B2BB><EFBFBD><EFBFBD>
UART3_ControlCB.USART_TxDMA.Init.MemInc = DMA_MINC_ENABLE; //<2F><EFBFBD><E6B4A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
UART3_ControlCB.USART_TxDMA.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE; //<2F><><EFBFBD>ֽڴ<D6BD>ȡ
UART3_ControlCB.USART_TxDMA.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE; //<2F><><EFBFBD>ֽڴ<D6BD>ȡ
UART3_ControlCB.USART_TxDMA.Init.Mode = DMA_NORMAL; //<2F><><EFBFBD><EFBFBD>ģʽ
UART3_ControlCB.USART_TxDMA.Init.Priority = DMA_PRIORITY_HIGH; //<2F><><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD>
if (HAL_DMA_Init(&UART3_ControlCB.USART_TxDMA) != HAL_OK)
Error_Handler();
__HAL_LINKDMA(huart, hdmatx, UART3_ControlCB.USART_TxDMA);
/* USART3_RX Init */
UART3_ControlCB.USART_RxDMA.Instance = DMA1_Channel3;
UART3_ControlCB.USART_RxDMA.Init.Direction = DMA_PERIPH_TO_MEMORY; //<2F><><EFBFBD><EFBFBD><EFBFBD><E6B4A2>
UART3_ControlCB.USART_RxDMA.Init.PeriphInc = DMA_PINC_DISABLE; //<2F><><EFBFBD><EFBFBD><E8B2BB><EFBFBD><EFBFBD>
UART3_ControlCB.USART_RxDMA.Init.MemInc = DMA_MINC_ENABLE; //<2F><EFBFBD><E6B4A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
UART3_ControlCB.USART_RxDMA.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE; //<2F><><EFBFBD>ֽڴ<D6BD>ȡ
UART3_ControlCB.USART_RxDMA.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE; //<2F><><EFBFBD>ֽڴ<D6BD>ȡ
UART3_ControlCB.USART_RxDMA.Init.Mode = DMA_NORMAL; //<2F><><EFBFBD><EFBFBD>ģʽ
UART3_ControlCB.USART_RxDMA.Init.Priority = DMA_PRIORITY_HIGH; //<2F><><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD>
if (HAL_DMA_Init(&UART3_ControlCB.USART_RxDMA) != HAL_OK)
Error_Handler();
__HAL_LINKDMA(huart, hdmarx, UART3_ControlCB.USART_RxDMA);
HAL_NVIC_SetPriority(DMA1_Channel2_IRQn, 0, 0);
HAL_NVIC_EnableIRQ(DMA1_Channel2_IRQn);
HAL_NVIC_SetPriority(DMA1_Channel3_IRQn, 0, 0);
HAL_NVIC_EnableIRQ(DMA1_Channel3_IRQn);
}
if (huart->Instance == USART2) {
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><C3B5>Ǵ<EFBFBD><C7B4><EFBFBD>2<EFBFBD><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>if<69><66>֧<EFBFBD><D6A7><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD>1<EFBFBD>ĵײ<C4B5><D7B2><EFBFBD>ʼ<EFBFBD><CABC>
__HAL_RCC_GPIOA_CLK_ENABLE(); // ʹ<><CAB9>GPIOAʱ<41><CAB1>
__HAL_RCC_USART2_CLK_ENABLE(); // ʹ<>ܴ<EFBFBD><DCB4><EFBFBD><32><CAB1>
__HAL_RCC_DMA1_CLK_ENABLE(); // ʹ<><CAB9>DMA1ʱ<31><CAB1>
/**USART2 GPIO Configuration
PA2 ------> USART2_TX
PA3 ------> USART2_RX
*/
GPIO_InitStruct.Pin = GPIO_PIN_2;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
GPIO_InitStruct.Pin = GPIO_PIN_3;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
HAL_NVIC_SetPriority(USART2_IRQn, 0, 2); // <20><><EFBFBD>ô<EFBFBD><C3B4><EFBFBD>2<EFBFBD>жϵ<D0B6><CFB5><EFBFBD>ռ<EFBFBD><D5BC><EFBFBD>ȼ<EFBFBD>Ϊ0<CEAA><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD>2
HAL_NVIC_EnableIRQ(USART2_IRQn); // ʹ<>ܴ<EFBFBD><DCB4><EFBFBD>2<EFBFBD><32><EFBFBD>ж<EFBFBD>
/* USART2 DMA Init */
/* USART2_TX Init */
UART2_ControlCB.USART_TxDMA.Instance = DMA1_Channel7; // DMA1ͨ<31><CDA8>7
UART2_ControlCB.USART_TxDMA.Init.Direction = DMA_MEMORY_TO_PERIPH; // <20><EFBFBD><E6B4A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
UART2_ControlCB.USART_TxDMA.Init.PeriphInc = DMA_PINC_DISABLE; // <20><><EFBFBD><EFBFBD><E8B2BB><EFBFBD><EFBFBD>
UART2_ControlCB.USART_TxDMA.Init.MemInc = DMA_MINC_ENABLE; // <20><EFBFBD><E6B4A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
UART2_ControlCB.USART_TxDMA.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE; // <20><><EFBFBD>ֽڴ<D6BD>ȡ
UART2_ControlCB.USART_TxDMA.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE; // <20><><EFBFBD>ֽڴ<D6BD>ȡ
UART2_ControlCB.USART_TxDMA.Init.Mode = DMA_NORMAL; // <20><><EFBFBD><EFBFBD>ģʽ
UART2_ControlCB.USART_TxDMA.Init.Priority = DMA_PRIORITY_HIGH; // <20><><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD>
if (HAL_DMA_Init(&UART2_ControlCB.USART_TxDMA) != HAL_OK)
Error_Handler();
__HAL_LINKDMA(huart, hdmatx, UART2_ControlCB.USART_TxDMA); // <20>ʹ<EFBFBD><CDB4><EFBFBD>2 DMA<4D><41><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/* USART2_RX Init */
UART2_ControlCB.USART_RxDMA.Instance = DMA1_Channel6; // DMA1ͨ<31><CDA8>6
UART2_ControlCB.USART_RxDMA.Init.Direction = DMA_PERIPH_TO_MEMORY; // <20><><EFBFBD><EFBFBD><EFBFBD><E6B4A2>
UART2_ControlCB.USART_RxDMA.Init.PeriphInc = DMA_PINC_DISABLE; // <20><><EFBFBD><EFBFBD><E8B2BB><EFBFBD><EFBFBD>
UART2_ControlCB.USART_RxDMA.Init.MemInc = DMA_MINC_ENABLE; // <20><EFBFBD><E6B4A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
UART2_ControlCB.USART_RxDMA.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE; // <20><><EFBFBD>ֽڴ<D6BD>ȡ
UART2_ControlCB.USART_RxDMA.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE; // <20><><EFBFBD>ֽڴ<D6BD>ȡ
UART2_ControlCB.USART_RxDMA.Init.Mode = DMA_NORMAL; // <20><><EFBFBD><EFBFBD>ģʽ
UART2_ControlCB.USART_RxDMA.Init.Priority = DMA_PRIORITY_HIGH; // <20><><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD>
if (HAL_DMA_Init(&UART2_ControlCB.USART_RxDMA) != HAL_OK)
Error_Handler();
__HAL_LINKDMA(huart, hdmarx, UART2_ControlCB.USART_RxDMA); // <20>ʹ<EFBFBD><CDB4><EFBFBD>2 DMA<4D><41><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
HAL_NVIC_SetPriority(DMA1_Channel6_IRQn, 0, 0); // <20><><EFBFBD><EFBFBD>DMA1 ͨ<><CDA8>1<EFBFBD><31><EFBFBD>жϣ<D0B6><CFA3><EFBFBD><EFBFBD>ȼ<EFBFBD>
HAL_NVIC_EnableIRQ(DMA1_Channel6_IRQn); // ʹ<><CAB9>DMA1 ͨ<><CDA8>1<EFBFBD><31><EFBFBD>ж<EFBFBD>
HAL_NVIC_SetPriority(DMA1_Channel7_IRQn, 0, 0); // <20><><EFBFBD><EFBFBD>DMA1 ͨ<><CDA8>6<EFBFBD><36><EFBFBD>жϣ<D0B6><CFA3><EFBFBD><EFBFBD>ȼ<EFBFBD>
HAL_NVIC_EnableIRQ(DMA1_Channel7_IRQn); // ʹ<><CAB9>DMA1 ͨ<><CDA8>7<EFBFBD><37><EFBFBD>ж<EFBFBD>
}
}
/*-------------------------------------------------*/
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1 printf<74><66><EFBFBD><EFBFBD> */
/*<2A><> <20><><EFBFBD><EFBFBD>fmt,... <20><>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>Ͳ<EFBFBD><CDB2><EFBFBD> */
/*<2A><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD> */
/*-------------------------------------------------*/
void u1_printf(char *fmt, ...) {
uint16_t i;
va_list ap;
va_start(ap, fmt);
vsprintf((char *)U1_TxBuff, fmt, ap);
va_end(ap);
while (__HAL_UART_GET_FLAG(&UART1_ControlCB.USART_Handler, UART_FLAG_TC) != SET); // <20>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD>Ϳ<EFBFBD><CDBF>У<EFBFBD>Ȼ<EFBFBD><C8BB><EFBFBD><EFBFBD><EFBFBD>ܷ<EFBFBD><DCB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
for (i = 0; i < strlen((const char *)U1_TxBuff); i++) {
// <20><><EFBFBD><EFBFBD>forѭ<72><D1AD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ֽڣ<D6BD>һ<EFBFBD><D2BB><EFBFBD>ֽڵķ<DAB5><C4B7><EFBFBD>
UART1_ControlCB.USART_Handler.Instance->DR = U1_TxBuff[i]; // <20><><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>͵<EFBFBD><CDB5>ֽڣ<D6BD><DAA3><EFBFBD><EFBFBD><EFBFBD><E4B5BD><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
while (__HAL_UART_GET_FLAG(&UART1_ControlCB.USART_Handler, UART_FLAG_TC) != SET); // <20>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽڷ<D6BD><DAB7>ͽ<EFBFBD><CDBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ſ<EFBFBD><C5BF>Է<EFBFBD><D4B7><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ֽ<EFBFBD>
}
}
/*-------------------------------------------------*/
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2 printf<74><66><EFBFBD><EFBFBD> */
/*<2A><> <20><><EFBFBD><EFBFBD>fmt,... <20><>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>Ͳ<EFBFBD><CDB2><EFBFBD> */
/*<2A><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD> */
/*-------------------------------------------------*/
void u2_printf(char* fmt,...) {
uint16_t i;
va_list ap;
va_start(ap,fmt);
vsprintf((char *)U2_TxBuff,fmt,ap);
va_end(ap);
while(__HAL_UART_GET_FLAG(&UART2_ControlCB.USART_Handler,UART_FLAG_TC)!=SET); //<2F>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD><32><EFBFBD>Ϳ<EFBFBD><CDBF>У<EFBFBD>Ȼ<EFBFBD><C8BB><EFBFBD><EFBFBD><EFBFBD>ܷ<EFBFBD><DCB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
for(i = 0; i < strlen((const char*)U2_TxBuff); i ++) { //<2F><><EFBFBD><EFBFBD>forѭ<72><D1AD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ֽڣ<D6BD>һ<EFBFBD><D2BB><EFBFBD>ֽڵķ<DAB5><C4B7><EFBFBD>
UART2_ControlCB.USART_Handler.Instance->DR = U2_TxBuff[i]; //<2F><><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>͵<EFBFBD><CDB5>ֽڣ<D6BD><DAA3><EFBFBD><EFBFBD><EFBFBD><E4B5BD><EFBFBD><EFBFBD>2<EFBFBD><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
while(__HAL_UART_GET_FLAG(&UART2_ControlCB.USART_Handler,UART_FLAG_TC)!=SET); //<2F>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽڷ<D6BD><DAB7>ͽ<EFBFBD><CDBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ſ<EFBFBD><C5BF>Է<EFBFBD><D4B7><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ֽ<EFBFBD>
}
}
/*-------------------------------------------------*/
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>3 printf<74><66><EFBFBD><EFBFBD> */
/*<2A><> <20><><EFBFBD><EFBFBD>fmt,... <20><>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>Ͳ<EFBFBD><CDB2><EFBFBD> */
/*<2A><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD> */
/*-------------------------------------------------*/
void u3_printf(char* fmt,...) {
uint16_t i;
va_list ap;
va_start(ap,fmt);
vsprintf((char *)U3_TxBuff,fmt,ap);
va_end(ap);
while(__HAL_UART_GET_FLAG(&UART3_ControlCB.USART_Handler,UART_FLAG_TC)!=SET); //<2F>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD>3<EFBFBD><33><EFBFBD>Ϳ<EFBFBD><CDBF>У<EFBFBD>Ȼ<EFBFBD><C8BB><EFBFBD><EFBFBD><EFBFBD>ܷ<EFBFBD><DCB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
for(i = 0; i < strlen((const char*)U3_TxBuff); i ++) { //<2F><><EFBFBD><EFBFBD>forѭ<72><D1AD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ֽڣ<D6BD>һ<EFBFBD><D2BB><EFBFBD>ֽڵķ<DAB5><C4B7><EFBFBD>
UART3_ControlCB.USART_Handler.Instance->DR = U3_TxBuff[i]; //<2F><><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>͵<EFBFBD><CDB5>ֽڣ<D6BD><DAA3><EFBFBD><EFBFBD><EFBFBD><E4B5BD><EFBFBD><EFBFBD>3<EFBFBD><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
while(__HAL_UART_GET_FLAG(&UART3_ControlCB.USART_Handler,UART_FLAG_TC)!=SET); //<2F>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽڷ<D6BD><DAB7>ͽ<EFBFBD><CDBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ſ<EFBFBD><C5BF>Է<EFBFBD><D4B7><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ֽ<EFBFBD>
}
}
/*-------------------------------------------------*/
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
/*<2A><> <20><><EFBFBD><EFBFBD>data<74><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
/*<2A><> <20><><EFBFBD><EFBFBD>len<65><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
/*<2A><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD> */
/*-------------------------------------------------*/
void u2_TxData(uint8_t *data, uint16_t len) {
uint16_t i;
while (__HAL_UART_GET_FLAG(&UART2_ControlCB.USART_Handler, UART_FLAG_TC) != SET); // <20>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD>Ϳ<EFBFBD><CDBF>У<EFBFBD>Ȼ<EFBFBD><C8BB><EFBFBD><EFBFBD><EFBFBD>ܷ<EFBFBD><DCB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
for (i = 0; i < len; i++) {
// ѭ<><D1AD>һ<EFBFBD><D2BB>һ<EFBFBD><D2BB><EFBFBD>ֽڵķ<DAB5><C4B7><EFBFBD>
UART2_ControlCB.USART_Handler.Instance->DR = data[i]; // <20><><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>͵<EFBFBD><CDB5>ֽڣ<D6BD><DAA3><EFBFBD><EFBFBD><EFBFBD><E4B5BD><EFBFBD><EFBFBD>2<EFBFBD><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
while (__HAL_UART_GET_FLAG(&UART2_ControlCB.USART_Handler, UART_FLAG_TC) != SET); // <20>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD><32><EFBFBD>Ϳ<EFBFBD><CDBF>У<EFBFBD>Ȼ<EFBFBD><C8BB><EFBFBD><EFBFBD><EFBFBD>ܷ<EFBFBD><DCB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}
}
/*-------------------------------------------------*/
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>3<EFBFBD><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
/*<2A><> <20><><EFBFBD><EFBFBD>data<74><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
/*<2A><> <20><><EFBFBD><EFBFBD>len<65><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
/*<2A><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD> */
/*-------------------------------------------------*/
void u3_TxData(uint8_t *data, uint16_t len) {
uint16_t i;
while (__HAL_UART_GET_FLAG(&UART3_ControlCB.USART_Handler, UART_FLAG_TC) != SET); // <20>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD>3<EFBFBD><33><EFBFBD>Ϳ<EFBFBD><CDBF>У<EFBFBD>Ȼ<EFBFBD><C8BB><EFBFBD><EFBFBD><EFBFBD>ܷ<EFBFBD><DCB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
for (i = 0; i < len; i++) {
// ѭ<><D1AD>һ<EFBFBD><D2BB>һ<EFBFBD><D2BB><EFBFBD>ֽڵķ<DAB5><C4B7><EFBFBD>
UART3_ControlCB.USART_Handler.Instance->DR = data[i]; // <20><><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>͵<EFBFBD><CDB5>ֽڣ<D6BD><DAA3><EFBFBD><EFBFBD><EFBFBD><E4B5BD><EFBFBD><EFBFBD>3<EFBFBD><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
while (__HAL_UART_GET_FLAG(&UART3_ControlCB.USART_Handler, UART_FLAG_TC) != SET); // <20>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD>3<EFBFBD><33><EFBFBD>Ϳ<EFBFBD><CDBF>У<EFBFBD>Ȼ<EFBFBD><C8BB><EFBFBD><EFBFBD><EFBFBD>ܷ<EFBFBD><DCB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}
}
/*----------------------------------------------------------*/
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD>շ<EFBFBD><D5B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8> */
/*<2A><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
/*<2A><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD> */
/*----------------------------------------------------------*/
void u2_BuffInit(void) {
UART2_ControlCB.UsartTxDataInPtr = &UART2_ControlCB.Usart_TxLocation[0]; //<2F><><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD> In<49><6E><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>λ<EFBFBD><CEBB> λ<>ýṹ<C3BD><E1B9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD>ų<EFBFBD>Ա
UART2_ControlCB.UsartTxDataOutPtr = UART2_ControlCB.UsartTxDataInPtr; //<2F><><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD> Out<75><74>ȡָ<C8A1><D6B8><EFBFBD><EFBFBD>λ<EFBFBD><CEBB> In<49><6E><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>λ<EFBFBD><CEBB>
UART2_ControlCB.UsartTxDataEndPtr = &UART2_ControlCB.Usart_TxLocation[TX_NUM-1]; //<2F><><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD> End<6E><64>β<EFBFBD><CEB2><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>λ<EFBFBD><CEBB> λ<>ýṹ<C3BD><E1B9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD>Ա
UART2_ControlCB.UsartTxDataInPtr->StartPtr = U2_TxBuff; //In<49><6E><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD>Ա startָ<74><D6B8>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼλ<CABC><CEBB>
UART2_ControlCB.Usart_TxCounter = 0; //<2F>ۼƷ<DBBC><C6B7>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ŵ<EFBFBD><C5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>=0
UART2_ControlCB.Usart_TxCpltflag = 0; //<2F><><EFBFBD>Ϳ<EFBFBD><CDBF><EFBFBD>
UART2_ControlCB.Usart_TxTimer = HAL_GetTick(); //<2F><>¼<EFBFBD><C2BC>ǰʱ<C7B0><CAB1>
UART2_ControlCB.UsartRxDataInPtr = &UART2_ControlCB.Usart_RxLocation[0]; //<2F><><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD> In<49><6E><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>λ<EFBFBD><CEBB> λ<>ýṹ<C3BD><E1B9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD>ų<EFBFBD>Ա
UART2_ControlCB.UsartRxDataOutPtr = UART2_ControlCB.UsartRxDataInPtr; //<2F><><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD> Out<75><74>ȡָ<C8A1><D6B8><EFBFBD><EFBFBD>λ<EFBFBD><CEBB> In<49><6E><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>λ<EFBFBD><CEBB>
UART2_ControlCB.UsartRxDataEndPtr = &UART2_ControlCB.Usart_RxLocation[RX_NUM-1]; //<2F><><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD> End<6E><64>β<EFBFBD><CEB2><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>λ<EFBFBD><CEBB> λ<>ýṹ<C3BD><E1B9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD>Ա
UART2_ControlCB.UsartRxDataInPtr->StartPtr = U2_RxBuff; //In<49><6E><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD>Ա startָ<74><D6B8>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼλ<CABC><CEBB>
UART2_ControlCB.Usart_RxCounter = 0; //<2F>ۼƽ<DBBC><C6BD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ŵ<EFBFBD><C5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>=0
memset(U2_RxBuff,0,U2_RXBUFF_SIZE); //<2F><><EFBFBD>մ<EFBFBD><D5B4><EFBFBD>2 <20><><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
HAL_UART_Receive_DMA(&UART2_ControlCB.USART_Handler,UART2_ControlCB.UsartRxDataInPtr->StartPtr,U2_RXMAX_SIZE); //<2F><><EFBFBD><EFBFBD>DMA<4D><41><EFBFBD><EFBFBD> ָ<><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>
__HAL_UART_CLEAR_IDLEFLAG(&UART2_ControlCB.USART_Handler); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϱ<D0B6>־
__HAL_UART_ENABLE_IT(&UART2_ControlCB.USART_Handler, UART_IT_IDLE); //<2F>򿪿<EFBFBD><F2BFAABF><EFBFBD><EFBFBD>ж<EFBFBD>
}
/*----------------------------------------------------------*/
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>3<EFBFBD>շ<EFBFBD><D5B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8> */
/*<2A><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
/*<2A><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD> */
/*----------------------------------------------------------*/
void u3_BuffInit(void) {
UART3_ControlCB.UsartTxDataInPtr = &UART3_ControlCB.Usart_TxLocation[0]; //<2F><><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD> In<49><6E><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>λ<EFBFBD><CEBB> λ<>ýṹ<C3BD><E1B9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD>ų<EFBFBD>Ա
UART3_ControlCB.UsartTxDataOutPtr = UART3_ControlCB.UsartTxDataInPtr; //<2F><><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD> Out<75><74>ȡָ<C8A1><D6B8><EFBFBD><EFBFBD>λ<EFBFBD><CEBB> In<49><6E><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>λ<EFBFBD><CEBB>
UART3_ControlCB.UsartTxDataEndPtr = &UART3_ControlCB.Usart_TxLocation[TX_NUM-1]; //<2F><><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD> End<6E><64>β<EFBFBD><CEB2><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>λ<EFBFBD><CEBB> λ<>ýṹ<C3BD><E1B9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD>Ա
UART3_ControlCB.UsartTxDataInPtr->StartPtr = U3_TxBuff; //In<49><6E><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD>Ա startָ<74><D6B8>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼλ<CABC><CEBB>
UART3_ControlCB.Usart_TxCounter = 0; //<2F>ۼƷ<DBBC><C6B7>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ŵ<EFBFBD><C5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>=0
UART3_ControlCB.Usart_TxCpltflag = 0; //<2F><><EFBFBD>Ϳ<EFBFBD><CDBF><EFBFBD>
UART3_ControlCB.Usart_TxTimer = HAL_GetTick(); //<2F><>¼<EFBFBD><C2BC>ǰʱ<C7B0><CAB1>
UART3_ControlCB.UsartRxDataInPtr = &UART3_ControlCB.Usart_RxLocation[0]; //<2F><><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD> In<49><6E><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>λ<EFBFBD><CEBB> λ<>ýṹ<C3BD><E1B9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD>ų<EFBFBD>Ա
UART3_ControlCB.UsartRxDataOutPtr = UART3_ControlCB.UsartRxDataInPtr; //<2F><><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD> Out<75><74>ȡָ<C8A1><D6B8><EFBFBD><EFBFBD>λ<EFBFBD><CEBB> In<49><6E><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>λ<EFBFBD><CEBB>
UART3_ControlCB.UsartRxDataEndPtr = &UART3_ControlCB.Usart_RxLocation[RX_NUM-1]; //<2F><><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD> End<6E><64>β<EFBFBD><CEB2><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>λ<EFBFBD><CEBB> λ<>ýṹ<C3BD><E1B9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD>Ա
UART3_ControlCB.UsartRxDataInPtr->StartPtr = U3_RxBuff; //In<49><6E><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD>Ա startָ<74><D6B8>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼλ<CABC><CEBB>
UART3_ControlCB.Usart_RxCounter = 0; //<2F>ۼƽ<DBBC><C6BD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ŵ<EFBFBD><C5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>=0
HAL_UART_Receive_DMA(&UART3_ControlCB.USART_Handler,UART3_ControlCB.UsartRxDataInPtr->StartPtr,U3_RXMAX_SIZE); //<2F><><EFBFBD><EFBFBD>DMA<4D><41><EFBFBD><EFBFBD> ָ<><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>
__HAL_UART_CLEAR_IDLEFLAG(&UART3_ControlCB.USART_Handler); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϱ<D0B6>־
__HAL_UART_ENABLE_IT(&UART3_ControlCB.USART_Handler, UART_IT_IDLE); //<2F>򿪿<EFBFBD><F2BFAABF><EFBFBD><EFBFBD>ж<EFBFBD>
}
/*----------------------------------------------------------*/
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
/*<2A><> <20><><EFBFBD><EFBFBD>databuff<66><66><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
/*<2A><> <20><><EFBFBD><EFBFBD>datalen<65><6E><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD> */
/*<2A><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD> */
/*----------------------------------------------------------*/
void u2_TxDataBuf(uint8_t *databuff, uint32_t datalen) {
if (U2_TXBUFF_SIZE - UART2_ControlCB.Usart_TxCounter >= datalen) {
// <20><><EFBFBD><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʣ<EFBFBD><CAA3><EFBFBD>Ŀռ<D5BC><E4A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ű<EFBFBD><C5B1>ε<EFBFBD><CEB5><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD>if
UART2_ControlCB.UsartTxDataInPtr->StartPtr = &U2_TxBuff[UART2_ControlCB.Usart_TxCounter]; // <20><><EFBFBD>DZ<EFBFBD><C7B1>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><DDB5><EFBFBD>ʼλ<CABC><CEBB>
} else {
// <20><>֮<EFBFBD><D6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ű<EFBFBD><C5B1>ε<EFBFBD><CEB5><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD>else
UART2_ControlCB.Usart_TxCounter = 0; // <20>ۼƷ<DBBC><C6B7>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ŵ<EFBFBD><C5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
UART2_ControlCB.UsartTxDataInPtr->StartPtr = U2_TxBuff; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><DDB5><EFBFBD>ʼλ<CABC><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼλ<CABC><CEBB>
}
memcpy(UART2_ControlCB.UsartTxDataInPtr->StartPtr, databuff, datalen); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
UART2_ControlCB.Usart_TxCounter += datalen; // <20><><EFBFBD><EFBFBD><EFBFBD>ۼƷ<DBBC><C6B7>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ŵ<EFBFBD><C5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
UART2_ControlCB.UsartTxDataInPtr->EndPtr = &U2_TxBuff[UART2_ControlCB.Usart_TxCounter]; // <20><><EFBFBD>Ƿ<EFBFBD><C7B7>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><CEB4>ŵĽ<C5B5><C4BD><EFBFBD>λ<EFBFBD><CEBB>
UART2_ControlCB.UsartTxDataInPtr++; // <20><><EFBFBD><EFBFBD>INָ<4E><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (UART2_ControlCB.UsartTxDataInPtr == UART2_ControlCB.UsartTxDataEndPtr) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD>Endָ<64><D6B8><EFBFBD><EFBFBD><EFBFBD>ǵĽ<C7B5><C4BD><EFBFBD>λ<EFBFBD>ã<EFBFBD><C3A3><EFBFBD><EFBFBD><EFBFBD>if
UART2_ControlCB.UsartTxDataInPtr = &UART2_ControlCB.Usart_TxLocation[0]; // <20><><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD> In<49><6E><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>λ<EFBFBD><CEBB> λ<>ýṹ<C3BD><E1B9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD>ų<EFBFBD>Ա
}
/*----------------------------------------------------------*/
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
/*<2A><> <20><><EFBFBD><EFBFBD>databuff<66><66><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
/*<2A><> <20><><EFBFBD><EFBFBD>datalen<65><6E><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD> */
/*<2A><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD> */
/*----------------------------------------------------------*/
void u3_TxDataBuf(uint8_t *databuff, uint32_t datalen) {
if(U3_TXBUFF_SIZE - UART3_ControlCB.Usart_TxCounter >= datalen) { //<2F><><EFBFBD><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʣ<EFBFBD><CAA3><EFBFBD>Ŀռ<D5BC><E4A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ű<EFBFBD><C5B1>ε<EFBFBD><CEB5><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD>if
UART3_ControlCB.UsartTxDataInPtr->StartPtr = &U3_TxBuff[UART3_ControlCB.Usart_TxCounter]; //<2F><><EFBFBD>DZ<EFBFBD><C7B1>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><DDB5><EFBFBD>ʼλ<CABC><CEBB>
} else { //<2F><>֮<EFBFBD><D6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ű<EFBFBD><C5B1>ε<EFBFBD><CEB5><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD>else
UART3_ControlCB.Usart_TxCounter = 0; //<2F>ۼƷ<DBBC><C6B7>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ŵ<EFBFBD><C5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
UART3_ControlCB.UsartTxDataInPtr->StartPtr = U3_TxBuff; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><DDB5><EFBFBD>ʼλ<CABC><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼλ<CABC><CEBB>
}
memcpy(UART3_ControlCB.UsartTxDataInPtr->StartPtr,databuff,datalen); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
UART3_ControlCB.Usart_TxCounter += datalen; //<2F><><EFBFBD><EFBFBD><EFBFBD>ۼƷ<DBBC><C6B7>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ŵ<EFBFBD><C5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
UART3_ControlCB.UsartTxDataInPtr->EndPtr = &U3_TxBuff[UART3_ControlCB.Usart_TxCounter]; //<2F><><EFBFBD>Ƿ<EFBFBD><C7B7>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><CEB4>ŵĽ<C5B5><C4BD><EFBFBD>λ<EFBFBD><CEBB>
UART3_ControlCB.UsartTxDataInPtr++; //<2F><><EFBFBD><EFBFBD>INָ<4E><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if(UART3_ControlCB.UsartTxDataInPtr==UART3_ControlCB.UsartTxDataEndPtr) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD>Endָ<64><D6B8><EFBFBD><EFBFBD><EFBFBD>ǵĽ<C7B5><C4BD><EFBFBD>λ<EFBFBD>ã<EFBFBD><C3A3><EFBFBD><EFBFBD><EFBFBD>if
UART3_ControlCB.UsartTxDataInPtr = &UART3_ControlCB.Usart_TxLocation[0]; //<2F><><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD> In<49><6E><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>λ<EFBFBD><CEBB> λ<>ýṹ<C3BD><E1B9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD>ų<EFBFBD>Ա
}
/*-------------------------------------------------*/
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD><E9B7A2>ָ<EFBFBD><D6B8> */
/*<2A><> <20><><EFBFBD><EFBFBD>cmd<6D><64>ָ<EFBFBD><D6B8> */
/*<2A><> <20><><EFBFBD><EFBFBD>ret<65><74><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD><EFBFBD> */
/*<2A><> <20><><EFBFBD><EFBFBD>timeout<75><74><EFBFBD><EFBFBD>ʱʱ<CAB1>䣨100ms<6D>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD> */
/*<2A><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>0<EFBFBD><30><EFBFBD><EFBFBD>ȷ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
/*-------------------------------------------------*/
char catSendCmd(char *cmd, char *ret, uint16_t timeout)
{
memset(U2_CopyBuff,0,U2_RXMAX_SIZE + 1); //<2F><><EFBFBD>մ<EFBFBD><D5B4>ڽ<EFBFBD><DABD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD> //<2F><><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
memcpy(U2_CopyBuff,UART2_ControlCB.UsartRxDataOutPtr->StartPtr,UART2_ControlCB.UsartRxDataOutPtr->EndPtr - UART2_ControlCB.UsartRxDataOutPtr->StartPtr);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CAT1_printf("%s\r\n", cmd); //<2F><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
while(timeout--)
{
HAL_Delay(100);
if (strstr((char *)U2_CopyBuff, ret)) //<2F><><EFBFBD><EFBFBD>ƥ<EFBFBD><C6A5><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
break;
u1_printf("%d ", timeout); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵij<DAB5>ʱʱ<CAB1><CAB1>
}
u1_printf("\r\n"); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
if (timeout <= 0)
return 1; // <20><><EFBFBD><EFBFBD>timeout<=0<><30>˵<EFBFBD><CBB5><EFBFBD><EFBFBD>ʱʱ<CAB1><EFBFBD>ˣ<EFBFBD>Ҳû<D2B2><C3BB><EFBFBD>յ<EFBFBD>OK<4F><4B><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1
else
return 0; // <20><>֮<EFBFBD><D6AE><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>ȷ<EFBFBD><C8B7>˵<EFBFBD><CBB5><EFBFBD>յ<EFBFBD>OK<4F><4B>ͨ<EFBFBD><CDA8>break<61><6B><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>while
}
/*-----------------------------------------------------------------------------------------*/
/* <20><> <20><> <20><> <20><> 2 - 4 G <20><> <20><> <20><> <20><> <20><> <20><> */
/*-----------------------------------------------------------------------------------------*/
// <20><><EFBFBD><EFBFBD> UsartRxDataOutPtrָ<72><D6B8> <20><> UsartRxDataInPtrָ<72><EFBFBD><EBB2BB><EFBFBD>ȣ<EFBFBD><C8A3><EFBFBD>if<69><66><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><CBB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD><DDBD>յ<EFBFBD><D5B5><EFBFBD>
void usart2RxHandle(void) {
// uint16_t i = 0;
if(UART2_ControlCB.UsartRxDataOutPtr != UART2_ControlCB.UsartRxDataInPtr) {
u1_printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD><EFBFBD><EFBFBD>ν<EFBFBD><EFBFBD><EFBFBD>%d<>ֽڱ<D6BD><DAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD>\r\n",UART2_ControlCB.UsartRxDataOutPtr->EndPtr - UART2_ControlCB.UsartRxDataOutPtr->StartPtr); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// for(i=0;i<UART2_ControlCB.UsartRxDataOutPtr->EndPtr - UART2_ControlCB.UsartRxDataOutPtr->StartPtr;i++)
// u1_printf("%02x ",UART2_ControlCB.UsartRxDataOutPtr->StartPtr[i]);
// u1_printf("\r\n\r\n");
memset(U2_CopyBuff,0,U2_RXMAX_SIZE + 1); //<2F><><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
memcpy(U2_CopyBuff,UART2_ControlCB.UsartRxDataOutPtr->StartPtr,UART2_ControlCB.UsartRxDataOutPtr->EndPtr - UART2_ControlCB.UsartRxDataOutPtr->StartPtr);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
u2PassiveEvent(U2_CopyBuff,UART2_ControlCB.UsartRxDataOutPtr->EndPtr - UART2_ControlCB.UsartRxDataOutPtr->StartPtr); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD><32><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD>
UART2_ControlCB.UsartRxDataOutPtr ++; //Outָ<74><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if(UART2_ControlCB.UsartRxDataOutPtr==UART2_ControlCB.UsartRxDataEndPtr) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD>Endָ<64><D6B8><EFBFBD><EFBFBD><EFBFBD>ǵĽ<C7B5>βλ<CEB2><CEBB>
UART2_ControlCB.UsartRxDataOutPtr = &UART2_ControlCB.Usart_RxLocation[0]; //<2F><><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>Out<75><74><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>λ<EFBFBD>ýṹ<C3BD><E1B9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD>ų<EFBFBD>Ա
}
}
/*-----------------------------------------------------------------------------------------*/
/* <20><> <20><> <20><> <20><> 2 - 4 G ģ <20><> <20><> <20><> <20><> <20><> <20><> */
/*-----------------------------------------------------------------------------------------*/
// <20><><EFBFBD><EFBFBD> UsartTxDataOutPtrָ<72><D6B8> <20><> UsartTxDataInPtrָ<72><EFBFBD><EBB2BB><EFBFBD><EFBFBD> <20><> <20><><EFBFBD>Ϳ<EFBFBD><CDBF><EFBFBD> <20><>if<69><66><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><CBB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>
void usart2TxHandle(void) {
// uint16_t i = 0;
if((UART2_ControlCB.UsartTxDataOutPtr != UART2_ControlCB.UsartTxDataInPtr)&&(UART2_ControlCB.Usart_TxCpltflag == 0)) {
u1_printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD><EFBFBD><EFBFBD>η<EFBFBD><EFBFBD><EFBFBD>%d<>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD>\r\n",UART2_ControlCB.UsartTxDataOutPtr->EndPtr - UART2_ControlCB.UsartTxDataOutPtr->StartPtr);
// for(i=0;i<UART2_ControlCB.UsartTxDataOutPtr->EndPtr - UART2_ControlCB.UsartTxDataOutPtr->StartPtr;i++)
// u1_printf("%02x ",UART2_ControlCB.UsartTxDataOutPtr->StartPtr[i]);
// u1_printf("\r\n\r\n");
if(HAL_UART_Transmit_DMA(&UART2_ControlCB.USART_Handler,UART2_ControlCB.UsartTxDataOutPtr->StartPtr,UART2_ControlCB.UsartTxDataOutPtr->EndPtr - UART2_ControlCB.UsartTxDataOutPtr->StartPtr)== HAL_OK) {
UART2_ControlCB.Usart_TxCpltflag = 1; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
UART2_ControlCB.UsartTxDataOutPtr ++; //Outָ<74><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if(UART2_ControlCB.UsartTxDataOutPtr==UART2_ControlCB.UsartTxDataEndPtr) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD>Endָ<64><D6B8><EFBFBD><EFBFBD><EFBFBD>ǵĽ<C7B5>βλ<CEB2><CEBB>
UART2_ControlCB.UsartTxDataOutPtr = &UART2_ControlCB.Usart_TxLocation[0]; //<2F><><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD>Out<75><74><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>λ<EFBFBD>ýṹ<C3BD><E1B9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD>ų<EFBFBD>Ա
}
}
}
/*-----------------------------------------------------------------------------------------*/
/* <20><> <20><> <20><> <20><> 3 - LoRA <20><> <20><> <20><> <20><> <20><> <20><> */
/*-----------------------------------------------------------------------------------------*/
// <20><><EFBFBD><EFBFBD> UsartRxDataOutPtrָ<72><D6B8> <20><> UsartRxDataInPtrָ<72><EFBFBD><EBB2BB><EFBFBD>ȣ<EFBFBD><C8A3><EFBFBD>if<69><66><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><CBB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD><DDBD>յ<EFBFBD><D5B5><EFBFBD>
void usart3RxHandle(void) {
// uint16_t i = 0;
if(UART3_ControlCB.UsartRxDataOutPtr != UART3_ControlCB.UsartRxDataInPtr) {
u1_printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>3<EFBFBD><EFBFBD><EFBFBD>ν<EFBFBD><EFBFBD><EFBFBD>%d<>ֽڱ<D6BD><DAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD>\r\n",UART3_ControlCB.UsartRxDataOutPtr->EndPtr - UART3_ControlCB.UsartRxDataOutPtr->StartPtr);
// for(i=0;i<UART3_ControlCB.UsartRxDataOutPtr->EndPtr - UART3_ControlCB.UsartRxDataOutPtr->StartPtr;i++)
// u1_printf("%02x ",UART3_ControlCB.UsartRxDataOutPtr->StartPtr[i]);
// u1_printf("\r\n\r\n");
u3PassiveEvent(UART3_ControlCB.UsartRxDataOutPtr->StartPtr,UART3_ControlCB.UsartRxDataOutPtr->EndPtr - UART3_ControlCB.UsartRxDataOutPtr->StartPtr); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>4<EFBFBD><34><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD>
UART3_ControlCB.UsartRxDataOutPtr ++; //Outָ<74><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if(UART3_ControlCB.UsartRxDataOutPtr==UART3_ControlCB.UsartRxDataEndPtr) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD>Endָ<64><D6B8><EFBFBD><EFBFBD><EFBFBD>ǵĽ<C7B5>βλ<CEB2><CEBB>
UART3_ControlCB.UsartRxDataOutPtr = &UART3_ControlCB.Usart_RxLocation[0]; //<2F><><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>Out<75><74><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>λ<EFBFBD>ýṹ<C3BD><E1B9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD>ų<EFBFBD>Ա
}
}
/*-----------------------------------------------------------------------------------------*/
/* <20><> <20><> <20><> <20><> 3 - LoRA ģ <20><> <20><> <20><> <20><> <20><> <20><> */
/*-----------------------------------------------------------------------------------------*/
// <20><><EFBFBD><EFBFBD> UsartTxDataOutPtrָ<72><D6B8> <20><> UsartTxDataInPtrָ<72><EFBFBD><EBB2BB><EFBFBD><EFBFBD> <20><> <20><><EFBFBD>Ϳ<EFBFBD><CDBF><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>ϴη<CFB4><CEB7>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>100ms <20><>if<69><66><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><CBB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>
void usart3TxHandle(void) {
uint16_t i = 0;
if((UART3_ControlCB.UsartTxDataOutPtr != UART3_ControlCB.UsartTxDataInPtr)&&(UART3_ControlCB.Usart_TxCpltflag == 0)&&(HAL_GetTick() - UART3_ControlCB.Usart_TxTimer>100)) {
u1_printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>3<EFBFBD><EFBFBD><EFBFBD>η<EFBFBD><EFBFBD><EFBFBD>%d<>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD>\r\n",UART3_ControlCB.UsartTxDataOutPtr->EndPtr - UART3_ControlCB.UsartTxDataOutPtr->StartPtr);
// for(i=0;i<UART3_ControlCB.UsartTxDataOutPtr->EndPtr - UART3_ControlCB.UsartTxDataOutPtr->StartPtr;i++)
// u1_printf("%02x ",UART3_ControlCB.UsartTxDataOutPtr->StartPtr[i]);
// u1_printf("\r\n\r\n");
if(HAL_UART_Transmit_DMA(&UART3_ControlCB.USART_Handler,UART3_ControlCB.UsartTxDataOutPtr->StartPtr,UART3_ControlCB.UsartTxDataOutPtr->EndPtr - UART3_ControlCB.UsartTxDataOutPtr->StartPtr)== HAL_OK) {
UART3_ControlCB.Usart_TxCpltflag = 1; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
UART3_ControlCB.UsartTxDataOutPtr ++; //Outָ<74><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if(UART3_ControlCB.UsartTxDataOutPtr==UART3_ControlCB.UsartTxDataEndPtr) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD>Endָ<64><D6B8><EFBFBD><EFBFBD><EFBFBD>ǵĽ<C7B5>βλ<CEB2><CEBB>
UART3_ControlCB.UsartTxDataOutPtr = &UART3_ControlCB.Usart_TxLocation[0]; //<2F><><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD>Out<75><74><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>λ<EFBFBD>ýṹ<C3BD><E1B9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD>ų<EFBFBD>Ա
}
}
}