1470 lines
45 KiB
C
1470 lines
45 KiB
C
|
|
#include "includes.h"
|
|||
|
|
|
|||
|
|
/*******************************************************************************
|
|||
|
|
* Description : <EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>ȫ<EFBFBD>ֲ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
*******************************************************************************/
|
|||
|
|
UART_t g_Uart[4];
|
|||
|
|
|
|||
|
|
|
|||
|
|
/*******************************************************************************
|
|||
|
|
* Function Name : USART_INIT
|
|||
|
|
* Description : <EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>
|
|||
|
|
* Input : usart - <EFBFBD><EFBFBD><EFBFBD>ں<EFBFBD>
|
|||
|
|
baudrate - <EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* Return : None
|
|||
|
|
*******************************************************************************/
|
|||
|
|
void USART_INIT(uint8_t usart,uint32_t baudrate)
|
|||
|
|
{
|
|||
|
|
#if (USE_CORE_TYPE == 1) //ʹ<><CAB9>C1F<31><46><EFBFBD>İ<EFBFBD>
|
|||
|
|
|
|||
|
|
if(usart == USART_0) //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0
|
|||
|
|
{
|
|||
|
|
//<2F><><EFBFBD><EFBFBD>UART0 GPIOģʽ TXD:PB7 RXD:PB4
|
|||
|
|
GPIOB_SetBits(GPIO_Pin_7);
|
|||
|
|
GPIOB_ModeCfg(GPIO_Pin_4, GPIO_ModeIN_PU); // RXD-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
GPIOB_ModeCfg(GPIO_Pin_7, GPIO_ModeOut_PP_5mA); // TXD-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IO<49><4F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD>ƽ
|
|||
|
|
//<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
UART0_BaudRateCfg( baudrate );
|
|||
|
|
R8_UART0_FCR = (2<<6) | RB_FCR_TX_FIFO_CLR | RB_FCR_RX_FIFO_CLR | RB_FCR_FIFO_EN; // FIFO<46><EFBFBD><F2BFAAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>4<EFBFBD>ֽ<EFBFBD>
|
|||
|
|
R8_UART0_LCR = RB_LCR_WORD_SZ;
|
|||
|
|
R8_UART0_IER = RB_IER_TXD_EN;
|
|||
|
|
R8_UART0_DIV = 1;
|
|||
|
|
|
|||
|
|
//<2F><>ʼ<EFBFBD><CABC>485_1<5F><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - PA10
|
|||
|
|
GPIOA_ModeCfg(MCU485_PIN_1, GPIO_ModeOut_PP_20mA);
|
|||
|
|
MCU485_EN1_L;
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>жϷ<D0B6>ʽ
|
|||
|
|
UART0_ByteTrigCfg( UART_7BYTE_TRIG );
|
|||
|
|
UART0_INTCfg( ENABLE, RB_IER_RECV_RDY|RB_IER_LINE_STAT );
|
|||
|
|
NVIC_EnableIRQ( UART0_IRQn );
|
|||
|
|
|
|||
|
|
memset(&g_Uart[USART_0],0,sizeof(UART_t));
|
|||
|
|
Set_Uart_recvTimeout(&g_Uart[USART_0],baudrate);
|
|||
|
|
|
|||
|
|
g_Uart[USART_0].RX_Buffer_ReadAddr = SRAM_UART0_RecvBuffer_Start_Addr;
|
|||
|
|
g_Uart[USART_0].RX_Buffer_WriteAddr = SRAM_UART0_RecvBuffer_Start_Addr;
|
|||
|
|
g_Uart[USART_0].TX_Buffer_ReadAddr = SRAM_UART0_SendBuffer_Start_Addr;
|
|||
|
|
g_Uart[USART_0].TX_Buffer_WriteAddr = SRAM_UART0_SendBuffer_Start_Addr;
|
|||
|
|
}else if(usart == USART_1) //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1
|
|||
|
|
{
|
|||
|
|
//<2F><><EFBFBD><EFBFBD>UART1 GPIOģʽ TXD:PA9 RXD:PA8
|
|||
|
|
GPIOA_SetBits(GPIO_Pin_9);
|
|||
|
|
GPIOA_ModeCfg(GPIO_Pin_8, GPIO_ModeIN_PU); // RXD-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
GPIOA_ModeCfg(GPIO_Pin_9, GPIO_ModeOut_PP_5mA); // TXD-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IO<49><4F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD>ƽ
|
|||
|
|
|
|||
|
|
//<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
UART1_BaudRateCfg(baudrate);
|
|||
|
|
R8_UART1_FCR = (2<<6) | RB_FCR_TX_FIFO_CLR | RB_FCR_RX_FIFO_CLR | RB_FCR_FIFO_EN; // FIFO<46><EFBFBD><F2BFAAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>4<EFBFBD>ֽ<EFBFBD>
|
|||
|
|
R8_UART1_LCR = RB_LCR_WORD_SZ;
|
|||
|
|
R8_UART1_IER = RB_IER_TXD_EN;
|
|||
|
|
R8_UART1_DIV = 1;
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>жϷ<D0B6>ʽ
|
|||
|
|
UART1_ByteTrigCfg( UART_7BYTE_TRIG );
|
|||
|
|
UART1_INTCfg( ENABLE, RB_IER_RECV_RDY|RB_IER_LINE_STAT );
|
|||
|
|
NVIC_EnableIRQ( UART1_IRQn );
|
|||
|
|
|
|||
|
|
memset(&g_Uart[USART_1],0,sizeof(UART_t));
|
|||
|
|
Set_Uart_recvTimeout(&g_Uart[USART_1],baudrate);
|
|||
|
|
|
|||
|
|
g_Uart[USART_1].RX_Buffer_ReadAddr = SRAM_UART1_RecvBuffer_Start_Addr;
|
|||
|
|
g_Uart[USART_1].RX_Buffer_WriteAddr = SRAM_UART1_RecvBuffer_Start_Addr;
|
|||
|
|
g_Uart[USART_1].TX_Buffer_ReadAddr = SRAM_UART1_SendBuffer_Start_Addr;
|
|||
|
|
g_Uart[USART_1].TX_Buffer_WriteAddr = SRAM_UART1_SendBuffer_Start_Addr;
|
|||
|
|
|
|||
|
|
}else if(usart == USART_2) //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2
|
|||
|
|
{
|
|||
|
|
//<2F><><EFBFBD><EFBFBD>UART1 GPIOģʽ TXD:PB23 RXD:PB22
|
|||
|
|
GPIOB_SetBits(GPIO_Pin_23);
|
|||
|
|
GPIOB_ModeCfg(GPIO_Pin_22, GPIO_ModeIN_PU); // RXD-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
GPIOB_ModeCfg(GPIO_Pin_23, GPIO_ModeOut_PP_5mA); // TXD-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IO<49><4F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD>ƽ
|
|||
|
|
GPIOPinRemap( ENABLE, RB_PIN_UART2); //<2F><>ӳ<EFBFBD><D3B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
//<2F><>ʼ<EFBFBD><CABC>485_2<5F><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - PA11
|
|||
|
|
GPIOA_ModeCfg(MCU485_PIN_2, GPIO_ModeOut_PP_20mA);
|
|||
|
|
MCU485_EN2_L;
|
|||
|
|
|
|||
|
|
//<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
UART2_BaudRateCfg( baudrate );
|
|||
|
|
R8_UART2_FCR = (2<<6) | RB_FCR_TX_FIFO_CLR | RB_FCR_RX_FIFO_CLR | RB_FCR_FIFO_EN; // FIFO<46><EFBFBD><F2BFAAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>4<EFBFBD>ֽ<EFBFBD>
|
|||
|
|
R8_UART2_LCR = RB_LCR_WORD_SZ;
|
|||
|
|
R8_UART2_IER = RB_IER_TXD_EN;
|
|||
|
|
R8_UART2_DIV = 1;
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>жϷ<D0B6>ʽ
|
|||
|
|
UART2_ByteTrigCfg( UART_7BYTE_TRIG );
|
|||
|
|
UART2_INTCfg( ENABLE, RB_IER_RECV_RDY|RB_IER_LINE_STAT );
|
|||
|
|
NVIC_EnableIRQ( UART2_IRQn );
|
|||
|
|
|
|||
|
|
memset(&g_Uart[USART_2],0,sizeof(UART_t));
|
|||
|
|
Set_Uart_recvTimeout(&g_Uart[USART_2],baudrate);
|
|||
|
|
|
|||
|
|
g_Uart[USART_2].RX_Buffer_ReadAddr = SRAM_UART2_RecvBuffer_Start_Addr;
|
|||
|
|
g_Uart[USART_2].RX_Buffer_WriteAddr = SRAM_UART2_RecvBuffer_Start_Addr;
|
|||
|
|
g_Uart[USART_2].TX_Buffer_ReadAddr = SRAM_UART2_SendBuffer_Start_Addr;
|
|||
|
|
g_Uart[USART_2].TX_Buffer_WriteAddr = SRAM_UART2_SendBuffer_Start_Addr;
|
|||
|
|
|
|||
|
|
}else if(usart == USART_3) //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>3
|
|||
|
|
{
|
|||
|
|
//<2F><><EFBFBD><EFBFBD>UART1 GPIOģʽ TXD:PA5 RXD:PA4
|
|||
|
|
GPIOA_SetBits(GPIO_Pin_5);
|
|||
|
|
GPIOA_ModeCfg(GPIO_Pin_4, GPIO_ModeIN_PU); // RXD-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
GPIOA_ModeCfg(GPIO_Pin_5, GPIO_ModeOut_PP_5mA); // TXD-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IO<49><4F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD>ƽ
|
|||
|
|
|
|||
|
|
//<2F><>ʼ<EFBFBD><CABC>485_3<5F><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> PB11
|
|||
|
|
#ifndef MCU_Local_Test_Button_EN
|
|||
|
|
GPIOB_ModeCfg(MCU485_PIN_3, GPIO_ModeOut_PP_20mA);
|
|||
|
|
MCU485_EN3_L;
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
//<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
UART3_BaudRateCfg( baudrate );
|
|||
|
|
R8_UART3_FCR = (2<<6) | RB_FCR_TX_FIFO_CLR | RB_FCR_RX_FIFO_CLR | RB_FCR_FIFO_EN; // FIFO<46><EFBFBD><F2BFAAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>4<EFBFBD>ֽ<EFBFBD>
|
|||
|
|
R8_UART3_LCR = RB_LCR_WORD_SZ;
|
|||
|
|
R8_UART3_IER = RB_IER_TXD_EN;
|
|||
|
|
R8_UART3_DIV = 1;
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>жϷ<D0B6>ʽ
|
|||
|
|
UART3_ByteTrigCfg( UART_7BYTE_TRIG );
|
|||
|
|
UART3_INTCfg( ENABLE, RB_IER_RECV_RDY|RB_IER_LINE_STAT );
|
|||
|
|
NVIC_EnableIRQ( UART3_IRQn );
|
|||
|
|
|
|||
|
|
memset(&g_Uart[USART_3],0,sizeof(UART_t));
|
|||
|
|
Set_Uart_recvTimeout(&g_Uart[USART_3],baudrate);
|
|||
|
|
|
|||
|
|
g_Uart[USART_3].RX_Buffer_ReadAddr = SRAM_UART3_RecvBuffer_Start_Addr;
|
|||
|
|
g_Uart[USART_3].RX_Buffer_WriteAddr = SRAM_UART3_RecvBuffer_Start_Addr;
|
|||
|
|
g_Uart[USART_3].TX_Buffer_ReadAddr = SRAM_UART3_SendBuffer_Start_Addr;
|
|||
|
|
g_Uart[USART_3].TX_Buffer_WriteAddr = SRAM_UART3_SendBuffer_Start_Addr;
|
|||
|
|
}
|
|||
|
|
#elif (USE_CORE_TYPE == 2) //ʹ<><CAB9>C1<43><31><EFBFBD>İ<EFBFBD>
|
|||
|
|
|
|||
|
|
if(usart == USART_0) //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0
|
|||
|
|
{
|
|||
|
|
//<2F><><EFBFBD><EFBFBD>UART0 GPIOģʽ TXD:PB7 RXD:PB4
|
|||
|
|
GPIOB_SetBits(GPIO_Pin_7);
|
|||
|
|
GPIOB_ModeCfg(GPIO_Pin_4, GPIO_ModeIN_PU); // RXD-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
GPIOB_ModeCfg(GPIO_Pin_7, GPIO_ModeOut_PP_5mA); // TXD-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IO<49><4F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD>ƽ
|
|||
|
|
//<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
UART0_BaudRateCfg( baudrate );
|
|||
|
|
R8_UART0_FCR = (2<<6) | RB_FCR_TX_FIFO_CLR | RB_FCR_RX_FIFO_CLR | RB_FCR_FIFO_EN; // FIFO<46><EFBFBD><F2BFAAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>4<EFBFBD>ֽ<EFBFBD>
|
|||
|
|
R8_UART0_LCR = RB_LCR_WORD_SZ;
|
|||
|
|
R8_UART0_IER = RB_IER_TXD_EN;
|
|||
|
|
R8_UART0_DIV = 1;
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>жϷ<D0B6>ʽ
|
|||
|
|
UART0_ByteTrigCfg( UART_7BYTE_TRIG );
|
|||
|
|
UART0_INTCfg( ENABLE, RB_IER_RECV_RDY|RB_IER_LINE_STAT );
|
|||
|
|
NVIC_EnableIRQ( UART0_IRQn );
|
|||
|
|
|
|||
|
|
memset(&g_Uart[USART_0],0,sizeof(UART_t));
|
|||
|
|
Set_Uart_recvTimeout(&g_Uart[USART_0],baudrate);
|
|||
|
|
|
|||
|
|
g_Uart[USART_0].RX_Buffer_ReadAddr = SRAM_UART0_RecvBuffer_Start_Addr;
|
|||
|
|
g_Uart[USART_0].RX_Buffer_WriteAddr = SRAM_UART0_RecvBuffer_Start_Addr;
|
|||
|
|
g_Uart[USART_0].TX_Buffer_ReadAddr = SRAM_UART0_SendBuffer_Start_Addr;
|
|||
|
|
g_Uart[USART_0].TX_Buffer_WriteAddr = SRAM_UART0_SendBuffer_Start_Addr;
|
|||
|
|
}else if(usart == USART_1) //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1
|
|||
|
|
{
|
|||
|
|
//<2F><><EFBFBD><EFBFBD>UART1 GPIOģʽ TXD:PA9 RXD:PA8
|
|||
|
|
GPIOA_SetBits(GPIO_Pin_9);
|
|||
|
|
GPIOA_ModeCfg(GPIO_Pin_8, GPIO_ModeIN_PU); // RXD-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
GPIOA_ModeCfg(GPIO_Pin_9, GPIO_ModeOut_PP_5mA); // TXD-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IO<49><4F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD>ƽ
|
|||
|
|
|
|||
|
|
//<2F><>ʼ<EFBFBD><CABC>485_1<5F><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - PB21
|
|||
|
|
GPIOB_ModeCfg(MCU485_PIN_1, GPIO_ModeOut_PP_20mA);
|
|||
|
|
MCU485_EN1_L;
|
|||
|
|
|
|||
|
|
//<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
UART1_BaudRateCfg(baudrate);
|
|||
|
|
R8_UART1_FCR = (2<<6) | RB_FCR_TX_FIFO_CLR | RB_FCR_RX_FIFO_CLR | RB_FCR_FIFO_EN; // FIFO<46><EFBFBD><F2BFAAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>4<EFBFBD>ֽ<EFBFBD>
|
|||
|
|
R8_UART1_LCR = RB_LCR_WORD_SZ;
|
|||
|
|
R8_UART1_IER = RB_IER_TXD_EN;
|
|||
|
|
R8_UART1_DIV = 1;
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>жϷ<D0B6>ʽ
|
|||
|
|
UART1_ByteTrigCfg( UART_7BYTE_TRIG );
|
|||
|
|
UART1_INTCfg( ENABLE, RB_IER_RECV_RDY|RB_IER_LINE_STAT );
|
|||
|
|
NVIC_EnableIRQ( UART1_IRQn );
|
|||
|
|
|
|||
|
|
memset(&g_Uart[USART_1],0,sizeof(UART_t));
|
|||
|
|
Set_Uart_recvTimeout(&g_Uart[USART_1],baudrate);
|
|||
|
|
|
|||
|
|
g_Uart[USART_1].RX_Buffer_ReadAddr = SRAM_UART1_RecvBuffer_Start_Addr;
|
|||
|
|
g_Uart[USART_1].RX_Buffer_WriteAddr = SRAM_UART1_RecvBuffer_Start_Addr;
|
|||
|
|
g_Uart[USART_1].TX_Buffer_ReadAddr = SRAM_UART1_SendBuffer_Start_Addr;
|
|||
|
|
g_Uart[USART_1].TX_Buffer_WriteAddr = SRAM_UART1_SendBuffer_Start_Addr;
|
|||
|
|
|
|||
|
|
}else if(usart == USART_2) //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2
|
|||
|
|
{
|
|||
|
|
//<2F><><EFBFBD><EFBFBD>UART1 GPIOģʽ TXD:PA7 RXD:PA6
|
|||
|
|
GPIOA_SetBits(GPIO_Pin_7);
|
|||
|
|
GPIOA_ModeCfg(GPIO_Pin_6, GPIO_ModeIN_PU); // RXD-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
GPIOA_ModeCfg(GPIO_Pin_7, GPIO_ModeOut_PP_5mA); // TXD-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IO<49><4F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD>ƽ
|
|||
|
|
|
|||
|
|
//<2F><>ʼ<EFBFBD><CABC>485_2<5F><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - PA1
|
|||
|
|
GPIOA_ModeCfg(MCU485_PIN_2, GPIO_ModeOut_PP_20mA);
|
|||
|
|
MCU485_EN2_L;
|
|||
|
|
|
|||
|
|
//<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
UART2_BaudRateCfg( baudrate );
|
|||
|
|
R8_UART2_FCR = (2<<6) | RB_FCR_TX_FIFO_CLR | RB_FCR_RX_FIFO_CLR | RB_FCR_FIFO_EN; // FIFO<46><EFBFBD><F2BFAAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>4<EFBFBD>ֽ<EFBFBD>
|
|||
|
|
R8_UART2_LCR = RB_LCR_WORD_SZ;
|
|||
|
|
R8_UART2_IER = RB_IER_TXD_EN;
|
|||
|
|
R8_UART2_DIV = 1;
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>жϷ<D0B6>ʽ
|
|||
|
|
UART2_ByteTrigCfg( UART_7BYTE_TRIG );
|
|||
|
|
UART2_INTCfg( ENABLE, RB_IER_RECV_RDY|RB_IER_LINE_STAT );
|
|||
|
|
NVIC_EnableIRQ( UART2_IRQn );
|
|||
|
|
|
|||
|
|
memset(&g_Uart[USART_2],0,sizeof(UART_t));
|
|||
|
|
Set_Uart_recvTimeout(&g_Uart[USART_2],baudrate);
|
|||
|
|
|
|||
|
|
g_Uart[USART_2].RX_Buffer_ReadAddr = SRAM_UART2_RecvBuffer_Start_Addr;
|
|||
|
|
g_Uart[USART_2].RX_Buffer_WriteAddr = SRAM_UART2_RecvBuffer_Start_Addr;
|
|||
|
|
g_Uart[USART_2].TX_Buffer_ReadAddr = SRAM_UART2_SendBuffer_Start_Addr;
|
|||
|
|
g_Uart[USART_2].TX_Buffer_WriteAddr = SRAM_UART2_SendBuffer_Start_Addr;
|
|||
|
|
|
|||
|
|
}else if(usart == USART_3) //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>3
|
|||
|
|
{
|
|||
|
|
//<2F><><EFBFBD><EFBFBD>UART1 GPIOģʽ TXD:PA5 RXD:PA4
|
|||
|
|
GPIOA_SetBits(GPIO_Pin_5);
|
|||
|
|
GPIOA_ModeCfg(GPIO_Pin_4, GPIO_ModeIN_PU); // RXD-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
GPIOA_ModeCfg(GPIO_Pin_5, GPIO_ModeOut_PP_5mA); // TXD-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IO<49><4F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD>ƽ
|
|||
|
|
|
|||
|
|
//<2F><>ʼ<EFBFBD><CABC>485_3<5F><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> PA0
|
|||
|
|
#ifndef MCU_Local_Test_Button_EN
|
|||
|
|
GPIOA_ModeCfg(MCU485_PIN_3, GPIO_ModeOut_PP_20mA);
|
|||
|
|
MCU485_EN3_L;
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
//<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
UART3_BaudRateCfg( baudrate );
|
|||
|
|
R8_UART3_FCR = (2<<6) | RB_FCR_TX_FIFO_CLR | RB_FCR_RX_FIFO_CLR | RB_FCR_FIFO_EN; // FIFO<46><EFBFBD><F2BFAAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>4<EFBFBD>ֽ<EFBFBD>
|
|||
|
|
R8_UART3_LCR = RB_LCR_WORD_SZ;
|
|||
|
|
R8_UART3_IER = RB_IER_TXD_EN;
|
|||
|
|
R8_UART3_DIV = 1;
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>жϷ<D0B6>ʽ
|
|||
|
|
UART3_ByteTrigCfg( UART_7BYTE_TRIG );
|
|||
|
|
UART3_INTCfg( ENABLE, RB_IER_RECV_RDY|RB_IER_LINE_STAT );
|
|||
|
|
NVIC_EnableIRQ( UART3_IRQn );
|
|||
|
|
|
|||
|
|
memset(&g_Uart[USART_3],0,sizeof(UART_t));
|
|||
|
|
Set_Uart_recvTimeout(&g_Uart[USART_3],baudrate);
|
|||
|
|
|
|||
|
|
g_Uart[USART_3].RX_Buffer_ReadAddr = SRAM_UART3_RecvBuffer_Start_Addr;
|
|||
|
|
g_Uart[USART_3].RX_Buffer_WriteAddr = SRAM_UART3_RecvBuffer_Start_Addr;
|
|||
|
|
g_Uart[USART_3].TX_Buffer_ReadAddr = SRAM_UART3_SendBuffer_Start_Addr;
|
|||
|
|
g_Uart[USART_3].TX_Buffer_WriteAddr = SRAM_UART3_SendBuffer_Start_Addr;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
#endif //USE_CORE_TYPE == CORE_TYPE_C1F
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*******************************************************************************
|
|||
|
|
* Function Name : Set_Uart_recvTimeout
|
|||
|
|
* Description : <EFBFBD><EFBFBD><EFBFBD>ô<EFBFBD><EFBFBD>ڽ<EFBFBD><EFBFBD>ճ<EFBFBD>ʱʱ<EFBFBD><EFBFBD>
|
|||
|
|
* Return : None
|
|||
|
|
*******************************************************************************/
|
|||
|
|
void Set_Uart_recvTimeout(UART_t *set_uart,uint32_t baud)
|
|||
|
|
{
|
|||
|
|
if(baud == 115200)
|
|||
|
|
{
|
|||
|
|
set_uart->recvTimeout = 6;
|
|||
|
|
}else if(baud == 512000)
|
|||
|
|
{
|
|||
|
|
set_uart->recvTimeout = 6;
|
|||
|
|
}else
|
|||
|
|
{
|
|||
|
|
set_uart->recvTimeout = 10; //2024-02-23
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*******************************************************************************
|
|||
|
|
* Function Name : Uart0_GetStart
|
|||
|
|
* Description : <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>0״̬
|
|||
|
|
* Return : <EFBFBD><EFBFBD><EFBFBD><EFBFBD>0״̬<EFBFBD>Ĵ<EFBFBD><EFBFBD><EFBFBD>ֵ
|
|||
|
|
*******************************************************************************/
|
|||
|
|
uint8_t Uart0_GetStart(void)
|
|||
|
|
{
|
|||
|
|
return R8_UART0_LSR;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*******************************************************************************
|
|||
|
|
* Function Name : Uart0_GetStart
|
|||
|
|
* Description : <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>1״̬
|
|||
|
|
* Return : <EFBFBD><EFBFBD><EFBFBD><EFBFBD>1״̬<EFBFBD>Ĵ<EFBFBD><EFBFBD><EFBFBD>ֵ
|
|||
|
|
*******************************************************************************/
|
|||
|
|
uint8_t Uart1_GetStart(void)
|
|||
|
|
{
|
|||
|
|
return R8_UART1_LSR;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*******************************************************************************
|
|||
|
|
* Function Name : Uart0_GetStart
|
|||
|
|
* Description : <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>2״̬
|
|||
|
|
* Return : <EFBFBD><EFBFBD><EFBFBD><EFBFBD>2״̬<EFBFBD>Ĵ<EFBFBD><EFBFBD><EFBFBD>ֵ
|
|||
|
|
*******************************************************************************/
|
|||
|
|
uint8_t Uart2_GetStart(void)
|
|||
|
|
{
|
|||
|
|
return R8_UART2_LSR;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*******************************************************************************
|
|||
|
|
* Function Name : Uart0_GetStart
|
|||
|
|
* Description : <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>3״̬
|
|||
|
|
* Return : <EFBFBD><EFBFBD><EFBFBD><EFBFBD>3״̬<EFBFBD>Ĵ<EFBFBD><EFBFBD><EFBFBD>ֵ
|
|||
|
|
*******************************************************************************/
|
|||
|
|
uint8_t Uart3_GetStart(void)
|
|||
|
|
{
|
|||
|
|
return R8_UART3_LSR;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*******************************************************************************
|
|||
|
|
* Function Name : MCU485_SendString_0
|
|||
|
|
* Description : 485_0 <EFBFBD><EFBFBD><EFBFBD>ͺ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* Input :
|
|||
|
|
buf - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
l - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* Return : None
|
|||
|
|
*******************************************************************************/
|
|||
|
|
void MCU485_SendString_0(uint8_t *buf, uint16_t l)
|
|||
|
|
{
|
|||
|
|
uint16_t delay_num = 0;
|
|||
|
|
|
|||
|
|
MCU485_EN1_H;
|
|||
|
|
|
|||
|
|
UART0_SendString(buf,l);
|
|||
|
|
|
|||
|
|
//<2F>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - 50ms
|
|||
|
|
while(1)
|
|||
|
|
{
|
|||
|
|
WDT_Feed();
|
|||
|
|
if((Uart0_GetStart() & 0x40) && (R8_UART0_TFC == 0x00)) break; //<2F>жϷ<D0B6><CFB7><EFBFBD>FIFOΪ<4F><CEAA>,ͬʱFIFO<46><4F><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>
|
|||
|
|
DelayUs(100);
|
|||
|
|
delay_num++;
|
|||
|
|
if(delay_num > 500) break;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
MCU485_EN1_L;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*******************************************************************************
|
|||
|
|
* Function Name : MCU485_SendString_1
|
|||
|
|
* Description : 485_1 <EFBFBD><EFBFBD><EFBFBD>ͺ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* Input :
|
|||
|
|
buf - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
l - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* Return : None
|
|||
|
|
*******************************************************************************/
|
|||
|
|
void MCU485_SendString_1(uint8_t *buf, uint16_t l)
|
|||
|
|
{
|
|||
|
|
uint16_t delay_num = 0;
|
|||
|
|
|
|||
|
|
MCU485_EN1_H;
|
|||
|
|
|
|||
|
|
UART1_SendString(buf,l);
|
|||
|
|
|
|||
|
|
//<2F>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - 50ms
|
|||
|
|
while(1)
|
|||
|
|
{
|
|||
|
|
WDT_Feed();
|
|||
|
|
if((Uart1_GetStart() & 0x40) && (R8_UART1_TFC == 0x00)) break; //<2F>жϷ<D0B6><CFB7><EFBFBD>FIFOΪ<4F><CEAA>,ͬʱFIFO<46><4F><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>
|
|||
|
|
DelayUs(100);
|
|||
|
|
delay_num++;
|
|||
|
|
if(delay_num > 500) break;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
MCU485_EN1_L;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*******************************************************************************
|
|||
|
|
* Function Name : MCU485_SendString_2
|
|||
|
|
* Description : 485_2 <EFBFBD><EFBFBD><EFBFBD>ͺ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* Input :
|
|||
|
|
buf - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
l - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* Return : None
|
|||
|
|
*******************************************************************************/
|
|||
|
|
void MCU485_SendString_2(uint8_t *buf, uint16_t l)
|
|||
|
|
{
|
|||
|
|
uint16_t delay_num = 0;
|
|||
|
|
MCU485_EN2_H;
|
|||
|
|
|
|||
|
|
UART2_SendString(buf,l);
|
|||
|
|
//<2F>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - 50ms
|
|||
|
|
while(1)
|
|||
|
|
{
|
|||
|
|
WDT_Feed();
|
|||
|
|
if(Uart2_GetStart() & 0x40) break;
|
|||
|
|
DelayUs(100);
|
|||
|
|
delay_num++;
|
|||
|
|
if(delay_num > 500) break;
|
|||
|
|
}
|
|||
|
|
MCU485_EN2_L;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*******************************************************************************
|
|||
|
|
* Function Name : MCU485_SendString_3
|
|||
|
|
* Description : 485_3 <EFBFBD><EFBFBD><EFBFBD>ͺ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* Input :
|
|||
|
|
buf - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
l - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* Return : None
|
|||
|
|
*******************************************************************************/
|
|||
|
|
void MCU485_SendString_3(uint8_t *buf, uint16_t l)
|
|||
|
|
{
|
|||
|
|
uint16_t delay_num = 0;
|
|||
|
|
|
|||
|
|
#ifndef MCU_Local_Test_Button_EN
|
|||
|
|
MCU485_EN3_H;
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
UART3_SendString(buf,l);
|
|||
|
|
//<2F>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - 50ms
|
|||
|
|
while(1)
|
|||
|
|
{
|
|||
|
|
WDT_Feed();
|
|||
|
|
if(Uart3_GetStart() & 0x40) break;
|
|||
|
|
DelayUs(100);
|
|||
|
|
delay_num++;
|
|||
|
|
if(delay_num > 500) break;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
#ifndef MCU_Local_Test_Button_EN
|
|||
|
|
MCU485_EN3_L;
|
|||
|
|
#endif
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*******************************************************************************
|
|||
|
|
* Function Name : UART0_ChangeBaud
|
|||
|
|
* Description : <EFBFBD><EFBFBD><EFBFBD><EFBFBD>0 - <EFBFBD>ı䲨<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* Return : None
|
|||
|
|
*******************************************************************************/
|
|||
|
|
void UART0_ChangeBaud(uint32_t baudrate)
|
|||
|
|
{
|
|||
|
|
/*<2A>ر<EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD>ж<EFBFBD>*/
|
|||
|
|
ENTER_CRITICAL();
|
|||
|
|
|
|||
|
|
UART0_Reset();
|
|||
|
|
|
|||
|
|
#if (USE_CORE_TYPE == 1) //ʹ<><CAB9>C1F<31><46><EFBFBD>İ<EFBFBD>
|
|||
|
|
//<2F><><EFBFBD><EFBFBD>UART0 GPIOģʽ TXD:PB7 RXD:PB4
|
|||
|
|
GPIOB_SetBits(GPIO_Pin_7);
|
|||
|
|
GPIOB_ModeCfg(GPIO_Pin_4, GPIO_ModeIN_PU); // RXD-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
GPIOB_ModeCfg(GPIO_Pin_7, GPIO_ModeOut_PP_5mA); // TXD-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IO<49><4F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD>ƽ
|
|||
|
|
//<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
UART0_BaudRateCfg( baudrate );
|
|||
|
|
R8_UART0_FCR = (2<<6) | RB_FCR_TX_FIFO_CLR | RB_FCR_RX_FIFO_CLR | RB_FCR_FIFO_EN; // FIFO<46><EFBFBD><F2BFAAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>4<EFBFBD>ֽ<EFBFBD>
|
|||
|
|
R8_UART0_LCR = RB_LCR_WORD_SZ;
|
|||
|
|
R8_UART0_IER = RB_IER_TXD_EN;
|
|||
|
|
R8_UART0_DIV = 1;
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>жϷ<D0B6>ʽ
|
|||
|
|
UART0_ByteTrigCfg( UART_7BYTE_TRIG );
|
|||
|
|
UART0_INTCfg( ENABLE, RB_IER_RECV_RDY|RB_IER_LINE_STAT );
|
|||
|
|
NVIC_EnableIRQ( UART0_IRQn );
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD>մ<EFBFBD><D5B4><EFBFBD> FIFO
|
|||
|
|
UART0_CLR_RXFIFO();
|
|||
|
|
UART0_CLR_TXFIFO();
|
|||
|
|
|
|||
|
|
Set_Uart_recvTimeout(&g_Uart[USART_0],baudrate);
|
|||
|
|
|
|||
|
|
#elif (USE_CORE_TYPE == 2) //ʹ<><CAB9>C1<43><31><EFBFBD>İ<EFBFBD>
|
|||
|
|
//<2F><><EFBFBD><EFBFBD>UART0 GPIOģʽ TXD:PB7 RXD:PB4
|
|||
|
|
GPIOB_SetBits(GPIO_Pin_7);
|
|||
|
|
GPIOB_ModeCfg(GPIO_Pin_4, GPIO_ModeIN_PU); // RXD-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
GPIOB_ModeCfg(GPIO_Pin_7, GPIO_ModeOut_PP_5mA); // TXD-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IO<49><4F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD>ƽ
|
|||
|
|
//<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
UART0_BaudRateCfg( baudrate );
|
|||
|
|
R8_UART0_FCR = (2<<6) | RB_FCR_TX_FIFO_CLR | RB_FCR_RX_FIFO_CLR | RB_FCR_FIFO_EN; // FIFO<46><EFBFBD><F2BFAAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>4<EFBFBD>ֽ<EFBFBD>
|
|||
|
|
R8_UART0_LCR = RB_LCR_WORD_SZ;
|
|||
|
|
R8_UART0_IER = RB_IER_TXD_EN;
|
|||
|
|
R8_UART0_DIV = 1;
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>жϷ<D0B6>ʽ
|
|||
|
|
UART0_ByteTrigCfg( UART_7BYTE_TRIG );
|
|||
|
|
UART0_INTCfg( ENABLE, RB_IER_RECV_RDY|RB_IER_LINE_STAT );
|
|||
|
|
NVIC_EnableIRQ( UART0_IRQn );
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD>մ<EFBFBD><D5B4><EFBFBD> FIFO
|
|||
|
|
UART0_CLR_RXFIFO();
|
|||
|
|
UART0_CLR_TXFIFO();
|
|||
|
|
|
|||
|
|
Set_Uart_recvTimeout(&g_Uart[USART_0],baudrate);
|
|||
|
|
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
EXIT_CRITICAL();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*******************************************************************************
|
|||
|
|
* Function Name : UART1_ChangeBaud
|
|||
|
|
* Description : <EFBFBD><EFBFBD><EFBFBD><EFBFBD>1 - <EFBFBD>ı䲨<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* Return : None
|
|||
|
|
*******************************************************************************/
|
|||
|
|
void UART1_ChangeBaud(uint32_t baudrate)
|
|||
|
|
{
|
|||
|
|
/*<2A>ر<EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD>ж<EFBFBD>*/
|
|||
|
|
ENTER_CRITICAL();
|
|||
|
|
|
|||
|
|
UART1_Reset();
|
|||
|
|
|
|||
|
|
#if (USE_CORE_TYPE == 1) //ʹ<><CAB9>C1F<31><46><EFBFBD>İ<EFBFBD>
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD>UART1 GPIOģʽ TXD:PA9 RXD:PA8
|
|||
|
|
GPIOA_SetBits(GPIO_Pin_9);
|
|||
|
|
GPIOA_ModeCfg(GPIO_Pin_8, GPIO_ModeIN_PU); // RXD-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
GPIOA_ModeCfg(GPIO_Pin_9, GPIO_ModeOut_PP_5mA); // TXD-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IO<49><4F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD>ƽ
|
|||
|
|
|
|||
|
|
//<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
UART1_BaudRateCfg(baudrate);
|
|||
|
|
R8_UART1_FCR = (2<<6) | RB_FCR_TX_FIFO_CLR | RB_FCR_RX_FIFO_CLR | RB_FCR_FIFO_EN; // FIFO<46><EFBFBD><F2BFAAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>4<EFBFBD>ֽ<EFBFBD>
|
|||
|
|
R8_UART1_LCR = RB_LCR_WORD_SZ;
|
|||
|
|
R8_UART1_IER = RB_IER_TXD_EN;
|
|||
|
|
R8_UART1_DIV = 1;
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>жϷ<D0B6>ʽ
|
|||
|
|
UART1_ByteTrigCfg( UART_7BYTE_TRIG );
|
|||
|
|
UART1_INTCfg( ENABLE, RB_IER_RECV_RDY|RB_IER_LINE_STAT );
|
|||
|
|
NVIC_EnableIRQ( UART1_IRQn );
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD>մ<EFBFBD><D5B4><EFBFBD> FIFO
|
|||
|
|
UART1_CLR_RXFIFO();
|
|||
|
|
UART1_CLR_TXFIFO();
|
|||
|
|
|
|||
|
|
Set_Uart_recvTimeout(&g_Uart[USART_1],baudrate);
|
|||
|
|
|
|||
|
|
#elif (USE_CORE_TYPE == 2) //ʹ<><CAB9>C1<43><31><EFBFBD>İ<EFBFBD>
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD>UART1 GPIOģʽ TXD:PA9 RXD:PA8
|
|||
|
|
GPIOA_SetBits(GPIO_Pin_9);
|
|||
|
|
GPIOA_ModeCfg(GPIO_Pin_8, GPIO_ModeIN_PU); // RXD-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
GPIOA_ModeCfg(GPIO_Pin_9, GPIO_ModeOut_PP_5mA); // TXD-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IO<49><4F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD>ƽ
|
|||
|
|
|
|||
|
|
//<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
UART1_BaudRateCfg(baudrate);
|
|||
|
|
R8_UART1_FCR = (2<<6) | RB_FCR_TX_FIFO_CLR | RB_FCR_RX_FIFO_CLR | RB_FCR_FIFO_EN; // FIFO<46><EFBFBD><F2BFAAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>4<EFBFBD>ֽ<EFBFBD>
|
|||
|
|
R8_UART1_LCR = RB_LCR_WORD_SZ;
|
|||
|
|
R8_UART1_IER = RB_IER_TXD_EN;
|
|||
|
|
R8_UART1_DIV = 1;
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>жϷ<D0B6>ʽ
|
|||
|
|
UART1_ByteTrigCfg( UART_7BYTE_TRIG );
|
|||
|
|
UART1_INTCfg( ENABLE, RB_IER_RECV_RDY|RB_IER_LINE_STAT );
|
|||
|
|
NVIC_EnableIRQ( UART1_IRQn );
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD>մ<EFBFBD><D5B4><EFBFBD> FIFO
|
|||
|
|
UART1_CLR_RXFIFO();
|
|||
|
|
UART1_CLR_TXFIFO();
|
|||
|
|
|
|||
|
|
Set_Uart_recvTimeout(&g_Uart[USART_1],baudrate);
|
|||
|
|
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
EXIT_CRITICAL();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*******************************************************************************
|
|||
|
|
* Function Name : UART2_ChangeBaud
|
|||
|
|
* Description : <EFBFBD><EFBFBD><EFBFBD><EFBFBD>2 - <EFBFBD>ı䲨<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* Return : None
|
|||
|
|
*******************************************************************************/
|
|||
|
|
void UART2_ChangeBaud(uint32_t baudrate)
|
|||
|
|
{
|
|||
|
|
/*<2A>ر<EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD>ж<EFBFBD>*/
|
|||
|
|
ENTER_CRITICAL();
|
|||
|
|
|
|||
|
|
UART2_Reset();
|
|||
|
|
|
|||
|
|
#if (USE_CORE_TYPE == 1) //ʹ<><CAB9>C1F<31><46><EFBFBD>İ<EFBFBD>
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD>UART1 GPIOģʽ TXD:PB23 RXD:PB22
|
|||
|
|
GPIOB_SetBits(GPIO_Pin_23);
|
|||
|
|
GPIOB_ModeCfg(GPIO_Pin_22, GPIO_ModeIN_PU); // RXD-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
GPIOB_ModeCfg(GPIO_Pin_23, GPIO_ModeOut_PP_5mA); // TXD-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IO<49><4F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD>ƽ
|
|||
|
|
GPIOPinRemap( ENABLE, RB_PIN_UART2); //<2F><>ӳ<EFBFBD><D3B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
//<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
UART2_BaudRateCfg( baudrate );
|
|||
|
|
R8_UART2_FCR = (2<<6) | RB_FCR_TX_FIFO_CLR | RB_FCR_RX_FIFO_CLR | RB_FCR_FIFO_EN; // FIFO<46><EFBFBD><F2BFAAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>4<EFBFBD>ֽ<EFBFBD>
|
|||
|
|
R8_UART2_LCR = RB_LCR_WORD_SZ;
|
|||
|
|
R8_UART2_IER = RB_IER_TXD_EN;
|
|||
|
|
R8_UART2_DIV = 1;
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>жϷ<D0B6>ʽ
|
|||
|
|
UART2_ByteTrigCfg( UART_7BYTE_TRIG );
|
|||
|
|
UART2_INTCfg( ENABLE, RB_IER_RECV_RDY|RB_IER_LINE_STAT );
|
|||
|
|
NVIC_EnableIRQ( UART2_IRQn );
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD>մ<EFBFBD><D5B4><EFBFBD> FIFO
|
|||
|
|
UART2_CLR_RXFIFO();
|
|||
|
|
UART2_CLR_TXFIFO();
|
|||
|
|
|
|||
|
|
Set_Uart_recvTimeout(&g_Uart[USART_2],baudrate);
|
|||
|
|
|
|||
|
|
#elif (USE_CORE_TYPE == 2) //ʹ<><CAB9>C1<43><31><EFBFBD>İ<EFBFBD>
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD>UART1 GPIOģʽ TXD:PA7 RXD:PA6
|
|||
|
|
GPIOA_SetBits(GPIO_Pin_7);
|
|||
|
|
GPIOA_ModeCfg(GPIO_Pin_6, GPIO_ModeIN_PU); // RXD-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
GPIOA_ModeCfg(GPIO_Pin_7, GPIO_ModeOut_PP_5mA); // TXD-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IO<49><4F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD>ƽ
|
|||
|
|
|
|||
|
|
//<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
UART2_BaudRateCfg( baudrate );
|
|||
|
|
R8_UART2_FCR = (2<<6) | RB_FCR_TX_FIFO_CLR | RB_FCR_RX_FIFO_CLR | RB_FCR_FIFO_EN; // FIFO<46><EFBFBD><F2BFAAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>4<EFBFBD>ֽ<EFBFBD>
|
|||
|
|
R8_UART2_LCR = RB_LCR_WORD_SZ;
|
|||
|
|
R8_UART2_IER = RB_IER_TXD_EN;
|
|||
|
|
R8_UART2_DIV = 1;
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>жϷ<D0B6>ʽ
|
|||
|
|
UART2_ByteTrigCfg( UART_7BYTE_TRIG );
|
|||
|
|
UART2_INTCfg( ENABLE, RB_IER_RECV_RDY|RB_IER_LINE_STAT );
|
|||
|
|
NVIC_EnableIRQ( UART2_IRQn );
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD>մ<EFBFBD><D5B4><EFBFBD> FIFO
|
|||
|
|
UART2_CLR_RXFIFO();
|
|||
|
|
UART2_CLR_TXFIFO();
|
|||
|
|
|
|||
|
|
Set_Uart_recvTimeout(&g_Uart[USART_2],baudrate);
|
|||
|
|
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
EXIT_CRITICAL();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*******************************************************************************
|
|||
|
|
* Function Name : UART3_ChangeBaud
|
|||
|
|
* Description : <EFBFBD><EFBFBD><EFBFBD><EFBFBD>3 - <EFBFBD>ı䲨<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* Return : None
|
|||
|
|
*******************************************************************************/
|
|||
|
|
void UART3_ChangeBaud(uint32_t baudrate)
|
|||
|
|
{
|
|||
|
|
/*<2A>ر<EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD>ж<EFBFBD>*/
|
|||
|
|
ENTER_CRITICAL();
|
|||
|
|
|
|||
|
|
UART3_Reset();
|
|||
|
|
|
|||
|
|
#if (USE_CORE_TYPE == 1) //ʹ<><CAB9>C1F<31><46><EFBFBD>İ<EFBFBD>
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD>UART3 GPIOģʽ TXD:PA5 RXD:PA4
|
|||
|
|
GPIOA_SetBits(GPIO_Pin_5);
|
|||
|
|
GPIOA_ModeCfg(GPIO_Pin_4, GPIO_ModeIN_PU); // RXD-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
GPIOA_ModeCfg(GPIO_Pin_5, GPIO_ModeOut_PP_5mA); // TXD-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IO<49><4F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD>ƽ
|
|||
|
|
|
|||
|
|
//<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
UART3_BaudRateCfg( baudrate );
|
|||
|
|
R8_UART3_FCR = (2<<6) | RB_FCR_TX_FIFO_CLR | RB_FCR_RX_FIFO_CLR | RB_FCR_FIFO_EN; // FIFO<46><EFBFBD><F2BFAAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>4<EFBFBD>ֽ<EFBFBD>
|
|||
|
|
R8_UART3_LCR = RB_LCR_WORD_SZ;
|
|||
|
|
R8_UART3_IER = RB_IER_TXD_EN;
|
|||
|
|
R8_UART3_DIV = 1;
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>жϷ<D0B6>ʽ
|
|||
|
|
UART3_ByteTrigCfg( UART_7BYTE_TRIG );
|
|||
|
|
UART3_INTCfg( ENABLE, RB_IER_RECV_RDY|RB_IER_LINE_STAT );
|
|||
|
|
NVIC_EnableIRQ( UART3_IRQn );
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD>մ<EFBFBD><D5B4><EFBFBD> FIFO
|
|||
|
|
UART3_CLR_RXFIFO();
|
|||
|
|
UART3_CLR_TXFIFO();
|
|||
|
|
|
|||
|
|
Set_Uart_recvTimeout(&g_Uart[USART_3],baudrate);
|
|||
|
|
|
|||
|
|
#elif (USE_CORE_TYPE == 2) //ʹ<><CAB9>C1<43><31><EFBFBD>İ<EFBFBD>
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD>UART1 GPIOģʽ TXD:PA5 RXD:PA4
|
|||
|
|
GPIOA_SetBits(GPIO_Pin_5);
|
|||
|
|
GPIOA_ModeCfg(GPIO_Pin_4, GPIO_ModeIN_PU); // RXD-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
GPIOA_ModeCfg(GPIO_Pin_5, GPIO_ModeOut_PP_5mA); // TXD-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IO<49><4F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD>ƽ
|
|||
|
|
|
|||
|
|
//<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
UART3_BaudRateCfg( baudrate );
|
|||
|
|
R8_UART3_FCR = (2<<6) | RB_FCR_TX_FIFO_CLR | RB_FCR_RX_FIFO_CLR | RB_FCR_FIFO_EN; // FIFO<46><EFBFBD><F2BFAAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>4<EFBFBD>ֽ<EFBFBD>
|
|||
|
|
R8_UART3_LCR = RB_LCR_WORD_SZ;
|
|||
|
|
R8_UART3_IER = RB_IER_TXD_EN;
|
|||
|
|
R8_UART3_DIV = 1;
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>жϷ<D0B6>ʽ
|
|||
|
|
UART3_ByteTrigCfg( UART_7BYTE_TRIG );
|
|||
|
|
UART3_INTCfg( ENABLE, RB_IER_RECV_RDY|RB_IER_LINE_STAT );
|
|||
|
|
NVIC_EnableIRQ( UART3_IRQn );
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD>մ<EFBFBD><D5B4><EFBFBD> FIFO
|
|||
|
|
UART3_CLR_RXFIFO();
|
|||
|
|
UART3_CLR_TXFIFO();
|
|||
|
|
|
|||
|
|
Set_Uart_recvTimeout(&g_Uart[USART_3],baudrate);
|
|||
|
|
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
EXIT_CRITICAL();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*******************************************************************************
|
|||
|
|
* Function Name : Uart0_RecvString_To_SRAM
|
|||
|
|
* Description : <EFBFBD><EFBFBD><EFBFBD><EFBFBD>0 - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD>SRAM<EFBFBD><EFBFBD><EFBFBD>շ<EFBFBD><EFBFBD>ͻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* Return : None
|
|||
|
|
*******************************************************************************/
|
|||
|
|
uint16_t Uart0_RecvString_To_SRAM(uint32_t addr)
|
|||
|
|
{
|
|||
|
|
uint32_t w_addr = addr;
|
|||
|
|
uint16_t len = 0;
|
|||
|
|
uint8_t data = 0;
|
|||
|
|
|
|||
|
|
while( R8_UART0_RFC )
|
|||
|
|
{
|
|||
|
|
data = R8_UART0_RBR;
|
|||
|
|
SRAM_Write_Byte(data,w_addr);
|
|||
|
|
w_addr++;
|
|||
|
|
len ++;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return (len);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*******************************************************************************
|
|||
|
|
* Function Name : UART0_IRQHandler
|
|||
|
|
* Description : <EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD>жϷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* Return : None
|
|||
|
|
*******************************************************************************/
|
|||
|
|
void UART0_IRQHandler(void)
|
|||
|
|
{
|
|||
|
|
uint16_t i = 0;
|
|||
|
|
switch( UART0_GetITFlag() )
|
|||
|
|
{
|
|||
|
|
case UART_II_LINE_STAT: //<2F><>·״̬<D7B4><CCAC><EFBFBD><EFBFBD>
|
|||
|
|
UART0_GetLinSTA();
|
|||
|
|
break;
|
|||
|
|
case UART_II_RECV_RDY: //<2F><><EFBFBD>ݴﵽ<DDB4><EFB5BD><EFBFBD>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
case UART_II_RECV_TOUT: //<2F><><EFBFBD>ճ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ʱһ֡<D2BB><D6A1><EFBFBD>ݽ<EFBFBD><DDBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
i = R8_UART0_RFC;
|
|||
|
|
if((g_Uart[USART_0].recvLen + i) >= UART_BUFFER_SIZE) g_Uart[USART_0].recvLen = 0;
|
|||
|
|
i = UART0_RecvString(&g_Uart[USART_0].recvBuffer[g_Uart[USART_0].recvLen]);
|
|||
|
|
g_Uart[USART_0].recvLen += i;
|
|||
|
|
g_Uart[USART_0].recvIdleTiming = SysTick_1ms;
|
|||
|
|
g_Uart[USART_0].recvFlag = 0x01;
|
|||
|
|
break;
|
|||
|
|
case UART_II_THR_EMPTY: //<2F><><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>գ<EFBFBD><D5A3>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
break;
|
|||
|
|
case UART_II_MODEM_CHG: //ֻ֧<D6BB>ִ<EFBFBD><D6B4><EFBFBD>0
|
|||
|
|
break;
|
|||
|
|
default:
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*******************************************************************************
|
|||
|
|
* Function Name : UART0_RECEIVE
|
|||
|
|
* Description : <EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><EFBFBD><EFBFBD>մ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* Return : None
|
|||
|
|
*******************************************************************************/
|
|||
|
|
void UART0_RECEIVE(void)
|
|||
|
|
{
|
|||
|
|
uint16_t i = 0;
|
|||
|
|
if(g_Uart[USART_0].recvFlag == 1)
|
|||
|
|
{
|
|||
|
|
if(SysTick_1ms - g_Uart[USART_0].recvIdleTiming > g_Uart[USART_0].recvTimeout)
|
|||
|
|
{
|
|||
|
|
g_Uart[USART_0].recvIdleTiming = SysTick_1ms;
|
|||
|
|
/*<2A>ж<EFBFBD>RX FIFO<46><4F><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
|||
|
|
if(UART0_GetLinSTA() & 0x01)
|
|||
|
|
{
|
|||
|
|
i = R8_UART0_RFC;
|
|||
|
|
if((g_Uart[USART_0].recvLen + i) >= UART_BUFFER_SIZE) g_Uart[USART_0].recvLen = 0;
|
|||
|
|
i = UART0_RecvString(&g_Uart[USART_0].recvBuffer[g_Uart[USART_0].recvLen]);
|
|||
|
|
g_Uart[USART_0].recvLen += i;
|
|||
|
|
return ;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
g_Uart[USART_0].recvFlag = 0;
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD>SRAM<41><4D><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD>ݽ<EFBFBD><DDBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷд<CDB7><D0B4><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
|
|||
|
|
SRAM_Write_Byte((uint8_t)(g_Uart[USART_0].recvLen & 0xFF),g_Uart[USART_0].RX_Buffer_WriteAddr);
|
|||
|
|
SRAM_Write_Byte((uint8_t)((g_Uart[USART_0].recvLen >> 8) & 0xFF),g_Uart[USART_0].RX_Buffer_WriteAddr+1);
|
|||
|
|
SRAM_Write_Buff(g_Uart[USART_0].recvBuffer,g_Uart[USART_0].recvLen,g_Uart[USART_0].RX_Buffer_WriteAddr+2);
|
|||
|
|
|
|||
|
|
g_Uart[USART_0].RX_Buffer_WriteAddr += SRAM_Uart_Buffer_Size;
|
|||
|
|
if(g_Uart[USART_0].RX_Buffer_WriteAddr > SRAM_UART0_RecvBuffer_End_Addr) g_Uart[USART_0].RX_Buffer_WriteAddr = SRAM_UART0_RecvBuffer_Start_Addr;
|
|||
|
|
g_Uart[USART_0].recvLen = 0;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*******************************************************************************
|
|||
|
|
* Function Name : Uart3_RecvString_To_SRAM
|
|||
|
|
* Description : <EFBFBD><EFBFBD><EFBFBD><EFBFBD>3 - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD>SRAM<EFBFBD><EFBFBD><EFBFBD>շ<EFBFBD><EFBFBD>ͻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* Return : None
|
|||
|
|
*******************************************************************************/
|
|||
|
|
uint16_t Uart1_RecvString_To_SRAM(uint32_t addr)
|
|||
|
|
{
|
|||
|
|
uint32_t w_addr = addr;
|
|||
|
|
uint16_t len = 0;
|
|||
|
|
uint8_t data = 0;
|
|||
|
|
|
|||
|
|
while( R8_UART1_RFC )
|
|||
|
|
{
|
|||
|
|
data = R8_UART1_RBR;
|
|||
|
|
SRAM_Write_Byte(data,w_addr);
|
|||
|
|
w_addr++;
|
|||
|
|
len ++;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return (len);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*******************************************************************************
|
|||
|
|
* Function Name : UART1_IRQHandler
|
|||
|
|
* Description : <EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD>жϷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* Return : None
|
|||
|
|
*******************************************************************************/
|
|||
|
|
void UART1_IRQHandler(void)
|
|||
|
|
{
|
|||
|
|
uint16_t i = 0;
|
|||
|
|
switch( UART1_GetITFlag() )
|
|||
|
|
{
|
|||
|
|
case UART_II_LINE_STAT: //<2F><>·״̬<D7B4><CCAC><EFBFBD><EFBFBD>
|
|||
|
|
UART1_GetLinSTA();
|
|||
|
|
break;
|
|||
|
|
case UART_II_RECV_RDY: //<2F><><EFBFBD>ݴﵽ<DDB4><EFB5BD><EFBFBD>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
case UART_II_RECV_TOUT: //<2F><><EFBFBD>ճ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ʱһ֡<D2BB><D6A1><EFBFBD>ݽ<EFBFBD><DDBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
i = R8_UART1_RFC;
|
|||
|
|
if((g_Uart[USART_1].recvLen + i) >= UART_BUFFER_SIZE) g_Uart[USART_1].recvLen = 0;
|
|||
|
|
i = UART1_RecvString(&g_Uart[USART_1].recvBuffer[g_Uart[USART_1].recvLen]);
|
|||
|
|
g_Uart[USART_1].recvLen += i;
|
|||
|
|
g_Uart[USART_1].recvIdleTiming = SysTick_1ms;
|
|||
|
|
g_Uart[USART_1].recvFlag = 0x01;
|
|||
|
|
break;
|
|||
|
|
case UART_II_THR_EMPTY: //<2F><><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>գ<EFBFBD><D5A3>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
break;
|
|||
|
|
case UART_II_MODEM_CHG: //ֻ֧<D6BB>ִ<EFBFBD><D6B4><EFBFBD>0
|
|||
|
|
break;
|
|||
|
|
default:
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*******************************************************************************
|
|||
|
|
* Function Name : UART1_RECEIVE
|
|||
|
|
* Description : <EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><EFBFBD><EFBFBD>մ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* Return : None
|
|||
|
|
*******************************************************************************/
|
|||
|
|
void UART1_RECEIVE(void)
|
|||
|
|
{
|
|||
|
|
uint16_t i = 0;
|
|||
|
|
if(g_Uart[USART_1].recvFlag == 0x01)
|
|||
|
|
{
|
|||
|
|
if(SysTick_1ms - g_Uart[USART_1].recvIdleTiming > g_Uart[USART_1].recvTimeout)
|
|||
|
|
{
|
|||
|
|
g_Uart[USART_1].recvIdleTiming = SysTick_1ms;
|
|||
|
|
/*<2A>ж<EFBFBD>RX FIFO<46><4F><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
|||
|
|
if(UART1_GetLinSTA() & 0x01)
|
|||
|
|
{
|
|||
|
|
i = R8_UART1_RFC;
|
|||
|
|
if((g_Uart[USART_1].recvLen + i) >= UART_BUFFER_SIZE) g_Uart[USART_1].recvLen = 0;
|
|||
|
|
i = UART1_RecvString(&g_Uart[USART_1].recvBuffer[g_Uart[USART_1].recvLen]);
|
|||
|
|
g_Uart[USART_1].recvLen += i;
|
|||
|
|
return ;
|
|||
|
|
}
|
|||
|
|
g_Uart[USART_1].recvFlag = 0;
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD>SRAM<41><4D><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD>ݽ<EFBFBD><DDBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷд<CDB7><D0B4><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
|
|||
|
|
SRAM_Write_Byte((uint8_t)(g_Uart[USART_1].recvLen & 0xFF),g_Uart[USART_1].RX_Buffer_WriteAddr);
|
|||
|
|
SRAM_Write_Byte((uint8_t)((g_Uart[USART_1].recvLen >> 8) & 0xFF),g_Uart[USART_1].RX_Buffer_WriteAddr+1);
|
|||
|
|
SRAM_Write_Buff(g_Uart[USART_1].recvBuffer,g_Uart[USART_1].recvLen,g_Uart[USART_1].RX_Buffer_WriteAddr+2);
|
|||
|
|
|
|||
|
|
g_Uart[USART_1].RX_Buffer_WriteAddr += SRAM_Uart_Buffer_Size;
|
|||
|
|
if(g_Uart[USART_1].RX_Buffer_WriteAddr > SRAM_UART1_RecvBuffer_End_Addr) g_Uart[USART_1].RX_Buffer_WriteAddr = SRAM_UART1_RecvBuffer_Start_Addr;
|
|||
|
|
g_Uart[USART_1].recvLen = 0;
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*******************************************************************************
|
|||
|
|
* Function Name : Uart3_RecvString_To_SRAM
|
|||
|
|
* Description : <EFBFBD><EFBFBD><EFBFBD><EFBFBD>3 - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD>SRAM<EFBFBD><EFBFBD><EFBFBD>շ<EFBFBD><EFBFBD>ͻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* Return : None
|
|||
|
|
*******************************************************************************/
|
|||
|
|
uint16_t Uart2_RecvString_To_SRAM(uint32_t addr)
|
|||
|
|
{
|
|||
|
|
uint32_t w_addr = addr;
|
|||
|
|
uint16_t len = 0;
|
|||
|
|
uint8_t data = 0;
|
|||
|
|
|
|||
|
|
while( R8_UART2_RFC )
|
|||
|
|
{
|
|||
|
|
data = R8_UART2_RBR;
|
|||
|
|
SRAM_Write_Byte(data,w_addr);
|
|||
|
|
w_addr++;
|
|||
|
|
len ++;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return (len);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*******************************************************************************
|
|||
|
|
* Function Name : UART2_IRQHandler
|
|||
|
|
* Description : <EFBFBD><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD>жϷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* Return : None
|
|||
|
|
*******************************************************************************/
|
|||
|
|
void UART2_IRQHandler(void)
|
|||
|
|
{
|
|||
|
|
uint16_t i = 0;
|
|||
|
|
switch( UART2_GetITFlag() )
|
|||
|
|
{
|
|||
|
|
case UART_II_LINE_STAT: //<2F><>·״̬<D7B4><CCAC><EFBFBD><EFBFBD>
|
|||
|
|
UART2_GetLinSTA();
|
|||
|
|
break;
|
|||
|
|
case UART_II_RECV_RDY: //<2F><><EFBFBD>ݴﵽ<DDB4><EFB5BD><EFBFBD>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
case UART_II_RECV_TOUT: //<2F><><EFBFBD>ճ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ʱһ֡<D2BB><D6A1><EFBFBD>ݽ<EFBFBD><DDBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
i = R8_UART2_RFC; //<2F><>ȡFIFO<46>г<EFBFBD><D0B3><EFBFBD>
|
|||
|
|
if((g_Uart[USART_2].recvLen + i) >= UART_BUFFER_SIZE) g_Uart[USART_2].recvLen = 0;
|
|||
|
|
i = UART2_RecvString(&g_Uart[USART_2].recvBuffer[g_Uart[USART_2].recvLen]);
|
|||
|
|
g_Uart[USART_2].recvLen += i;
|
|||
|
|
g_Uart[USART_2].recvIdleTiming = SysTick_1ms;
|
|||
|
|
g_Uart[USART_2].recvFlag = 0x01;
|
|||
|
|
break;
|
|||
|
|
case UART_II_THR_EMPTY: //<2F><><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>գ<EFBFBD><D5A3>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
break;
|
|||
|
|
case UART_II_MODEM_CHG: //ֻ֧<D6BB>ִ<EFBFBD><D6B4><EFBFBD>0
|
|||
|
|
break;
|
|||
|
|
default:
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*******************************************************************************
|
|||
|
|
* Function Name : UART2_RECEIVE
|
|||
|
|
* Description : <EFBFBD><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD><EFBFBD><EFBFBD>մ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* Return : None
|
|||
|
|
*******************************************************************************/
|
|||
|
|
void UART2_RECEIVE(void)
|
|||
|
|
{
|
|||
|
|
uint16_t i = 0;
|
|||
|
|
if(g_Uart[USART_2].recvFlag == 0x01)
|
|||
|
|
{
|
|||
|
|
if(SysTick_1ms - g_Uart[USART_2].recvIdleTiming > g_Uart[USART_2].recvTimeout)
|
|||
|
|
{
|
|||
|
|
g_Uart[USART_2].recvIdleTiming = SysTick_1ms;
|
|||
|
|
/*<2A>ж<EFBFBD>RX FIFO<46><4F><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
|||
|
|
if(UART2_GetLinSTA() & 0x01)
|
|||
|
|
{
|
|||
|
|
i = R8_UART2_RFC; //<2F><>ȡFIFO<46>г<EFBFBD><D0B3><EFBFBD>
|
|||
|
|
if((g_Uart[USART_2].recvLen + i) >= UART_BUFFER_SIZE) g_Uart[USART_2].recvLen = 0;
|
|||
|
|
i = UART2_RecvString(&g_Uart[USART_2].recvBuffer[g_Uart[USART_2].recvLen]);
|
|||
|
|
g_Uart[USART_2].recvLen += i;
|
|||
|
|
return ;
|
|||
|
|
}
|
|||
|
|
g_Uart[USART_2].recvFlag = 0;
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD>SRAM<41><4D><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD>ݽ<EFBFBD><DDBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷд<CDB7><D0B4><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
|
|||
|
|
SRAM_Write_Byte((uint8_t)(g_Uart[USART_2].recvLen & 0xFF),g_Uart[USART_2].RX_Buffer_WriteAddr);
|
|||
|
|
SRAM_Write_Byte((uint8_t)((g_Uart[USART_2].recvLen >> 8) & 0xFF),g_Uart[USART_2].RX_Buffer_WriteAddr+1);
|
|||
|
|
SRAM_Write_Buff(g_Uart[USART_2].recvBuffer,g_Uart[USART_2].recvLen,g_Uart[USART_2].RX_Buffer_WriteAddr+2);
|
|||
|
|
|
|||
|
|
g_Uart[USART_2].RX_Buffer_WriteAddr += SRAM_Uart_Buffer_Size;
|
|||
|
|
if(g_Uart[USART_2].RX_Buffer_WriteAddr > SRAM_UART2_RecvBuffer_End_Addr) g_Uart[USART_2].RX_Buffer_WriteAddr = SRAM_UART2_RecvBuffer_Start_Addr;
|
|||
|
|
g_Uart[USART_2].recvLen = 0;
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*******************************************************************************
|
|||
|
|
* Function Name : Uart3_RecvString_To_SRAM
|
|||
|
|
* Description : <EFBFBD><EFBFBD><EFBFBD><EFBFBD>3 - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD>SRAM<EFBFBD><EFBFBD><EFBFBD>շ<EFBFBD><EFBFBD>ͻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* Return : None
|
|||
|
|
*******************************************************************************/
|
|||
|
|
uint16_t Uart3_RecvString_To_SRAM(uint32_t addr)
|
|||
|
|
{
|
|||
|
|
uint32_t w_addr = addr;
|
|||
|
|
uint16_t len = 0;
|
|||
|
|
uint8_t data = 0;
|
|||
|
|
|
|||
|
|
while( R8_UART3_RFC )
|
|||
|
|
{
|
|||
|
|
data = R8_UART3_RBR;
|
|||
|
|
SRAM_Write_Byte(data,w_addr);
|
|||
|
|
w_addr++;
|
|||
|
|
len ++;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return (len);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*******************************************************************************
|
|||
|
|
* Function Name : UART3_IRQHandler
|
|||
|
|
* Description : <EFBFBD><EFBFBD><EFBFBD><EFBFBD>3<EFBFBD>жϷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* Return : None
|
|||
|
|
*******************************************************************************/
|
|||
|
|
void UART3_IRQHandler(void)
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
uint16_t i = 0;
|
|||
|
|
switch( UART3_GetITFlag() )
|
|||
|
|
{
|
|||
|
|
case UART_II_LINE_STAT: //<2F><>·״̬<D7B4><CCAC><EFBFBD><EFBFBD>
|
|||
|
|
UART3_GetLinSTA();
|
|||
|
|
break;
|
|||
|
|
case UART_II_RECV_RDY: //<2F><><EFBFBD>ݴﵽ<DDB4><EFB5BD><EFBFBD>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
case UART_II_RECV_TOUT: //<2F><><EFBFBD>ճ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ʱһ֡<D2BB><D6A1><EFBFBD>ݽ<EFBFBD><DDBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
i = R8_UART3_RFC; //<2F><>ȡFIFO<46>г<EFBFBD><D0B3><EFBFBD>
|
|||
|
|
if((g_Uart[USART_3].recvLen + i) >= UART_BUFFER_SIZE) g_Uart[USART_3].recvLen = 0;
|
|||
|
|
i = UART3_RecvString(&g_Uart[USART_3].recvBuffer[g_Uart[USART_3].recvLen]);
|
|||
|
|
g_Uart[USART_3].recvLen += i;
|
|||
|
|
g_Uart[USART_3].recvIdleTiming = SysTick_1ms;
|
|||
|
|
g_Uart[USART_3].recvFlag = 0x01;
|
|||
|
|
break;
|
|||
|
|
case UART_II_THR_EMPTY: //<2F><><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>գ<EFBFBD><D5A3>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
break;
|
|||
|
|
case UART_II_MODEM_CHG: //ֻ֧<D6BB>ִ<EFBFBD><D6B4><EFBFBD>0
|
|||
|
|
break;
|
|||
|
|
default:
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*******************************************************************************
|
|||
|
|
* Function Name : UART3_RECEIVE
|
|||
|
|
* Description : <EFBFBD><EFBFBD><EFBFBD><EFBFBD>3<EFBFBD><EFBFBD><EFBFBD>մ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* Return : None
|
|||
|
|
*******************************************************************************/
|
|||
|
|
void UART3_RECEIVE(void)
|
|||
|
|
{
|
|||
|
|
uint16_t i = 0;
|
|||
|
|
if(g_Uart[USART_3].recvFlag == 0x01)
|
|||
|
|
{
|
|||
|
|
if(SysTick_1ms - g_Uart[USART_3].recvIdleTiming > g_Uart[USART_3].recvTimeout)
|
|||
|
|
{
|
|||
|
|
g_Uart[USART_3].recvIdleTiming = SysTick_1ms;
|
|||
|
|
|
|||
|
|
/*<2A>ж<EFBFBD>RX FIFO<46><4F><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
|||
|
|
if(UART3_GetLinSTA() & 0x01)
|
|||
|
|
{
|
|||
|
|
i = R8_UART3_RFC; //<2F><>ȡFIFO<46>г<EFBFBD><D0B3><EFBFBD>
|
|||
|
|
if((g_Uart[USART_3].recvLen + i) >= UART_BUFFER_SIZE) g_Uart[USART_3].recvLen = 0;
|
|||
|
|
i = UART3_RecvString(&g_Uart[USART_3].recvBuffer[g_Uart[USART_3].recvLen]);
|
|||
|
|
g_Uart[USART_3].recvLen += i;
|
|||
|
|
}
|
|||
|
|
g_Uart[USART_3].recvFlag = 0;
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD>SRAM<41><4D><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD>ݽ<EFBFBD><DDBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷд<CDB7><D0B4><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
|
|||
|
|
SRAM_Write_Byte((uint8_t)(g_Uart[USART_3].recvLen & 0xFF),g_Uart[USART_3].RX_Buffer_WriteAddr);
|
|||
|
|
SRAM_Write_Byte((uint8_t)((g_Uart[USART_3].recvLen >> 8) & 0xFF),g_Uart[USART_3].RX_Buffer_WriteAddr+1);
|
|||
|
|
SRAM_Write_Buff(g_Uart[USART_3].recvBuffer,g_Uart[USART_3].recvLen,g_Uart[USART_3].RX_Buffer_WriteAddr+2);
|
|||
|
|
|
|||
|
|
g_Uart[USART_3].RX_Buffer_WriteAddr += SRAM_Uart_Buffer_Size;
|
|||
|
|
if(g_Uart[USART_3].RX_Buffer_WriteAddr > SRAM_UART3_RecvBuffer_End_Addr) g_Uart[USART_3].RX_Buffer_WriteAddr = SRAM_UART3_RecvBuffer_Start_Addr;
|
|||
|
|
g_Uart[USART_3].recvLen = 0;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*******************************************************************************
|
|||
|
|
* Function Name : Uart_Search_Cmd
|
|||
|
|
* Description : <EFBFBD><EFBFBD><EFBFBD>ڽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* Input : buff - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
len - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* Return : None
|
|||
|
|
*******************************************************************************/
|
|||
|
|
uint8_t Uart_Search_Cmd(uint8_t *buff,uint8_t len)
|
|||
|
|
{
|
|||
|
|
char Boot_cmd[10] = "Search:1";
|
|||
|
|
|
|||
|
|
uint8_t rev = 0;
|
|||
|
|
|
|||
|
|
if((buff[len - 1] == 0x0A) && (buff[len - 2] == 0x0D))
|
|||
|
|
{
|
|||
|
|
for(int i =0;i<len-2;i++)
|
|||
|
|
{
|
|||
|
|
if(buff[i] != Boot_cmd[i])
|
|||
|
|
{
|
|||
|
|
rev++;
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}else{
|
|||
|
|
rev++;
|
|||
|
|
}
|
|||
|
|
return rev;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*******************************************************************************
|
|||
|
|
* Function Name : Uart_Search_Cmd
|
|||
|
|
* Description : <EFBFBD><EFBFBD><EFBFBD>ڽ<EFBFBD><EFBFBD>մ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* Input : buff - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
len - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* Return : None
|
|||
|
|
*******************************************************************************/
|
|||
|
|
uint8_t Uart_Jump_Cmd(uint8_t *buff,uint8_t len)
|
|||
|
|
{
|
|||
|
|
char Boot_cmd[10] = "Jump:1";
|
|||
|
|
|
|||
|
|
uint8_t rev = 0;
|
|||
|
|
|
|||
|
|
if((buff[len - 1] == 0x0A) && (buff[len - 2] == 0x0D))
|
|||
|
|
{
|
|||
|
|
for(int i =0;i<len-2;i++)
|
|||
|
|
{
|
|||
|
|
if(buff[i] != Boot_cmd[i])
|
|||
|
|
{
|
|||
|
|
rev++;
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}else{
|
|||
|
|
rev++;
|
|||
|
|
}
|
|||
|
|
return rev;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*******************************************************************************
|
|||
|
|
* Function Name : Uart_Search_Cmd_from_SRAM
|
|||
|
|
* Description : <EFBFBD><EFBFBD><EFBFBD>ڽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* Input : addr - SRAM<EFBFBD><EFBFBD>ַ
|
|||
|
|
len - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* Return : None
|
|||
|
|
*******************************************************************************/
|
|||
|
|
uint8_t Uart_Search_Cmd_from_SRAM(uint32_t addr, uint8_t len)
|
|||
|
|
{
|
|||
|
|
char Boot_cmd[10] = "Search:1";
|
|||
|
|
|
|||
|
|
uint8_t rev = 0;
|
|||
|
|
|
|||
|
|
if((len-2) > 8) return 0xFF;
|
|||
|
|
|
|||
|
|
uint8_t* buff = malloc(len);
|
|||
|
|
if(buff == NULL) return 0xFF;
|
|||
|
|
|
|||
|
|
SRAM_Read_Buff(buff, len, addr);
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
if((buff[len - 1] == 0x0A) && (buff[len - 2] == 0x0D))
|
|||
|
|
{
|
|||
|
|
for(int i =0;i<len-2;i++)
|
|||
|
|
{
|
|||
|
|
if(buff[i] != Boot_cmd[i])
|
|||
|
|
{
|
|||
|
|
rev++;
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}else{
|
|||
|
|
rev++;
|
|||
|
|
}
|
|||
|
|
free(buff);
|
|||
|
|
return rev;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*******************************************************************************
|
|||
|
|
* Function Name : Uart_Jump_Cmd_from_SRAM
|
|||
|
|
* Description : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת
|
|||
|
|
* Input : addr - SRAM<EFBFBD><EFBFBD>ַ
|
|||
|
|
len - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* Return : None
|
|||
|
|
*******************************************************************************/
|
|||
|
|
uint8_t Uart_Jump_Cmd_from_SRAM(uint32_t addr, uint8_t len)
|
|||
|
|
{
|
|||
|
|
char Boot_cmd[10] = "Jump:1";
|
|||
|
|
|
|||
|
|
uint8_t rev = 0;
|
|||
|
|
|
|||
|
|
if((len-2) > 6) return 0xFF;
|
|||
|
|
|
|||
|
|
uint8_t* buff = malloc(len);
|
|||
|
|
if(buff == NULL) return 0xFF;
|
|||
|
|
|
|||
|
|
SRAM_Read_Buff(buff, len, addr);
|
|||
|
|
|
|||
|
|
if((buff[len - 1] == 0x0A) && (buff[len - 2] == 0x0D))
|
|||
|
|
{
|
|||
|
|
for(int i =0;i<len-2;i++)
|
|||
|
|
{
|
|||
|
|
if(buff[i] != Boot_cmd[i])
|
|||
|
|
{
|
|||
|
|
rev++;
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}else{
|
|||
|
|
rev++;
|
|||
|
|
}
|
|||
|
|
free(buff);
|
|||
|
|
return rev;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*******************************************************************************
|
|||
|
|
* Function Name : Uart0_Flush
|
|||
|
|
* Description : <EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD>ȴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* Input : over_time -- <EFBFBD>ȴ<EFBFBD><EFBFBD><EFBFBD>ʱʱ<EFBFBD><EFBFBD>
|
|||
|
|
* Return : None
|
|||
|
|
*******************************************************************************/
|
|||
|
|
void Uart0_Flush(uint16_t over_time)
|
|||
|
|
{
|
|||
|
|
uint16_t delay_num = 0;
|
|||
|
|
|
|||
|
|
//<2F>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - 50ms
|
|||
|
|
while(1)
|
|||
|
|
{
|
|||
|
|
WDT_Feed(); //<2F><>ֹ<EFBFBD><D6B9><EFBFBD>Ź<EFBFBD><C5B9><EFBFBD>λ
|
|||
|
|
if((Uart0_GetStart() & 0x40) && (R8_UART0_TFC == 0x00)) break; //<2F>жϷ<D0B6><CFB7><EFBFBD>FIFOΪ<4F><CEAA>,ͬʱFIFO<46><4F><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>
|
|||
|
|
DelayUs(100);
|
|||
|
|
delay_num++;
|
|||
|
|
if(delay_num > 500) break;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*******************************************************************************
|
|||
|
|
* Function Name : Uart0_Flush
|
|||
|
|
* Description : <EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD>ȴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* Input : over_time -- <EFBFBD>ȴ<EFBFBD><EFBFBD><EFBFBD>ʱʱ<EFBFBD><EFBFBD>
|
|||
|
|
* Return : None
|
|||
|
|
*******************************************************************************/
|
|||
|
|
void Uart1_Flush(uint16_t over_time)
|
|||
|
|
{
|
|||
|
|
uint16_t delay_num = 0;
|
|||
|
|
|
|||
|
|
//<2F>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - 50ms
|
|||
|
|
while(1)
|
|||
|
|
{
|
|||
|
|
if((Uart1_GetStart() & 0x40) && (R8_UART1_TFC == 0x00)) break; //<2F>жϷ<D0B6><CFB7><EFBFBD>FIFOΪ<4F><CEAA>,ͬʱFIFO<46><4F><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>
|
|||
|
|
DelayUs(100);
|
|||
|
|
delay_num++;
|
|||
|
|
if(delay_num > 500) break;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*******************************************************************************
|
|||
|
|
* Function Name : Uart0_Flush
|
|||
|
|
* Description : <EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD>ȴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* Input : over_time -- <EFBFBD>ȴ<EFBFBD><EFBFBD><EFBFBD>ʱʱ<EFBFBD><EFBFBD>
|
|||
|
|
* Return : None
|
|||
|
|
*******************************************************************************/
|
|||
|
|
void Uart2_Flush(uint16_t over_time)
|
|||
|
|
{
|
|||
|
|
uint16_t delay_num = 0;
|
|||
|
|
|
|||
|
|
//<2F>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - 50ms
|
|||
|
|
while(1)
|
|||
|
|
{
|
|||
|
|
if((Uart2_GetStart() & 0x40) && (R8_UART2_TFC == 0x00)) break; //<2F>жϷ<D0B6><CFB7><EFBFBD>FIFOΪ<4F><CEAA>,ͬʱFIFO<46><4F><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>
|
|||
|
|
DelayUs(100);
|
|||
|
|
delay_num++;
|
|||
|
|
if(delay_num > 500) break;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*******************************************************************************
|
|||
|
|
* Function Name : Uart0_Flush
|
|||
|
|
* Description : <EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD>ȴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* Input : over_time -- <EFBFBD>ȴ<EFBFBD><EFBFBD><EFBFBD>ʱʱ<EFBFBD><EFBFBD>
|
|||
|
|
* Return : None
|
|||
|
|
*******************************************************************************/
|
|||
|
|
void Uart3_Flush(uint16_t over_time)
|
|||
|
|
{
|
|||
|
|
uint16_t delay_num = 0;
|
|||
|
|
|
|||
|
|
//<2F>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - 50ms
|
|||
|
|
while(1)
|
|||
|
|
{
|
|||
|
|
if((Uart3_GetStart() & 0x40) && (R8_UART3_TFC == 0x00)) break; //<2F>жϷ<D0B6><CFB7><EFBFBD>FIFOΪ<4F><CEAA>,ͬʱFIFO<46><4F><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>
|
|||
|
|
DelayUs(100);
|
|||
|
|
delay_num++;
|
|||
|
|
if(delay_num > 500) break;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*******************************************************************************
|
|||
|
|
* Function Name : Uart2_RECEIVE_Process
|
|||
|
|
* Description : <EFBFBD><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD><EFBFBD><EFBFBD>մ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* Return : None
|
|||
|
|
*******************************************************************************/
|
|||
|
|
void Uart2_RECEIVE_Process(void)
|
|||
|
|
{
|
|||
|
|
if(Uart_Search_Cmd(g_Uart[USART_2].recvBuffer,g_Uart[USART_2].recvLen) == 0x00)
|
|||
|
|
{
|
|||
|
|
UART2_SendString((uint8_t *)"Search:0\r\nBLV_C1\r\n",16);
|
|||
|
|
}
|
|||
|
|
else if(Uart_Jump_Cmd(g_Uart[USART_2].recvBuffer,g_Uart[USART_2].recvLen) == 0x00)
|
|||
|
|
{
|
|||
|
|
UART2_SendString((uint8_t *)"Jump:0\r\nBLV_C1\r\n",14);
|
|||
|
|
Uart2_Flush(500);
|
|||
|
|
SYS_ResetExecute();
|
|||
|
|
Dbg_Println(DBG_BIT_SYS_STATUS_bit,"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ");
|
|||
|
|
LOG_LogicInfo_DebugRecord("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ");
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
g_Uart[USART_2].recvLen = 0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
/*******************************************************************************
|
|||
|
|
* Function Name : Uart_SendString
|
|||
|
|
* Description : <EFBFBD><EFBFBD><EFBFBD>ڷ<EFBFBD><EFBFBD>ͺ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* Input : uart_id - <EFBFBD><EFBFBD><EFBFBD>͵Ĵ<EFBFBD><EFBFBD>ں<EFBFBD>
|
|||
|
|
buff - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
len -- <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* Return : None
|
|||
|
|
*******************************************************************************/
|
|||
|
|
void Uart_SendString(uint8_t uart_id,uint8_t* buff,uint16_t len)
|
|||
|
|
{
|
|||
|
|
switch(uart_id)
|
|||
|
|
{
|
|||
|
|
case USART_0:
|
|||
|
|
UART0_SendString(buff,len);
|
|||
|
|
break;
|
|||
|
|
case USART_1:
|
|||
|
|
UART1_SendString(buff,len);
|
|||
|
|
break;
|
|||
|
|
case USART_2:
|
|||
|
|
UART2_SendString(buff,len);
|
|||
|
|
break;
|
|||
|
|
case USART_3:
|
|||
|
|
UART3_SendString(buff,len);
|
|||
|
|
break;
|
|||
|
|
default:
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*******************************************************************************
|
|||
|
|
* Function Name : MCU485_SendString
|
|||
|
|
* Description : 485<EFBFBD><EFBFBD><EFBFBD>ͺ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* Input : uart_id - <EFBFBD><EFBFBD><EFBFBD>͵Ĵ<EFBFBD><EFBFBD>ں<EFBFBD>
|
|||
|
|
buff - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
len -- <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* Return : None
|
|||
|
|
*******************************************************************************/
|
|||
|
|
void MCU485_SendString(uint8_t uart_id,uint8_t* buff,uint16_t len)
|
|||
|
|
{
|
|||
|
|
switch(uart_id)
|
|||
|
|
{
|
|||
|
|
case USART_1:
|
|||
|
|
if(Poll485_Info.port_mode == Port_Monitoring_mode ) //<2F><>ѯ<EFBFBD>˿<EFBFBD>
|
|||
|
|
{
|
|||
|
|
Udp_Internal_SeriaNet_Uploading2(Polling_Port,Poll485_Info.baud,buff,len);
|
|||
|
|
}
|
|||
|
|
#if (USE_CORE_TYPE == 1) //ʹ<><CAB9>C1F<31><46><EFBFBD>İ<EFBFBD>
|
|||
|
|
MCU485_SendString_0(buff,len);
|
|||
|
|
#elif (USE_CORE_TYPE == 2) //ʹ<><CAB9>C1<43><31><EFBFBD>İ<EFBFBD>
|
|||
|
|
MCU485_SendString_1(buff,len);
|
|||
|
|
#endif //USE_CORE_TYPE == CORE_TYPE_C1F
|
|||
|
|
|
|||
|
|
break;
|
|||
|
|
case USART_2:
|
|||
|
|
if(Act485_Info.port_mode == Port_Monitoring_mode ) //<2F><>ѯ<EFBFBD>˿<EFBFBD>
|
|||
|
|
{
|
|||
|
|
Udp_Internal_SeriaNet_Uploading2(Active_Port,Act485_Info.baud,buff,len);
|
|||
|
|
}
|
|||
|
|
MCU485_SendString_2(buff,len);
|
|||
|
|
break;
|
|||
|
|
case USART_3:
|
|||
|
|
if(BUS485_Info.port_mode == Port_Monitoring_mode ) //<2F><>ѯ<EFBFBD>˿<EFBFBD>
|
|||
|
|
{
|
|||
|
|
Udp_Internal_SeriaNet_Uploading2(Bus_port,BUS485_Info.baud,buff,len);
|
|||
|
|
}
|
|||
|
|
MCU485_SendString_3(buff,len);
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*******************************************************************************
|
|||
|
|
* Function Name : MCU485_SendString
|
|||
|
|
* Description : 485<EFBFBD><EFBFBD><EFBFBD>ͺ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* Input : uart_id - <EFBFBD><EFBFBD><EFBFBD>͵Ĵ<EFBFBD><EFBFBD>ں<EFBFBD>
|
|||
|
|
data_addr - SRAM<EFBFBD>з<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>ַ
|
|||
|
|
len -- <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* Return : None
|
|||
|
|
*******************************************************************************/
|
|||
|
|
void MCU485_SendSRAMData(uint8_t uart_id,uint32_t data_addr,uint16_t len)
|
|||
|
|
{
|
|||
|
|
uint16_t buff_len = len;
|
|||
|
|
uint8_t send_buff[buff_len];
|
|||
|
|
|
|||
|
|
memset(send_buff,0,sizeof(send_buff));
|
|||
|
|
|
|||
|
|
SRAM_DMA_Read_Buff(send_buff,buff_len,data_addr); //<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
MCU485_SendString(uart_id,send_buff,buff_len);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
/*******************************************************************************
|
|||
|
|
* Function Name : Write_Uart_SendBuff
|
|||
|
|
* Description : дuart<EFBFBD><EFBFBD><EFBFBD>ͻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* Input : uart_id - <EFBFBD><EFBFBD><EFBFBD>͵Ĵ<EFBFBD><EFBFBD>ں<EFBFBD>
|
|||
|
|
uart_baud - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
buff - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
len -- <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
*******************************************************************************/
|
|||
|
|
void Write_Uart_SendBuff(uint8_t uart_id,uint8_t uart_outime,uint8_t* buff,uint16_t len)
|
|||
|
|
{
|
|||
|
|
switch(uart_id)
|
|||
|
|
{
|
|||
|
|
case Polling_Port: //<2F><>ѯ
|
|||
|
|
uart_id = USART_0;
|
|||
|
|
break;
|
|||
|
|
case Active_Port: //<2F><><EFBFBD><EFBFBD>
|
|||
|
|
uart_id = USART_2;
|
|||
|
|
break;
|
|||
|
|
case Bus_port: //bus<75><73><EFBFBD><EFBFBD>
|
|||
|
|
uart_id = USART_3;
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
switch(uart_id)
|
|||
|
|
{
|
|||
|
|
case USART_0:
|
|||
|
|
/*<2A><><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>*/
|
|||
|
|
SRAM_Write_Word(len,g_Uart[USART_0].TX_Buffer_WriteAddr);
|
|||
|
|
|
|||
|
|
/*<2A><><EFBFBD>ݷ<EFBFBD><DDB7><EFBFBD> - <20>ȴ<EFBFBD><C8B4>ظ<EFBFBD>ʱ<EFBFBD><CAB1> , <20><>λ<EFBFBD><CEBB>S*/
|
|||
|
|
SRAM_Write_Byte(uart_outime,g_Uart[USART_0].TX_Buffer_WriteAddr+2);
|
|||
|
|
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
|||
|
|
SRAM_DMA_Write_Buff(buff,len,g_Uart[USART_0].TX_Buffer_WriteAddr+3);
|
|||
|
|
|
|||
|
|
g_Uart[USART_0].TX_Buffer_WriteAddr += SRAM_Uart_Buffer_Size;
|
|||
|
|
if(g_Uart[USART_0].TX_Buffer_WriteAddr > SRAM_UART0_SendBuffer_End_Addr) g_Uart[USART_0].TX_Buffer_WriteAddr = SRAM_UART0_SendBuffer_Start_Addr;
|
|||
|
|
break;
|
|||
|
|
case USART_1:
|
|||
|
|
/*<2A><><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>*/
|
|||
|
|
SRAM_Write_Word(len,g_Uart[USART_1].TX_Buffer_WriteAddr);
|
|||
|
|
/*<2A><><EFBFBD>ݷ<EFBFBD><DDB7><EFBFBD> - <20>ȴ<EFBFBD><C8B4>ظ<EFBFBD>ʱ<EFBFBD><CAB1> , <20><>λ<EFBFBD><CEBB>S*/
|
|||
|
|
SRAM_Write_Byte(uart_outime,g_Uart[USART_1].TX_Buffer_WriteAddr+2);
|
|||
|
|
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
|||
|
|
SRAM_DMA_Write_Buff(buff,len,g_Uart[USART_1].TX_Buffer_WriteAddr+3);
|
|||
|
|
|
|||
|
|
g_Uart[USART_1].TX_Buffer_WriteAddr += SRAM_Uart_Buffer_Size;
|
|||
|
|
if(g_Uart[USART_1].TX_Buffer_WriteAddr > SRAM_UART1_SendBuffer_End_Addr) g_Uart[USART_1].TX_Buffer_WriteAddr = SRAM_UART1_SendBuffer_Start_Addr;
|
|||
|
|
break;
|
|||
|
|
case USART_2:
|
|||
|
|
/*<2A><><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>*/
|
|||
|
|
SRAM_Write_Word(len,g_Uart[USART_2].TX_Buffer_WriteAddr);
|
|||
|
|
/*<2A><><EFBFBD>ݷ<EFBFBD><DDB7><EFBFBD> - <20>ȴ<EFBFBD><C8B4>ظ<EFBFBD>ʱ<EFBFBD><CAB1> , <20><>λ<EFBFBD><CEBB>S*/
|
|||
|
|
SRAM_Write_Byte(uart_outime,g_Uart[USART_2].TX_Buffer_WriteAddr+2);
|
|||
|
|
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
|||
|
|
SRAM_DMA_Write_Buff(buff,len,g_Uart[USART_2].TX_Buffer_WriteAddr+3);
|
|||
|
|
|
|||
|
|
g_Uart[USART_2].TX_Buffer_WriteAddr += SRAM_Uart_Buffer_Size;
|
|||
|
|
if(g_Uart[USART_2].TX_Buffer_WriteAddr > SRAM_UART2_SendBuffer_End_Addr) g_Uart[USART_2].TX_Buffer_WriteAddr = SRAM_UART2_SendBuffer_Start_Addr;
|
|||
|
|
break;
|
|||
|
|
case USART_3:
|
|||
|
|
/*<2A><><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>*/
|
|||
|
|
SRAM_Write_Word(len,g_Uart[USART_3].TX_Buffer_WriteAddr);
|
|||
|
|
/*<2A><><EFBFBD>ݷ<EFBFBD><DDB7><EFBFBD> - <20>ȴ<EFBFBD><C8B4>ظ<EFBFBD>ʱ<EFBFBD><CAB1> , <20><>λ<EFBFBD><CEBB>S*/
|
|||
|
|
SRAM_Write_Byte(uart_outime,g_Uart[USART_3].TX_Buffer_WriteAddr+2);
|
|||
|
|
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
|||
|
|
SRAM_DMA_Write_Buff(buff,len,g_Uart[USART_3].TX_Buffer_WriteAddr+3);
|
|||
|
|
|
|||
|
|
g_Uart[USART_3].TX_Buffer_WriteAddr += SRAM_Uart_Buffer_Size;
|
|||
|
|
if(g_Uart[USART_3].TX_Buffer_WriteAddr > SRAM_UART3_SendBuffer_End_Addr) g_Uart[USART_3].TX_Buffer_WriteAddr = SRAM_UART3_SendBuffer_Start_Addr;
|
|||
|
|
break;
|
|||
|
|
default:
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|