575 lines
27 KiB
C
575 lines
27 KiB
C
![]() |
#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)
|
|||
|
{}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|