493 lines
26 KiB
C
493 lines
26 KiB
C
|
|
#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>1ʱ<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 == 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>2ʱ<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>
|
|||
|
|
}
|
|||
|
|
if (huart->Instance == USART3) {
|
|||
|
|
__HAL_RCC_GPIOB_CLK_ENABLE(); // ʹ<><CAB9>GPIOBʱ<42><CAB1>
|
|||
|
|
__HAL_RCC_USART3_CLK_ENABLE(); // ʹ<>ܴ<EFBFBD><DCB4><EFBFBD>3ʱ<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);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*-------------------------------------------------*/
|
|||
|
|
/*<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, ...) {
|
|||
|
|
va_list ap;
|
|||
|
|
va_start(ap, fmt);
|
|||
|
|
u1_vprintf(fmt, ap); // <20><><EFBFBD><EFBFBD>u1_vprintf
|
|||
|
|
va_end(ap);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void u1_vprintf(const char *fmt, va_list ap) {
|
|||
|
|
uint16_t i;
|
|||
|
|
vsprintf((char *)U1_TxBuff, fmt, ap);
|
|||
|
|
while (__HAL_UART_GET_FLAG(&UART1_ControlCB.USART_Handler, UART_FLAG_TC) != SET);
|
|||
|
|
for (i = 0; i < strlen((const char *)U1_TxBuff); i++) {
|
|||
|
|
UART1_ControlCB.USART_Handler.Instance->DR = U1_TxBuff[i];
|
|||
|
|
while (__HAL_UART_GET_FLAG(&UART1_ControlCB.USART_Handler, UART_FLAG_TC) != SET);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
/*-------------------------------------------------*/
|
|||
|
|
/*<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>Ա
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
/*-----------------------------------------------------------------------------------------*/
|
|||
|
|
/* <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) {
|
|||
|
|
log_info("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD><EFBFBD><EFBFBD>ν<EFBFBD><EFBFBD><EFBFBD>%d<>ֽڱ<D6BD><DAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(*4Gģ<47><C4A3>*)<29><>",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>
|
|||
|
|
log_info("%s",U2_CopyBuff);
|
|||
|
|
|
|||
|
|
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>
|
|||
|
|
LED1_TOGGLE;
|
|||
|
|
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)) {
|
|||
|
|
log_info("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD><EFBFBD><EFBFBD>η<EFBFBD><EFBFBD><EFBFBD>%d<>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD>(*4Gģ<47><C4A3>*)",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>Ա
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
/*-------------------------------------------------*/
|
|||
|
|
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD><32><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD> */
|
|||
|
|
/*<2A><> <20><><EFBFBD><EFBFBD>data <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
|
/*<2A><> <20><><EFBFBD><EFBFBD>datalen <20><><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD> CLOSED */
|
|||
|
|
/*<2A><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD> */
|
|||
|
|
/*-------------------------------------------------*/
|
|||
|
|
void u2PassiveEvent(uint8_t *data, uint16_t datalen) {
|
|||
|
|
|
|||
|
|
|
|||
|
|
if(strstr((char *)data,"CLOSED")) { //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ̨<C6BD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <><D7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
log_info("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
|||
|
|
NVIC_SystemReset();//<2F><><EFBFBD><EFBFBD>
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if(strstr((char *)data,"iot.prop.set")) {
|
|||
|
|
log_info("<EFBFBD>յ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>");
|
|||
|
|
relayAction(data); // <20>̵<EFBFBD><CCB5><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if(strstr((char *)data,"iot.ota.upgrade.post")) {
|
|||
|
|
log_info("<EFBFBD>յ<EFBFBD>OTA<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>");
|
|||
|
|
if (checkId(data) == 0) // <20>ж<EFBFBD>id<69>Ƿ<EFBFBD><C7B7>ظ<EFBFBD>
|
|||
|
|
{
|
|||
|
|
//otaUpData(); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
log_info("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>id<EFBFBD><EFBFBD><EFBFBD>汾<EFBFBD>ţ<EFBFBD><EFBFBD>ظ<EFBFBD><EFBFBD><EFBFBD>id<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>³<EFBFBD><EFBFBD><EFBFBD>");
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|