This commit is contained in:
2026-03-20 21:19:53 +08:00
parent 9d3b4b836f
commit 6a749331db
125 changed files with 29972 additions and 23051 deletions

View File

@@ -4,6 +4,14 @@ DMA_HandleTypeDef DMA_Handle_UartRx , DMA_Handle_UartTx ;
/*********************************************************************************************************************************************/
/*<2A><>ʼ<EFBFBD><CABC>*/
/*********************************************************************************************************************************************/
/**------------------------------------------------------------------------
* @brief <20><>ʼ<EFBFBD><CABC> UART0<54><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD>ͨ<EFBFBD>Ų<EFBFBD><C5B2><EFBFBD>
* @param baudrate_bps: <20><><EFBFBD><EFBFBD><EFBFBD>ʣ<EFBFBD><CAA3><EFBFBD>λ bps<70><73><EFBFBD><EFBFBD> 115200
* @note ʹ<><CAB9> P0.1 <20><>Ϊ RX<52><58><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SIN0<4E><30><EFBFBD><EFBFBD>P0.2 <20><>Ϊ TX<54><58><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SOUT0<54><30><EFBFBD><EFBFBD>
* <20><><EFBFBD>ݸ<EFBFBD>ʽ<EFBFBD><CABD><38><CEBB><EFBFBD>ݡ<EFBFBD>1λֹͣλ<D6B9><CEBB><EFBFBD><EFBFBD>У<EFBFBD>
* @example UART0_Init(115200);
**/
void UART0_Init(uint32_t baudrate_bps)
{
GPIO_InitTypeDef GPIO_InitStructure;
@@ -44,6 +52,14 @@ void UART0_Init(uint32_t baudrate_bps)
// NVIC_SetPriority(UART0_IRQn,1);
// NVIC_EnableIRQ(UART0_IRQn);
}
/**------------------------------------------------------------------------
* @brief <20><>ʼ<EFBFBD><CABC> UART1<54><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD>ͨ<EFBFBD>Ų<EFBFBD><C5B2><EFBFBD>
* @param baudrate_bps: <20><><EFBFBD><EFBFBD><EFBFBD>ʣ<EFBFBD><CAA3><EFBFBD>λ bps<70><73><EFBFBD><EFBFBD> 115200
* @note ʹ<><CAB9> P1.0 <20><>Ϊ RX<52><58><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SIN1<4E><31><EFBFBD><EFBFBD>P1.1 <20><>Ϊ TX<54><58><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SOUT1<54><31><EFBFBD><EFBFBD>
* <20><><EFBFBD>ݸ<EFBFBD>ʽ<EFBFBD><CABD><38><CEBB><EFBFBD>ݡ<EFBFBD>1λֹͣλ<D6B9><CEBB><EFBFBD><EFBFBD>У<EFBFBD>
* @example UART1_Init(115200);
**/
void UART1_Init(uint32_t baudrate_bps)
{
GPIO_InitTypeDef GPIO_InitStructure;
@@ -89,11 +105,12 @@ void UART1_Init(uint32_t baudrate_bps)
/*********************************************************************************************************************************************/
/*<2A>жϷ<D0B6>ʽ*/
/*********************************************************************************************************************************************/
/**
* @brief UART0<54>жϷ<D0B6><CFB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Interrupt Service Routine, ISR<53><52>
* @note <20>˺<EFBFBD><CBBA><EFBFBD><EFBFBD><EFBFBD>UART0<EFBFBD>жϴ<EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD>
* @warning <20>жϴ<D0B6><CFB4><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̣<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ⳤʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
*/
/**------------------------------------------------------------------------
* @brief UART0 <EFBFBD>жϷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @note <20><>ǰ<EFBFBD><EFBFBD>Ԥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܣ<EFBFBD>δʵ<EFBFBD>־<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߼<EFBFBD><EFBFBD><EFBFBD>
* <20>ɸ<EFBFBD><C9B8><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>ڴ˴<DAB4><CBB4><EFBFBD><EFBFBD>ӽ<EFBFBD><D3BD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD>жϴ<D0B6><CFB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
**/
void UART0_IRQHandler(void)
{
/* <20>շ<EFBFBD><D5B7><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>дRBR_THR_DLL<4C>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>
@@ -123,11 +140,11 @@ void UART0_IRQHandler(void)
}
/**
* @brief UART1<54>жϷ<D0B6><CFB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Interrupt Service Routine, ISR<53><52>
* @note <20>˺<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>UART1<EFBFBD>жϴ<EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD>
* @warning <20>жϴ<EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̣<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ⳤʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
*/
/**------------------------------------------------------------------------
* @brief UART1 <EFBFBD>жϷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @note <20><EFBFBD>ǰ<EFBFBD><EFBFBD>Ԥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܣ<EFBFBD>δʵ<EFBFBD>־<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߼<EFBFBD><EFBFBD><EFBFBD>
* <20>ɸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>ڴ˴<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӽ<EFBFBD><EFBFBD><EFBFBD>/<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
**/
void UART1_IRQHandler(void)
{
if (LHL_UART_GetPending(pUART1, UART_IT_RXNE) == SET) // <20>жϽ<D0B6><CFBD><EFBFBD><EFBFBD>ж<EFBFBD>
@@ -142,21 +159,35 @@ void UART1_IRQHandler(void)
/*********************************************************************************************************************************************/
/*DMA <20><>ʽ*/
/*********************************************************************************************************************************************/
/*
<09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>жϻص<CFBB><D8B5><EFBFBD><EFBFBD><EFBFBD>
<09><>DMA_UART_AnyLength_Rx_Init <20><><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>
*/
/**------------------------------------------------------------------------
* @brief <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>жϻص<CFBB><D8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DMA_UART_AnyLength_Rx_Init <20><><EFBFBD><EFBFBD>ʹ<EFBFBD>ã<EFBFBD>
* @note <20><> DMA <20><><EFBFBD>ճ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD><D6A1>ʱ<EFBFBD><CAB1><EFBFBD>ã<EFBFBD><C3A3><EFBFBD><EFBFBD>ý<EFBFBD><C3BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɱ<EFBFBD>־<EFBFBD><D6BE>
* ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD> DMA ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ر<EFBFBD>־<EFBFBD><D6BE>
**/
void Btimer_irq_callback(void)
{
comState.state.ReceivedData = 1 ;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɱ<EFBFBD>־λ
comState.state.ReceivedData = 1 ; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɱ<EFBFBD>־λ
StopBtimer0(); //FY
LHL_DMA_Stop(&DMA_Handle_UartRx); //FY <20>ر<EFBFBD>DMA<4D><41><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
LHL_DMA_Stop(&DMA_Handle_UartTx); //FY <20>ر<EFBFBD>DMA<4D><41><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//LHL_DMA_ClearPending(&DMA_Handle_UartRx);
//LHL_DMA_ClearPending(&DMA_Handle_UartTx);
}
//<2F><><EFBFBD><EFBFBD>--------------------------------------------------------------------
/*
UART DMA<4D><41><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ճ<EFBFBD>ʼ<EFBFBD><CABC>
DMA_CHANNEL ʹ<><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>DMA<4D>շ<EFBFBD>ʹ<EFBFBD>ã<EFBFBD>RX TX<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Btime0ʹ<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿڶ<D3BF>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>DMAͨ<41><CDA8><EFBFBD><EFBFBD>ʹ<EFBFBD>ú<EFBFBD> DMA_USE_UART_CHOOSE <20>л<EFBFBD>UART0<54><30><EFBFBD><EFBFBD>UART1<54><31>ʹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>DMAͨ<EFBFBD><EFBFBD>
*/
/**------------------------------------------------------------------------
* @brief UART DMA <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ճ<EFBFBD>ʼ<EFBFBD><EFBFBD>
* @param baudrate_bps: <20><><EFBFBD><EFBFBD><EFBFBD>ʣ<EFBFBD><CAA3><EFBFBD><EFBFBD>ڼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD><EFBFBD>ʱʱ<EFBFBD><EFBFBD>
* @note ʹ<><CAB9> DMA ͨ<><CDA8> UART_Rx <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>ؿ<EFBFBD><D8BF><EFBFBD>֡<EFBFBD><D6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <20><>ʱʱ<CAB1><CAB1><EFBFBD>ɺ<EFBFBD> IDLE_FRAME_INTERVAL <20><>ϵͳʱ<CDB3>Ӽ<EFBFBD><D3BC>
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> TCD <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڿ<EFBFBD><DABF>ƻ<EFBFBD><C6BB><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/ֹͣ<CDA3><D6B9>
* <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD> DMA <20><><EFBFBD>ա<EFBFBD>
* @example DMA_UART_AnyLength_Rx_Init(115200);
**/
void DMA_UART_AnyLength_Rx_Init( uint32_t baudrate_bps)
{
DMA_HandleTypeDef DMA_Handle_BTime;
@@ -164,20 +195,21 @@ void DMA_UART_AnyLength_Rx_Init( uint32_t baudrate_bps)
static DMA_DES_N_TypeDef TCD_Quene[TCD_COUNT] __ALIGN(32);/* DMA TCD<43><44><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>32λ<32><CEBB><EFBFBD><EFBFBD>*/
static uint8_t BTimerCTRLValue[2]; /* <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>ò<EFBFBD><C3B2><EFBFBD> */
uint16_t IdleFrameValue;
/* 1 <20><><EFBFBD><EFBFBD>DMAUX <20><><EFBFBD><EFBFBD>ԴUART0 RX<52><58><EFBFBD><EFBFBD><EFBFBD><EFBFBD>MA0 */
DMA_DMAMUX_CFG(DMA_CHANNEL_UART_Rx,REQUEST_SOURCE_UART_RX);//<2F><>DMAMUX<55><58><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD>ڽ<EFBFBD><DABD><EFBFBD>ͨ<EFBFBD><CDA8>(DMAͨ<41><CDA8>0)
LHL_DMA_Stop(&DMA_Handle_UartRx);
DMA_Handle_UartRx.Channel = DMA_CHANNEL_UART_Rx; //<2F><><EFBFBD><EFBFBD>DMA0<41><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>DMAMUX UART_RX<52><58><EFBFBD><EFBFBD><EFBFBD>ڰ<EFBFBD><DAB0><EFBFBD>UART RX<52><58><EFBFBD><EFBFBD>
DMA_Handle_UartRx.Request = DMA_HARDWARE_REQUEST;
DMA_Handle_UartRx.Mode = DMA_CHAINING_MODE;
DMA_Handle_UartRx.Init.Direction = DMA_PERIPH_TO_MEMORY; // <20><><EFBFBD><EFBFBD>-><3E>ڴ<EFBFBD>
DMA_Handle_UartRx.Init.Src_Address = (uint32_t)(&DMA_UART->RBR_THR_DLL);
DMA_Handle_UartRx.Init.Dest_Address = (uint32_t)comState.RxdData; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD>
DMA_Handle_UartRx.Init.Data_Width = DMA_DATA_WIDTH_1B;
DMA_Handle_UartRx.Init.Data_Size = 1;
DMA_Handle_UartRx.Init.Repetition = RXD_MAX_DATA;
DMA_Handle_UartRx.Init.Trans_Mode = DMA_SINGLE_TRANSMISSION;
DMA_Handle_UartRx.Init.Chaining = (DMA_CHAINING_t)DMA_CHANNEL_BtimCfg ;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6>дTO_DMA_CHANNEL_x (x=01/2/3/NONE) <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><E3A3AC><EFBFBD><EFBFBD>ӦDMA_CHANNEL_BtimCfg <20>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DMA_Handle_UartRx.Channel = DMA_CHANNEL_UART_Rx; //<2F><><EFBFBD><EFBFBD>DMA0<41><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>DMAMUX UART_RX<52><58><EFBFBD><EFBFBD><EFBFBD>ڰ<EFBFBD><DAB0><EFBFBD>UART RX<52><58><EFBFBD><EFBFBD>
DMA_Handle_UartRx.Request = DMA_HARDWARE_REQUEST;
DMA_Handle_UartRx.Mode = DMA_CHAINING_MODE;
DMA_Handle_UartRx.Init.Direction = DMA_PERIPH_TO_MEMORY; // <20><><EFBFBD><EFBFBD>-><3E>ڴ<EFBFBD>
DMA_Handle_UartRx.Init.Src_Address = (uint32_t)(&DMA_UART->RBR_THR_DLL);
DMA_Handle_UartRx.Init.Dest_Address = (uint32_t)comState.RxdData; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD>
DMA_Handle_UartRx.Init.Data_Width = DMA_DATA_WIDTH_1B;
DMA_Handle_UartRx.Init.Data_Size = 1;
DMA_Handle_UartRx.Init.Repetition = RXD_MAX_DATA;
DMA_Handle_UartRx.Init.Trans_Mode = DMA_SINGLE_TRANSMISSION;
DMA_Handle_UartRx.Init.Chaining = (DMA_CHAINING_t)DMA_CHANNEL_BtimCfg ;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6>дTO_DMA_CHANNEL_x (x=01/2/3/NONE) <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><E3A3AC><EFBFBD><EFBFBD>ӦDMA_CHANNEL_BtimCfg <20>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (LHL_DMA_Init(&DMA_Handle_UartRx) != LHL_OK)
{
@@ -236,7 +268,12 @@ void DMA_UART_AnyLength_Rx_Init( uint32_t baudrate_bps)
}
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD>ʳ<EFBFBD><CAB3><EFBFBD>
/**------------------------------------------------------------------------
* @brief <20><>ȡ DMA <20><><EFBFBD>յ<EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
* @note <20><><EFBFBD>ݵ<EFBFBD>ǰ DMA Ŀ<>ĵ<EFBFBD>ַ<EFBFBD><EFBFBD><EBBBBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>ַ<EFBFBD>IJ<EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD>ѽ<EFBFBD><D1BD><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD>
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> comState.RxLenth <20>С<EFBFBD>
* @example Get_UART_Rx_ActualLength();
**/
void Get_UART_Rx_ActualLength(void)
{
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3>ȼ<EFBFBD><C8BC><EFBFBD>,<2C><>ȡ<EFBFBD><C8A1>ǰ֡<C7B0><D6A1><EFBFBD><EFBFBD>*/
@@ -244,6 +281,14 @@ void Get_UART_Rx_ActualLength(void)
}
//<2F><><EFBFBD><EFBFBD>--------------------------------------------------------------------
/**------------------------------------------------------------------------
* @brief UART DMA <20><><EFBFBD>ͳ<EFBFBD>ʼ<EFBFBD><CABC>
* @note ʹ<><CAB9> DMA ͨ<><CDA8> UART_Tx <20><> comState.TxdData <20>е<EFBFBD><D0B5><EFBFBD><EFBFBD>ݷ<EFBFBD><DDB7>ͳ<EFBFBD>ȥ<EFBFBD><C8A5>
* <20><><EFBFBD>ͳ<EFBFBD><CDB3><EFBFBD><EFBFBD><EFBFBD> comState.TxLenth <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<C4A3><CABD>
* ʹ<>ܷ<EFBFBD><DCB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϣ<D0B6><CFA3><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD> DMA<4D><41>
* @example DMA_UART_Tx_Init();
**/
void DMA_UART_Tx_Init(void)
{
DMA_DMAMUX_CFG(DMA_CHANNEL_UART_Tx,REQUEST_SOURCE_UART_TX);//<2F><>DMAMUX<55><58><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD>ڽ<EFBFBD><DABD><EFBFBD>ͨ<EFBFBD><CDA8>(DMAͨ<41><CDA8>0)