stm32_ota/ABM开发板(APP源码)/FreeRTOS版本/APPV4.0/SYSTEM/USART/usart.c

575 lines
27 KiB
C
Raw Permalink Normal View History

2024-12-17 20:03:43 +08:00
#include "usart.h"
#include "stm32f10x.h"
#include "sysport.h"
#include "io.h"
/********************************************************************************
* @file usart.c
* @author <EFBFBD>̳ϿƼ<EFBFBD> Mr.Wang
* @version V1.1.0
* @date 26-Dec-2018
* @brief <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>
* 1<EFBFBD><EFBFBD>GPIO<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>
* 2<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڷ<EFBFBD><EFBFBD>ͺ<EFBFBD><EFBFBD><EFBFBD>
* 3<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ô<EFBFBD><EFBFBD><EFBFBD>DMA<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>շ<EFBFBD>
* 4<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ô<EFBFBD><EFBFBD>ڽ<EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD>ж<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>DMAΪ<EFBFBD>ϲ<EFBFBD><EFBFBD>֡<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @ʹ<EFBFBD>÷<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* 1<EFBFBD><EFBFBD><EFBFBD>ȵ<EFBFBD><EFBFBD><EFBFBD>UARTx_Init()<EFBFBD><EFBFBD>UART<EFBFBD><EFBFBD><EFBFBD>г<EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>NVIC<EFBFBD><EFBFBD>EXTI<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>
* 2<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>ò<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Uart_RegHookCallback()<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>ж<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><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><EFBFBD>Ҫ<EFBFBD>ڻص<EFBFBD><EFBFBD>д<EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD><EFBFBD><EFBFBD>ݼ<EFBFBD><EFBFBD>ɡ<EFBFBD>
*******************************************************************************/
/****************************************************************************
* <EFBFBD><EFBFBD><EFBFBD>ⲿʹ<EFBFBD>õij<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
****************************************************************************/
/****************************************************************************
* <EFBFBD>ڲ<EFBFBD>ʹ<EFBFBD>õij<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
****************************************************************************/
char uart1_Dma_Rx_Buf[UART1_DMA_RX_MAXLEN] ; //UART1<54><31><EFBFBD><EFBFBD>DMA<4D><41><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
char uart2_Dma_Rx_Buf[UART2_DMA_RX_MAXLEN] ; //UART2<54><32><EFBFBD><EFBFBD>DMA<4D><41><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
char uart3_Dma_Rx_Buf[UART3_DMA_RX_MAXLEN] ; //UART3<54><33><EFBFBD><EFBFBD>DMA<4D><41><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
char uart4_Dma_Rx_Buf[UART4_DMA_RX_MAXLEN] ; //UART4<54><34><EFBFBD><EFBFBD>DMA<4D><41><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
char uart5_Rx_Buf[UART5_RX_MAXLEN] ; //UART5<54>жϽ<D0B6><CFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD>
volatile int uart5_Rx_Index = 0 ; //UART5<54>жϽ<D0B6><CFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ز<EFBFBD><D8B2><EFBFBD>*/
USART_TypeDef *UARTx_COM[COMSUM] = {USART1, USART2, USART3, UART4, UART5} ; //5<><35><EFBFBD><EFBFBD><EFBFBD>ڵļĴ<C4BC><C4B4><EFBFBD>ӳ<EFBFBD><D3B3><EFBFBD><EFBFBD>ַ
const u8 UARTx_IRQ[COMSUM] = {USART1_IRQn, USART2_IRQn, USART3_IRQn, UART4_IRQn, UART5_IRQn} ; //5<><35><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TX<54><58><EFBFBD>Ŷ<EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD>
PORT_e UARTx_TX_PORT[COMSUM] = {PA, PA, PB, PC, PC} ; //5<><35><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TX<54><58><EFBFBD>Ŷ<EFBFBD>ӦIO<49>˿<EFBFBD>
PIN_e UARTx_TX_PIN [COMSUM] = {PIN9, PIN2, PIN10, PIN10, PIN12} ; //5<><35><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TX<54><58><EFBFBD>Ŷ<EFBFBD>ӦIO<49><4F><EFBFBD><EFBFBD>
PORT_e UARTx_RX_PORT[COMSUM] = {PA, PA, PB, PC, PD} ; //5<><35><EFBFBD><EFBFBD><EFBFBD><EFBFBD>RX<52><58><EFBFBD>Ŷ<EFBFBD>ӦIO<49>˿<EFBFBD>
PIN_e UARTx_RX_PIN [COMSUM] = {PIN10, PIN3, PIN11, PIN11, PIN2} ; //5<><35><EFBFBD><EFBFBD><EFBFBD><EFBFBD>RX<52><58><EFBFBD>Ŷ<EFBFBD>ӦIO<49><4F><EFBFBD><EFBFBD>
const u32 UARTx_UART_RCC[COMSUM]= {RCC_APB2Periph_USART1, RCC_APB1Periph_USART2, RCC_APB1Periph_USART3,
RCC_APB1Periph_UART4, RCC_APB1Periph_UART5} ;
/*<2A><><EFBFBD><EFBFBD>DMA<4D><41><EFBFBD>ز<EFBFBD><D8B2><EFBFBD>*/
const u8 UARTxDma_Tx_CHx[COMSUM-1] = { DMA1_CH4, DMA1_CH7, DMA1_CH2, DMA2_CH5 } ; //UARTx DMA<4D><41><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD>UART5û<35><C3BB>DMA<4D><41><EFBFBD><EFBFBD>
const u8 UARTxDma_Rx_CHx[COMSUM-1] = { DMA1_CH5, DMA1_CH6, DMA1_CH3, DMA2_CH3 } ; //UARTx DMA<4D><41><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD>UART5û<35><C3BB>DMA<4D><41><EFBFBD><EFBFBD>
const u32 UARTxDMA_RX_BUFADDR[COMSUM-1] = {(u32)uart1_Dma_Rx_Buf, (u32)uart2_Dma_Rx_Buf, (u32)uart3_Dma_Rx_Buf, (u32)uart4_Dma_Rx_Buf} ; //<2F><><EFBFBD><EFBFBD>DMA<4D><41><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
const u16 UARTxDMA_RX_BUFLEN[COMSUM-1] = {UART1_DMA_RX_MAXLEN, UART2_DMA_RX_MAXLEN, UART3_DMA_RX_MAXLEN, UART4_DMA_RX_MAXLEN} ; //<2F><><EFBFBD><EFBFBD>DMA<4D><41><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽڳ<D6BD><DAB3><EFBFBD>
u32 UARTx_Dma_periAddr[COMSUM-1] = {(u32)&(USART1->DR), (u32)&USART2->DR, (u32)&USART3->DR, (u32)&UART4->DR } ; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݼĴ<DDBC><C4B4><EFBFBD><EFBFBD><EFBFBD>ַ
DMAFP uartTX_dmaTC_Callback[COMSUM-1]= {UART1_DMA_TX_TC_Callback_Functions, UART2_DMA_TX_TC_Callback_Functions,UART3_DMA_TX_TC_Callback_Functions,UART4_DMA_TX_TC_Callback_Functions} ; //DMA<4D><41><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϻص<CFBB><D8B5><EFBFBD><EFBFBD><EFBFBD>
DMAFP uartTX_dmaTE_Callback[COMSUM-1]= {NULL, NULL, NULL, NULL} ; //DMA<4D><41><EFBFBD>ڷ<EFBFBD><DAB7><EFBFBD>ʧ<EFBFBD><CAA7><EFBFBD>жϻص<CFBB><D8B5><EFBFBD><EFBFBD><EFBFBD>
DMAFP uartRX_dmaTC_Callback[COMSUM-1]= {NULL, NULL, NULL, NULL} ; //DMA<4D><41><EFBFBD>ڽ<EFBFBD><DABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϻص<CFBB><D8B5><EFBFBD><EFBFBD><EFBFBD>
DMAFP uartRX_dmaTE_Callback[COMSUM-1]= {NULL, NULL, NULL, NULL} ; //DMA<4D><41><EFBFBD>ڽ<EFBFBD><DABD><EFBFBD>ʧ<EFBFBD><CAA7><EFBFBD>жϻص<CFBB><D8B5><EFBFBD><EFBFBD><EFBFBD>
volatile bool UARTxDma_Tx_TcFlag[COM5] = {false, false, false, false} ; //<2F><><EFBFBD><EFBFBD>DMA<4D><41><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>
****************************************/
UARTFP uartFp[COMSUM] = {NULL} ; //<2F><><EFBFBD><EFBFBD>UART1~UART5<54><35><EFBFBD><EFBFBD>5<EFBFBD><35><EFBFBD><EFBFBD><EFBFBD>ڻص<DABB><D8B5><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
/**************************************************************************************************
* <EFBFBD><EFBFBD> <EFBFBD>ƣ<EFBFBD>UARTFP Uart_RegHookCallback(UARTFP pCallback, COM_e eCOMn)
* <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><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>DMA<EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>Ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param1 pCallback UARTFP<EFBFBD><EFBFBD><EFBFBD>ͺ<EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>
* @param2 eCOMn COM_eö<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param1 pCallback UARTFP<EFBFBD><EFBFBD><EFBFBD>ͺ<EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>
*************************************************************************************************/
UARTFP Uart_RegHookCallback(COM_e eCOMn, UARTFP pCallback)
{
if( uartFp[eCOMn] == NULL )
uartFp[eCOMn] = pCallback ;
else
SysErr("Uart Callback repeat reg!") ; //Uart Callback repeat reg!
return pCallback ;
}
/**************************************************************************************************
* <EFBFBD><EFBFBD> <EFBFBD>ƣ<EFBFBD>void Uart_Hook(COM_e eCOMn, char *recvBuf)
* <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>ִ<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><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD>Ȼ<EFBFBD><EFBFBD>ͬ<EFBFBD>Ĵ<EFBFBD><EFBFBD>ڻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD>Ļص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>uartFp[]<EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param1 eCOMn COM_eö<EFBFBD>ٱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>UART1~UART5 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param2 *recvBuf <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD>ж<EFBFBD><EFBFBD>н<EFBFBD><EFBFBD>յ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><EFBFBD>ŵ<EFBFBD>ַ
* @param3 recvLen <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD>ж<EFBFBD><EFBFBD>н<EFBFBD><EFBFBD>յ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><EFBFBD><EFBFBD>
*************************************************************************************************/
void Uart_Hook(COM_e eCOMn, char *recvBuf, uint16_t recvLen)
{
if( uartFp[eCOMn] != NULL)
{
uartFp[eCOMn](recvBuf, recvLen) ;
}
}
/*********<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>´<EFBFBD><C2B4><EFBFBD><><D6A7>printf<74><66><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫѡ<D2AA><D1A1>use MicroLIB**************/
#if 1
#pragma import(__use_no_semihosting)
struct __FILE //<2F><>׼<EFBFBD><D7BC><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>֧<EFBFBD>ֺ<EFBFBD><D6BA><EFBFBD>
{
int handle;
};
FILE __stdout;
void _sys_exit(int x) //<2F><><EFBFBD><EFBFBD>_sys_exit()<29>Ա<EFBFBD><D4B1><EFBFBD>ʹ<EFBFBD>ð<EFBFBD><C3B0><EFBFBD><EFBFBD><EFBFBD>ģʽ
{
x = x;
}
void _ttywrch(int ch)
{
ch=ch;
}
int fputc(int ch, FILE *f)//<2F>ض<EFBFBD><D8B6><EFBFBD>fputc<74><63><EFBFBD><EFBFBD>
{
UARTx_COM[UART_DEBUG]->DR = (u8) ch;
while(( UARTx_COM[UART_DEBUG]->SR & 0X40 ) == 0) ;//ѭ<><D1AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> TC
return ch;
}
#endif
/****************************************************************************/
void UARTx_Init(COM_e eCOMn, uint32_t baudrate, uint16_t uartMode, IntPriority_e ePriority)
{
GPIO_InitTypeDef GPIO_InitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
USART_InitTypeDef USART_InitStructure;
/*<2A>Դ<EFBFBD><D4B4><EFBFBD>IO<49><4F>ʼ<EFBFBD><CABC>*/
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO , ENABLE) ; //IO<49><4F><EFBFBD><EFBFBD>ʱ<EFBFBD>ӿ<EFBFBD><D3BF><EFBFBD>
Gpio_Init(UARTx_TX_PORT[eCOMn], UARTx_TX_PIN[eCOMn], GPIO_Mode_AF_PP) ;
Gpio_Init(UARTx_RX_PORT[eCOMn], UARTx_RX_PIN[eCOMn], GPIO_Mode_IN_FLOATING) ; //GPIO_Mode_IPU
/*<2A>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ز<EFBFBD><D8B2><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>*/
if( eCOMn == COM1 ) //COM1<4D><31>COM2<4D><32>3<EFBFBD><33>4<EFBFBD><34>5<EFBFBD><35><EFBFBD>ڵ<EFBFBD>APB<50><42>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>ֿ<EFBFBD><D6BF><EFBFBD><EFBFBD><EFBFBD>APBʱ<42><CAB1>
RCC_APB2PeriphClockCmd(UARTx_UART_RCC[eCOMn] , ENABLE) ;
else
RCC_APB1PeriphClockCmd(UARTx_UART_RCC[eCOMn] , ENABLE) ;
USART_InitStructure.USART_BaudRate = baudrate; //<2F><><EFBFBD><EFBFBD>baudratebps
USART_InitStructure.USART_WordLength = USART_WordLength_8b; //<2F><><EFBFBD><EFBFBD>λ8λ
USART_InitStructure.USART_StopBits = USART_StopBits_1; //ֹͣλ1λ
USART_InitStructure.USART_Parity = USART_Parity_No; //<2F><>У<EFBFBD><D0A3>λ
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; //<2F><>Ӳ<EFBFBD><D3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
USART_InitStructure.USART_Mode = uartMode ; //USART_Mode_Rx | USART_Mode_Tx; //<2F>շ<EFBFBD>ģʽ
USART_Init(UARTx_COM[eCOMn], &USART_InitStructure); //<2F><><EFBFBD>ô<EFBFBD><C3B4>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
USART_ClearFlag(UARTx_COM[eCOMn], USART_FLAG_CTS | USART_FLAG_LBD | USART_FLAG_TC | USART_FLAG_RXNE) ; //<2F><><EFBFBD><EFBFBD>־λ
if( ((USART_InitStructure.USART_Mode & USART_Mode_Tx) == USART_Mode_Tx)
&&(eCOMn != COM5)) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>UART1~UART4<54><34><EFBFBD>͹<EFBFBD><CDB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><C3A3><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD>ڷ<EFBFBD><DAB7><EFBFBD>DMA
{
//UARTx_DmaTx_Init(eCOMn) ; //<2F><><EFBFBD>ڷ<EFBFBD><DAB7><EFBFBD>DMA<4D><41>ʼ<EFBFBD><CABC>
USART_DMACmd(UARTx_COM[eCOMn], USART_DMAReq_Tx, ENABLE); //ʹ<>ܴ<EFBFBD><DCB4>ڵ<EFBFBD>DMA<4D><41><EFBFBD><EFBFBD>
DMA_Config((DMACH_e)UARTxDma_Tx_CHx[eCOMn], UARTx_Dma_periAddr[eCOMn], 0, DMA_DIR_MTP, NORMAL, INT_RANK_0) ; //TX<54><58><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪOS<4F><53><EFBFBD><EFBFBD><EFBFBD>εĻ<CEB5><C4BB><EFBFBD><EFBFBD><EFBFBD>ϵͳOS<4F><53><EFBFBD><EFBFBD>ǰ<EFBFBD>޷<EFBFBD>ʹ<EFBFBD>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Dma_RegHookCallback(UARTxDma_Tx_CHx[eCOMn], DMATC, uartTX_dmaTC_Callback[eCOMn]) ; //ע<><D7A2>DMA<4D><41><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɻص<C9BB><D8B5><EFBFBD><EFBFBD><EFBFBD>
Dma_RegHookCallback(UARTxDma_Tx_CHx[eCOMn], DMATE, uartTX_dmaTE_Callback[eCOMn]) ; //ע<><D7A2>DMA<4D><41><EFBFBD><EFBFBD>ʧ<EFBFBD>ܻص<DCBB><D8B5><EFBFBD><EFBFBD><EFBFBD>
}
if((USART_InitStructure.USART_Mode & USART_Mode_Rx) == USART_Mode_Rx) //<2F><><EFBFBD><EFBFBD><EFBFBD>ڽ<EFBFBD><DABD>չ<EFBFBD><D5B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><C3A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϺͽ<CFBA><CDBD>տ<EFBFBD><D5BF><EFBFBD><EFBFBD>ж<EFBFBD>
{
/*<2A>Դ<EFBFBD><D4B4><EFBFBD>NVIC<49><43>ʼ<EFBFBD><CABC>*/
NVIC_InitStructure.NVIC_IRQChannel = UARTx_IRQ[eCOMn]; //<2F><><EFBFBD>ô<EFBFBD><C3B4><EFBFBD><EFBFBD>ж<EFBFBD>
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = ePriority; //<2F><>ռ<EFBFBD><D5BC><EFBFBD>ȼ<EFBFBD>
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0 ; //<2F><><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD>Ϊ0
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //ʹ<><CAB9>
NVIC_Init(&NVIC_InitStructure);
USART_ITConfig(UARTx_COM[eCOMn], USART_IT_IDLE, ENABLE); //ʹ<>ܴ<EFBFBD><DCB4>ڽ<EFBFBD><DABD>տ<EFBFBD><D5BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> //USART_ITConfig(UARTx_COM[eCOMn], USART_IT_RXNE, ENABLE); //ʹ<>ܴ<EFBFBD><DCB4>ڽ<EFBFBD><DABD><EFBFBD><EFBFBD>ж<EFBFBD>
if( eCOMn != COM5 ) //UART1~UART4<54><34><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>DMA<4D><41><EFBFBD><EFBFBD>
{
//UARTx_DmaRx_Init(eCOMn ) ; //<2F><><EFBFBD>ڽ<EFBFBD><DABD><EFBFBD>DMA<4D><41>ʼ<EFBFBD><CABC>
USART_DMACmd(UARTx_COM[eCOMn], USART_DMAReq_Rx, ENABLE); //ʹ<>ܴ<EFBFBD><DCB4>ڵ<EFBFBD>DMA<4D><41><EFBFBD><EFBFBD>
DMA_Config((DMACH_e)UARTxDma_Rx_CHx[eCOMn], UARTx_Dma_periAddr[eCOMn], UARTxDMA_RX_BUFADDR[eCOMn], DMA_DIR_PTM, NORMAL, ePriority) ;
DMA_SetCurrDataCounter(dmaChx[UARTxDma_Rx_CHx[eCOMn]], UARTxDMA_RX_BUFLEN[eCOMn]); //DMAͨ<41><CDA8><EFBFBD><EFBFBD>DMA<4D><41><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD>С
Dma_RegHookCallback(UARTxDma_Rx_CHx[eCOMn], DMATC, uartRX_dmaTC_Callback[eCOMn]) ; //ע<><D7A2>DMA<4D><41><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɻص<C9BB><D8B5><EFBFBD><EFBFBD><EFBFBD>
Dma_RegHookCallback(UARTxDma_Rx_CHx[eCOMn], DMATE, uartRX_dmaTE_Callback[eCOMn]) ; //ע<><D7A2>DMA<4D><41><EFBFBD><EFBFBD>ʧ<EFBFBD>ܻص<DCBB><D8B5><EFBFBD><EFBFBD><EFBFBD>
DMA_Cmd(dmaChx[UARTxDma_Rx_CHx[eCOMn]], ENABLE); //ʹ<><CAB9>dmaChx[UARTxDma_Tx_CHx[eCOMn]]<5D><>ָʾ<D6B8><CABE>ͨ<EFBFBD><CDA8>
}
else if( eCOMn == COM5) //UART5<54><35><EFBFBD><EFBFBD><EFBFBD><EFBFBD>DMAͨ<41><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Կ<EFBFBD><D4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڽ<EFBFBD><DABD><EFBFBD><EFBFBD>жϡ<D0B6><CFA1><EFBFBD><EFBFBD>ڽ<EFBFBD><DABD>տ<EFBFBD><D5BF><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
USART_ITConfig(UARTx_COM[eCOMn], USART_IT_RXNE, ENABLE);
}
}
USART_Cmd(UARTx_COM[eCOMn], ENABLE); //Enable the USART1
}
/****************************************************************************
* <EFBFBD><EFBFBD> <EFBFBD>ƣ<EFBFBD>void UARTx_DmaTx_Init(COM_e eCOMn)
* <EFBFBD><EFBFBD> <EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>DMA<EFBFBD><EFBFBD><EFBFBD>ͳ<EFBFBD>ʼ<EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param1 COMn <EFBFBD>˿<EFBFBD>
* @arg COM_eö<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* ˵ <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD>Ͽ<EFBFBD><EFBFBD><EFBFBD>TC<EFBFBD>жϣ<EFBFBD><EFBFBD>жϻص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD>stm32f10x_it.h<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><EFBFBD>
* ע <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD>stm32f10x_it.h<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
****************************************************************************/
void UARTx_DmaTx_Init(COM_e eCOMn)
{
USART_DMACmd(UARTx_COM[eCOMn], USART_DMAReq_Tx, ENABLE); //ʹ<>ܴ<EFBFBD><DCB4>ڵ<EFBFBD>DMA<4D><41><EFBFBD><EFBFBD>
DMA_Config((DMACH_e)UARTxDma_Tx_CHx[eCOMn], UARTx_Dma_periAddr[eCOMn], 0, DMA_DIR_MTP, NORMAL, INT_RANK_6) ;
}
/****************************************************************************
* <EFBFBD><EFBFBD> <EFBFBD>ƣ<EFBFBD>void UARTx_DmaRx_Init(COM_e eCOMn )
* <EFBFBD><EFBFBD> <EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>DMA<EFBFBD><EFBFBD><EFBFBD>ճ<EFBFBD>ʼ<EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param1 COMn <EFBFBD>˿<EFBFBD>
* @arg COM_eö<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* ˵ <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD>Ͽ<EFBFBD><EFBFBD><EFBFBD>TC<EFBFBD>жϣ<EFBFBD><EFBFBD>жϻص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD>stm32f10x_it.h<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><EFBFBD>
* ע <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD>stm32f10x_it.h<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
****************************************************************************/
void UARTx_DmaRx_Init(COM_e eCOMn )
{
USART_DMACmd(UARTx_COM[eCOMn], USART_DMAReq_Rx, ENABLE); //ʹ<>ܴ<EFBFBD><DCB4>ڵ<EFBFBD>DMA<4D><41><EFBFBD><EFBFBD>
DMA_Config((DMACH_e)UARTxDma_Rx_CHx[eCOMn], UARTx_Dma_periAddr[eCOMn], UARTxDMA_RX_BUFADDR[eCOMn], DMA_DIR_PTM, NORMAL, INT_RANK_6) ;
DMA_SetCurrDataCounter(dmaChx[UARTxDma_Rx_CHx[eCOMn]], UARTxDMA_RX_BUFLEN[eCOMn]); //DMAͨ<41><CDA8><EFBFBD><EFBFBD>DMA<4D><41><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD>С
DMA_Cmd(dmaChx[UARTxDma_Rx_CHx[eCOMn]], ENABLE); //ʹ<><CAB9>dmaChx[UARTxDma_Tx_CHx[eCOMn]]<5D><>ָʾ<D6B8><CABE>ͨ<EFBFBD><CDA8>
}
/****************************************************************************
* <EFBFBD><EFBFBD> <EFBFBD>ƣ<EFBFBD>void UARTx_DmaRx_Restart(COM_e eCOMn)
* <EFBFBD><EFBFBD> <EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>DMA<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param1 COMn <EFBFBD>˿<EFBFBD>
* @arg COM_eö<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>
****************************************************************************/
void UARTx_DmaRx_Restart(COM_e eCOMn)
{
DMA_Cmd(dmaChx[UARTxDma_Rx_CHx[eCOMn]], DISABLE); //ʧ<><CAA7>dmaChx[UARTxDma_Tx_CHx[eCOMn]]<5D><>ָʾ<D6B8><CABE>ͨ<EFBFBD><CDA8>
// DMA_Config((DMACH_e)UARTxDma_Rx_CHx[eCOMn], UARTx_Dma_periAddr[eCOMn], UARTxDMA_RX_BUFADDR[eCOMn], DMA_DIR_PTM, NORMAL) ;
memset((char*)UARTxDMA_RX_BUFADDR[eCOMn], 0, UARTxDMA_RX_BUFLEN[eCOMn]) ;
DMA_SetCurrDataCounter(dmaChx[UARTxDma_Rx_CHx[eCOMn]], UARTxDMA_RX_BUFLEN[eCOMn]); //DMAͨ<41><CDA8><EFBFBD><EFBFBD>DMA<4D><41><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD>С
DMA_Cmd(dmaChx[UARTxDma_Rx_CHx[eCOMn]], ENABLE); //ʹ<><CAB9>dmaChx[UARTxDma_Tx_CHx[eCOMn]]<5D><>ָʾ<D6B8><CABE>ͨ<EFBFBD><CDA8>
}
/****************************************************************************
* <EFBFBD><EFBFBD> <EFBFBD>ƣ<EFBFBD>void UARTx_SendData(COM_e eCOMn, const char *sendData, uint16_t dataLen)
* <EFBFBD><EFBFBD> <EFBFBD>ܣ<EFBFBD>ͨ<EFBFBD><EFBFBD>eCOMn<EFBFBD>˿<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>dataLen<EFBFBD><EFBFBD><EFBFBD>ȵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param COMn <EFBFBD>˿<EFBFBD>
* @arg COM_eö<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param *sendData <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>
* @param dataLen <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵij<EFBFBD><EFBFBD><EFBFBD>
* ע <EFBFBD>ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>UARTx_DMATX_EN<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ô<EFBFBD><EFBFBD><EFBFBD>DMA<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD>͵ȴ<EFBFBD>DMA TC<EFBFBD>ж<EFBFBD><EFBFBD>жϴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> UARTx_DMA_Tx(UART_DEBUG, (u32)log, LOG_BUF_LEN ) ;
****************************************************************************/
void UARTx_SendData(COM_e eCOMn, const char *sendData, uint16_t dataLen)
{
if( (sendData == NULL) || (dataLen <= 0) )
{
// SysErr("") ;
return ;
}
if(UARTx_DMATX_EN && (eCOMn != COM5)) //ʹ<>ܴ<EFBFBD><DCB4><EFBFBD>DMA<4D><41><EFBFBD><EFBFBD>,UART5<54><35>֧<EFBFBD>ִ<EFBFBD><D6B4><EFBFBD>DMA<4D><41><EFBFBD><EFBFBD>
{
DMA_Cmd(dmaChx[UARTxDma_Tx_CHx[eCOMn]], DISABLE ); //<2F>ر<EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD> CMARֵ<52><D6B5><EFBFBD><EFBFBD>д
UARTxDma_Tx_TcFlag[eCOMn] = false ; //<2F><><EFBFBD><EFBFBD>eCOMn<4D><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɱ<EFBFBD>־λ<D6BE><CEBB><EFBFBD><EFBFBD>
dmaChx[UARTxDma_Tx_CHx[eCOMn]]->CMAR = (uint32_t)sendData ; //DMA <20>ڴ<EFBFBD><DAB4><EFBFBD>ַ
DMA_SetCurrDataCounter(dmaChx[UARTxDma_Tx_CHx[eCOMn]],dataLen); //DMAͨ<41><CDA8><EFBFBD><EFBFBD>DMA<4D><41><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD>С
//DMA_InitStructure.DMA_MemoryBaseAddr = uartTxBufferAdder; //DMA<4D>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD>ַ
//DMA_InitStructure.DMA_BufferSize = uartTxDataLen; //DMAͨ<41><CDA8><EFBFBD><EFBFBD>DMA<4D><41><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD>С
//DMA_Init(DMA_CHx, &DMA_InitStructure);
DMA_Cmd(dmaChx[UARTxDma_Tx_CHx[eCOMn]], ENABLE); //ʹ<><CAB9>dmaChx[UARTxDma_Tx_CHx[eCOMn]]<5D><>ָʾ<D6B8><CABE>ͨ<EFBFBD><CDA8>
while( UARTxDma_Tx_TcFlag[eCOMn] == false ) ; //<2F>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD>eCOMn DMA<4D><41><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɱ<EFBFBD>־λ
}
else //<2F><><EFBFBD>ò<EFBFBD>ѯ<EFBFBD><D1AF><EFBFBD>ڷ<EFBFBD><DAB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɱ<EFBFBD>־<EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CDB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
uint16_t index = 0 ;
const char *pos = sendData ;
USART_GetFlagStatus(UARTx_COM[eCOMn], USART_FLAG_TC); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܵ<EFBFBD><DCB5><EFBFBD><EFBFBD><EFBFBD>
for(index = 0; index < dataLen; index++)
{
USART_SendData(UARTx_COM[eCOMn], *(pos+index)) ;
while(USART_GetFlagStatus(UARTx_COM[eCOMn], USART_FLAG_TC)==RESET) ;
}
}
}
/****************************************************************************
*<EFBFBD><EFBFBD><EFBFBD>ֽڷ<EFBFBD><EFBFBD>Ͳ<EFBFBD>֧<EFBFBD>ִ<EFBFBD><EFBFBD><EFBFBD>MDA<EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫʹ<EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD> <EFBFBD>ƣ<EFBFBD>void UARTx_Printf(COM_e eCOMn, uint8_t *Data,...)
* <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><EFBFBD><EFBFBD>USARTx: ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Data<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><EFBFBD><EFBFBD>
* ˵ <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* "\r" <EFBFBD>س<EFBFBD><EFBFBD><EFBFBD> UARTx_Printf(USART1, "abcdefg\r")
* "\n" <EFBFBD><EFBFBD><EFBFBD>з<EFBFBD> UARTx_Printf(USART1, "abcdefg\r\n")
* "%s" <EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD> UARTx_Printf(USART1, "<EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǣ<EFBFBD>%s","abcdefg")
* "%d" ʮ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> UARTx_Printf(USART1, "a=%d",10)
****************************************************************************/
void UARTx_SendString(COM_e eCOMn, uint8_t *Data,...)
{
const char *s;
int d;
char buf[16];
va_list ap;
va_start(ap, Data);
while(*Data!=0)
{ //<2F>ж<EFBFBD><D0B6>Ƿ񵽴<C7B7><F1B5BDB4>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if(*Data == 0x5c)
{ //'\'
switch (*++Data)
{
case 'r': //<2F>س<EFBFBD><D8B3><EFBFBD>
USART_SendData(UARTx_COM[eCOMn], 0x0D);
Data++;
break;
case 'n': //<2F><><EFBFBD>з<EFBFBD>
USART_SendData(UARTx_COM[eCOMn], 0x0A);
Data++;
break;
default:
Data++;
break;
}
}
else if(*Data=='%')
{ //
switch (*++Data)
{
case 's': //<2F>ַ<EFBFBD><D6B7><EFBFBD>
s = va_arg(ap, const char *);
for ( ; *s; s++)
{
USART_SendData(UARTx_COM[eCOMn],*s);
while(USART_GetFlagStatus(UARTx_COM[eCOMn], USART_FLAG_TC)==RESET);
}
Data++;
break;
case 'd': //ʮ<><CAAE><EFBFBD><EFBFBD>
d = va_arg(ap, int);
itoa(d, buf, 10);
for (s = buf; *s; s++)
{
USART_SendData(UARTx_COM[eCOMn],*s);
while(USART_GetFlagStatus(UARTx_COM[eCOMn], USART_FLAG_TC)==RESET);
}
Data++;
break;
default:
Data++;
break;
}
}
else
USART_SendData(UARTx_COM[eCOMn], *Data++);
while(USART_GetFlagStatus(UARTx_COM[eCOMn], USART_FLAG_TC)==RESET) ;
}
}
/****************************************************************************
* <EFBFBD><EFBFBD> <EFBFBD>ƣ<EFBFBD>void USART1_IRQHandler(void)
* <EFBFBD><EFBFBD> <EFBFBD>ܣ<EFBFBD>USART1<EFBFBD>жϷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
****************************************************************************/
void USART1_IRQHandler(void)
{
/* <20><><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD>տ<EFBFBD><D5BF><EFBFBD><EFBFBD>ж<EFBFBD> */
if( USART_GetITStatus(USART1, USART_IT_IDLE) != RESET )
{
DMA_Cmd(dmaChx[UARTxDma_Rx_CHx[COM1]], DISABLE); //ʧ<><CAA7>dmaChx[UARTxDma_Tx_CHx[eCOMn]]<5D><>ָʾ<D6B8><CABE>ͨ<EFBFBD><CDA8>
uint8_t clearFlag = USART1->SR ; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϱ<D0B6>־USART_ClearITPendingBit(USART1, USART_IT_IDLE) ;
clearFlag = USART1->DR ;
uint16_t len = UARTxDMA_RX_BUFLEN[COM1] - DMA_GetCurrDataCounter(dmaChx[UARTxDma_Rx_CHx[COM1]]) ;
//SysLog("COM1 RxLen:%d; RxBuf:%s,", len, uart1_Dma_Rx_Buf);
Uart_Hook(COM1, uart1_Dma_Rx_Buf, len) ; //<2F><>ת<EFBFBD><D7AA><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>
UARTx_DmaRx_Restart(COM1) ;
}
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) //<2F>ж϶<D0B6><CFB6>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7>ǿ<EFBFBD>
{
USART_ClearITPendingBit(USART1, USART_IT_RXNE) ;
}
if(USART_GetITStatus(USART1, USART_IT_TXE) != RESET) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>˱<EFBFBD><CBB1><EFBFBD>STM32 USART <20><>һ<EFBFBD><D2BB><EFBFBD>ֽڷ<D6BD><DAB7><EFBFBD><EFBFBD><EFBFBD>ȥ<EFBFBD><C8A5>BUG
{
USART_ITConfig(USART1, USART_IT_TXE, DISABLE); //<2F><>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϣ<D0B6>
}
}
/****************************************************************************
* <EFBFBD><EFBFBD> <EFBFBD>ƣ<EFBFBD>void USART2_IRQHandler(void)
* <EFBFBD><EFBFBD> <EFBFBD>ܣ<EFBFBD>USART2<EFBFBD>жϷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
****************************************************************************/
void USART2_IRQHandler(void)
{
if( USART_GetITStatus(USART2, USART_IT_IDLE) != RESET )
{
DMA_Cmd(dmaChx[UARTxDma_Rx_CHx[COM2]], DISABLE); //ʧ<><CAA7>dmaChx[UARTxDma_Tx_CHx[eCOMn]]<5D><>ָʾ<D6B8><CABE>ͨ<EFBFBD><CDA8>
uint8_t clearFlag = USART2->SR ; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϱ<D0B6>־λ <20>޷<EFBFBD>ͨ<EFBFBD><CDA8>USART_ClearITPendingBit(UART4, USART_IT_IDLE)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־λ
clearFlag = USART2->DR ;
uint16_t len = UARTxDMA_RX_BUFLEN[COM2] - DMA_GetCurrDataCounter(dmaChx[UARTxDma_Rx_CHx[COM2]]) ;
//SysLog("COM2 RxLen:%d; RxBuf:%s", len, uart2_Dma_Rx_Buf);
Uart_Hook(COM2, uart2_Dma_Rx_Buf, len) ; //<2F><>ת<EFBFBD><D7AA><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>
UARTx_DmaRx_Restart(COM2) ;
}
if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET) //<2F>ж϶<D0B6><CFB6>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7>ǿ<EFBFBD>
{
USART_ClearITPendingBit(USART2, USART_IT_RXNE) ; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϱ<D0B6>־λ
}
if(USART_GetITStatus(USART2, USART_IT_TXE) != RESET) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>˱<EFBFBD><CBB1><EFBFBD>STM32 USART <20><>һ<EFBFBD><D2BB><EFBFBD>ֽڷ<D6BD><DAB7><EFBFBD><EFBFBD><EFBFBD>ȥ<EFBFBD><C8A5>BUG
{
USART_ITConfig(USART2, USART_IT_TXE, DISABLE); //<2F><>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϣ<D0B6>
}
}
/****************************************************************************
* <EFBFBD><EFBFBD> <EFBFBD>ƣ<EFBFBD>void USART3_IRQHandler(void)
* <EFBFBD><EFBFBD> <EFBFBD>ܣ<EFBFBD>USART3<EFBFBD>жϷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
****************************************************************************/
void USART3_IRQHandler(void)
{
if( USART_GetITStatus(USART3, USART_IT_IDLE) != RESET ) /* <20><><EFBFBD><EFBFBD>3<EFBFBD><33><EFBFBD>տ<EFBFBD><D5BF><EFBFBD><EFBFBD>ж<EFBFBD> */
{
DMA_Cmd(dmaChx[UARTxDma_Rx_CHx[COM3]], DISABLE); //ʧ<><CAA7>dmaChx[UARTxDma_Tx_CHx[eCOMn]]<5D><>ָʾ<D6B8><CABE>ͨ<EFBFBD><CDA8>
uint8_t clearFlag = USART3->SR ; //<2F><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD>жϱ<D0B6>־<EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E3A1A2><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><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
clearFlag = USART3->DR ;
uint16_t len =UARTxDMA_RX_BUFLEN[COM3] - DMA_GetCurrDataCounter(dmaChx[UARTxDma_Rx_CHx[COM3]]) ; //DMAy_Channelx->CNDTR
/*****<2A><><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>Σ<EFBFBD><CEA3><EFBFBD><EFBFBD>ж<EFBFBD><D0B6>к<EFBFBD>ʱ̫<CAB1><CCAB><EFBFBD><EFBFBD>Ӱ<EFBFBD><D3B0>֡<EFBFBD><D6A1><EFBFBD>գ<EFBFBD><D5A3><EFBFBD><EFBFBD>ʧ֡<CAA7><D6A1><EFBFBD><EFBFBD>******/
//SysLog("COM3 RxLen:%d; RxBuf:%s", len, uart3_Dma_Rx_Buf);
Uart_Hook(COM3, uart3_Dma_Rx_Buf, len) ; //<2F><>ת<EFBFBD><D7AA><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>
UARTx_DmaRx_Restart(COM3) ;
}
if(USART_GetITStatus(USART3, USART_IT_RXNE) != RESET) /* <20><><EFBFBD><EFBFBD>3<EFBFBD><33><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD> */
{
USART_ClearITPendingBit(USART3, USART_IT_RXNE) ; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϱ<D0B6>־λ
}
if(USART_GetITStatus(USART3, USART_IT_TXE) != RESET) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>˱<EFBFBD><CBB1><EFBFBD>STM32 USART <20><>һ<EFBFBD><D2BB><EFBFBD>ֽڷ<D6BD><DAB7><EFBFBD><EFBFBD><EFBFBD>ȥ<EFBFBD><C8A5>BUG
{
USART_ITConfig(USART3, USART_IT_TXE, DISABLE); //<2F><>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϣ<D0B6>
}
}
/****************************************************************************
* <EFBFBD><EFBFBD> <EFBFBD>ƣ<EFBFBD>void UART4_IRQHandler(void)
* <EFBFBD><EFBFBD> <EFBFBD>ܣ<EFBFBD>UART4<EFBFBD>жϷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
****************************************************************************/
void UART4_IRQHandler(void)
{
/* <20><><EFBFBD><EFBFBD>4<EFBFBD><34><EFBFBD>տ<EFBFBD><D5BF><EFBFBD><EFBFBD>ж<EFBFBD> */
if( USART_GetITStatus(UART4, USART_IT_IDLE) != RESET )
{
DMA_Cmd(dmaChx[UARTxDma_Rx_CHx[COM4]], DISABLE); //ʧ<><CAA7>dmaChx[UARTxDma_Tx_CHx[eCOMn]]<5D><>ָʾ<D6B8><CABE>ͨ<EFBFBD><CDA8>
uint8_t clearFlag = UART4->SR ; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϱ<D0B6>־λ <20>޷<EFBFBD>ͨ<EFBFBD><CDA8>USART_ClearITPendingBit(UART4, USART_IT_IDLE)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־λ
clearFlag = UART4->DR ;
uint16_t len = UARTxDMA_RX_BUFLEN[COM4] - DMA_GetCurrDataCounter(dmaChx[UARTxDma_Rx_CHx[COM4]]) ;
//SysLog("COM4 RxLen:%d; RxBuf:%s", len, uart4_Dma_Rx_Buf);
Uart_Hook(COM4, uart4_Dma_Rx_Buf, len) ; //<2F><>ת<EFBFBD><D7AA><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>
UARTx_DmaRx_Restart(COM4) ;
}
if(USART_GetITStatus(UART4, USART_IT_RXNE) != RESET) //<2F>ж϶<D0B6><CFB6>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7>ǿ<EFBFBD>
{
USART_ClearITPendingBit(UART4, USART_IT_RXNE) ; //<2F><><EFBFBD><EFBFBD><EFBFBD>жϱ<D0B6>־
}
if(USART_GetITStatus(UART4, USART_IT_TXE) != RESET) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>˱<EFBFBD><CBB1><EFBFBD>STM32 USART <20><>һ<EFBFBD><D2BB><EFBFBD>ֽڷ<D6BD><DAB7><EFBFBD><EFBFBD><EFBFBD>ȥ<EFBFBD><C8A5>BUG
{
USART_ITConfig(UART4, USART_IT_TXE, DISABLE); //<2F><>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϣ<D0B6>
}
USART_ClearFlag(UART4, USART_FLAG_TC ); //<2F><><EFBFBD><EFBFBD>TC<54>жϱ<D0B6>־
}
/****************************************************************************
* <EFBFBD><EFBFBD> <EFBFBD>ƣ<EFBFBD>void UART5_IRQHandler(void)
* <EFBFBD><EFBFBD> <EFBFBD>ܣ<EFBFBD>UART5<EFBFBD>жϷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
****************************************************************************/
void UART5_IRQHandler(void)
{
if(USART_GetITStatus(UART5, USART_IT_RXNE) != RESET) //<2F>ж϶<D0B6><CFB6>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7>ǿ<EFBFBD>
{
uart5_Rx_Buf[uart5_Rx_Index++] = UART5->DR ;
uart5_Rx_Buf[uart5_Rx_Index] = 0x00 ; //<2F><>֤uart5_Rx_Buf<75><66><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>Сβ<D0A1>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>Խ<EFBFBD><EFBFBD><E7B4A6>
if( uart5_Rx_Index >= (UART5_RX_MAXLEN-1) ) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>uart5_Rx_Buf[0]<5D><>ʼ<EFBFBD>ٽ<EFBFBD><D9BD><EFBFBD>
{
uart5_Rx_Index = 0 ;
}
}
if( USART_GetITStatus(UART5, USART_IT_IDLE) != RESET )
{
uint8_t clearFlag = UART5->SR ; //<2F><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD>жϱ<D0B6>־<EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E3A1A2><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><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
clearFlag = UART5->DR ;
//SysLog("COM5 RxLen:%d; RxBuf:%s", uart5_Rx_Index, uart5_Rx_Buf);
Uart_Hook(COM5, (char*)uart5_Rx_Buf, uart5_Rx_Index) ; //<2F><>ת<EFBFBD><D7AA><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
memset((char*)uart5_Rx_Buf, 0, UART5_RX_MAXLEN) ; //<2F><><EFBFBD><EFBFBD>uart5_Rx_Buf
uart5_Rx_Index = 0 ; //uart5_Rx_Buf ָ<><D6B8>uart5_Rx_Index<65><78><EFBFBD><EFBFBD>
USART_ClearITPendingBit(UART5, USART_IT_IDLE) ; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϱ<D0B6>־λ
}
if(USART_GetITStatus(UART5, USART_IT_TXE) != RESET) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>˱<EFBFBD><CBB1><EFBFBD>STM32 USART <20><>һ<EFBFBD><D2BB><EFBFBD>ֽڷ<D6BD><DAB7><EFBFBD><EFBFBD><EFBFBD>ȥ<EFBFBD><C8A5>BUG
{
USART_ITConfig(UART5, USART_IT_TXE, DISABLE); //<2F><>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϣ<D0B6>
}
}
/****************************************************************************
* <EFBFBD><EFBFBD> <EFBFBD>ƣ<EFBFBD>void UART1_DMA_TX_TC_Callback_Functions(void))
* <EFBFBD><EFBFBD> <EFBFBD>ܣ<EFBFBD>USART1 DMA<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϻص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
****************************************************************************/
void UART1_DMA_TX_TC_Callback_Functions(void)
{
UARTxDma_Tx_TcFlag[COM1] = true ;
}
/****************************************************************************
* <EFBFBD><EFBFBD> <EFBFBD>ƣ<EFBFBD>void UART2_DMA_TX_TC_Callback_Functions(void))
* <EFBFBD><EFBFBD> <EFBFBD>ܣ<EFBFBD>USART2 DMA<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϻص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
****************************************************************************/
void UART2_DMA_TX_TC_Callback_Functions(void)
{
UARTxDma_Tx_TcFlag[COM2] = true ;
}
/****************************************************************************
* <EFBFBD><EFBFBD> <EFBFBD>ƣ<EFBFBD>void UART3_DMA_TX_TC_Callback_Functions(void))
* <EFBFBD><EFBFBD> <EFBFBD>ܣ<EFBFBD>USART3 DMA<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϻص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
****************************************************************************/
void UART3_DMA_TX_TC_Callback_Functions(void)
{
UARTxDma_Tx_TcFlag[COM3] = true ;
}
/****************************************************************************
* <EFBFBD><EFBFBD> <EFBFBD>ƣ<EFBFBD>void UART4_DMA_TX_TC_Callback_Functions(void))
* <EFBFBD><EFBFBD> <EFBFBD>ܣ<EFBFBD>USART4 DMA<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϻص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
****************************************************************************/
void UART4_DMA_TX_TC_Callback_Functions(void)
{
UARTxDma_Tx_TcFlag[COM4] = true ;
}
/****************************************************************************
* <EFBFBD><EFBFBD> <EFBFBD>ƣ<EFBFBD>void UART1_DMA_RX_TC_Callback_Functions(void))
* <EFBFBD><EFBFBD> <EFBFBD>ܣ<EFBFBD>USART1 DMA<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϻص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
****************************************************************************/
void UART1_DMA_RX_TC_Callback_Functions(void)
{
//SysLog("\r\nUart1Dma Rx TC!") ;
}
/****************************************************************************
* <EFBFBD><EFBFBD> <EFBFBD>ƣ<EFBFBD>void UART2_DMA_RX_TC_Callback_Functions(void))
* <EFBFBD><EFBFBD> <EFBFBD>ܣ<EFBFBD>USART2 DMA<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϻص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
****************************************************************************/
void UART2_DMA_RX_TC_Callback_Functions(void)
{
}
/****************************************************************************
* <EFBFBD><EFBFBD> <EFBFBD>ƣ<EFBFBD>void UART3_DMA_RX_TC_Callback_Functions(void))
* <EFBFBD><EFBFBD> <EFBFBD>ܣ<EFBFBD>USART3 DMA<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϻص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
****************************************************************************/
void UART3_DMA_RX_TC_Callback_Functions(void)
{}
/****************************************************************************
* <EFBFBD><EFBFBD> <EFBFBD>ƣ<EFBFBD>void UART4_DMA_RX_TC_Callback_Functions(void))
* <EFBFBD><EFBFBD> <EFBFBD>ܣ<EFBFBD>USART4 DMA<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϻص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
****************************************************************************/
void UART4_DMA_RX_TC_Callback_Functions(void)
{}