761 lines
34 KiB
C
761 lines
34 KiB
C
#include "McuBspUart.h"
|
|
|
|
typedef struct {
|
|
uint8_t Enable;
|
|
uint8_t Mode;
|
|
uint32_t BandRate;
|
|
uint32_t DataBit;
|
|
uint32_t StopBit;
|
|
uint32_t CheckBit;
|
|
uint8_t Txbusy;
|
|
uint8_t Rxbusy;
|
|
} BSP_UART_OBJ;
|
|
|
|
static uint8_t gMcuBspUartRecvData0 = 0;
|
|
static uint8_t gMcuBspUartRecvData1 = 0;
|
|
static uint8_t gMcuBspUartRecvData2 = 0;
|
|
static uint8_t gMcuBspUartRecvData3 = 0;
|
|
static uint8_t gMcuBspUartRecvData4 = 0;
|
|
static uint8_t gMcuBspUartRecvData5 = 0;
|
|
static uint8_t gMcuBspUartRecvData6 = 0;
|
|
static uint8_t gMcuBspUartRecvData7 = 0;
|
|
|
|
static UART_RECV_CALLBACK gMcuBspUart0RecvCallback = NULL;
|
|
static UART_RECV_CALLBACK gMcuBspUart1RecvCallback = NULL;
|
|
static UART_RECV_CALLBACK gMcuBspUart2RecvCallback = NULL;
|
|
static UART_RECV_CALLBACK gMcuBspUart3RecvCallback = NULL;
|
|
static UART_RECV_CALLBACK gMcuBspUart4RecvCallback = NULL;
|
|
static UART_RECV_CALLBACK gMcuBspUart5RecvCallback = NULL;
|
|
static UART_RECV_CALLBACK gMcuBspUart6RecvCallback = NULL;
|
|
static UART_RECV_CALLBACK gMcuBspUart7RecvCallback = NULL;
|
|
|
|
static void McuBspUart0IntHandler(void);
|
|
static void McuBspUart1IntHandler(void);
|
|
static void McuBspUart2IntHandler(void);
|
|
static void McuBspUart3IntHandler(void);
|
|
static void McuBspUart4IntHandler(void);
|
|
static void McuBspUart5IntHandler(void);
|
|
static void McuBspUart6IntHandler(void);
|
|
static void McuBspUart7IntHandler(void);
|
|
|
|
static BSP_UART_OBJ gMcuBspUartObj[MCU_BSP_UART_ALL_NUM] = {{0, MCU_BSP_UART0_MODE, 0, 0, 0, 0, 0, 0},
|
|
{0, MCU_BSP_UART1_MODE, 0, 0, 0, 0, 0, 0},
|
|
{0, MCU_BSP_UART2_MODE, 0, 0, 0, 0, 0, 0},
|
|
{0, MCU_BSP_UART3_MODE, 0, 0, 0, 0, 0, 0},
|
|
{0, MCU_BSP_UART4_MODE, 0, 0, 0, 0, 0, 0},
|
|
{0, MCU_BSP_UART5_MODE, 0, 0, 0, 0, 0, 0},
|
|
{0, MCU_BSP_UART6_MODE, 0, 0, 0, 0, 0, 0},
|
|
{0, MCU_BSP_UART7_MODE, 0, 0, 0, 0, 0, 0}};
|
|
|
|
int McuBspUartInit(uint8_t UartId, uint32_t BandRate, uint32_t DataBit, uint32_t StopBit, uint32_t CheckBit)
|
|
{
|
|
uint32_t ui32Status;
|
|
if (UartId >= MCU_BSP_UART_ALL_NUM) {
|
|
return -1;
|
|
}
|
|
if ((BandRate != MCU_BSP_UART_BANDRATE_4800) && (BandRate != MCU_BSP_UART_BANDRATE_9600) && (BandRate != MCU_BSP_UART_BANDRATE_14400) &&
|
|
(BandRate != MCU_BSP_UART_BANDRATE_19200) && (BandRate != MCU_BSP_UART_BANDRATE_38400) && (BandRate != MCU_BSP_UART_BANDRATE_56000) &&
|
|
(BandRate != MCU_BSP_UART_BANDRATE_57600) && (BandRate != MCU_BSP_UART_BANDRATE_115200)) {
|
|
return -1;
|
|
} else {
|
|
gMcuBspUartObj[UartId].BandRate = BandRate;
|
|
}
|
|
switch (DataBit) {
|
|
case MCU_BSP_UART_DATABIT_5:
|
|
gMcuBspUartObj[UartId].DataBit = UART_CONFIG_WLEN_5;
|
|
break;
|
|
case MCU_BSP_UART_DATABIT_6:
|
|
gMcuBspUartObj[UartId].DataBit = UART_CONFIG_WLEN_6;
|
|
break;
|
|
case MCU_BSP_UART_DATABIT_7:
|
|
gMcuBspUartObj[UartId].DataBit = UART_CONFIG_WLEN_7;
|
|
break;
|
|
case MCU_BSP_UART_DATABIT_8:
|
|
gMcuBspUartObj[UartId].DataBit = UART_CONFIG_WLEN_8;
|
|
break;
|
|
default:
|
|
return -1;
|
|
}
|
|
switch (StopBit) {
|
|
case MCU_BSP_UART_STOPBIT_ONE:
|
|
gMcuBspUartObj[UartId].StopBit = UART_CONFIG_STOP_ONE;
|
|
break;
|
|
case MCU_BSP_UART_STOPBIT_TWO:
|
|
gMcuBspUartObj[UartId].StopBit = UART_CONFIG_STOP_TWO;
|
|
break;
|
|
default:
|
|
return -1;
|
|
}
|
|
switch (CheckBit) {
|
|
case MCU_BSP_UART_CHECKBIT_NONE:
|
|
gMcuBspUartObj[UartId].CheckBit = UART_CONFIG_PAR_NONE;
|
|
break;
|
|
case MCU_BSP_UART_CHECKBIT_EVEN:
|
|
gMcuBspUartObj[UartId].CheckBit = UART_CONFIG_PAR_EVEN;
|
|
break;
|
|
case MCU_BSP_UART_CHECKBIT_ODD:
|
|
gMcuBspUartObj[UartId].CheckBit = UART_CONFIG_PAR_ODD;
|
|
break;
|
|
default:
|
|
return -1;
|
|
}
|
|
while ((gMcuBspUartObj[UartId].Txbusy == MCU_BSP_UART_BUSY) ||
|
|
(gMcuBspUartObj[UartId].Rxbusy == MCU_BSP_UART_BUSY)) {
|
|
}
|
|
gMcuBspUartObj[UartId].Enable = MCU_BSP_UART_OFF;
|
|
if (UartId == MCU_BSP_UART0) {
|
|
SysCtlPeripheralEnable(SYSCTL_PERIPH_UART0);
|
|
SysCtlPeripheralEnable(MCU_BSP_UART0_RX_GPIO_CLK);
|
|
SysCtlPeripheralEnable(MCU_BSP_UART0_TX_GPIO_CLK);
|
|
GPIOPinConfigure(MCU_BSP_UART0_RX_GPIO_CONF);
|
|
GPIOPinConfigure(MCU_BSP_UART0_TX_GPIO_CONF);
|
|
GPIOPinTypeUART(MCU_BSP_UART0_RX_GPIO, MCU_BSP_UART0_RX_GPIO_PIN);
|
|
GPIOPinTypeUART(MCU_BSP_UART0_TX_GPIO, MCU_BSP_UART0_TX_GPIO_PIN);
|
|
UARTConfigSetExpClk(UART0_BASE, SysFreqGet(), gMcuBspUartObj[UartId].BandRate,
|
|
((gMcuBspUartObj[UartId].DataBit) | (gMcuBspUartObj[UartId].StopBit) |
|
|
(gMcuBspUartObj[UartId].CheckBit)));
|
|
if (gMcuBspUartObj[UartId].Mode == MCU_BSP_UART_RS485_TYPE) {
|
|
SysCtlPeripheralEnable(MCU_BSP_UART0_RS485_CTRL_GPIO_CLK);
|
|
GPIODirModeSet(MCU_BSP_UART0_RS485_CTRL_GPIO, MCU_BSP_UART0_RS485_CTRL_GPIO_PIN, GPIO_DIR_MODE_OUT);
|
|
GPIOPadConfigSet(MCU_BSP_UART0_RS485_CTRL_GPIO, MCU_BSP_UART0_RS485_CTRL_GPIO_PIN, GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_WAKE_LOW);
|
|
GPIOPinWrite(MCU_BSP_UART0_RS485_CTRL_GPIO, MCU_BSP_UART0_RS485_CTRL_GPIO_PIN, ~MCU_BSP_UART0_RS485_CTRL_GPIO_PIN);
|
|
}
|
|
BSP_IntVectSet((CPU_INT08U)BSP_INT_ID_UART0, (CPU_FNCT_VOID)McuBspUart0IntHandler);
|
|
BSP_IntEn(BSP_INT_ID_UART0);
|
|
IntEnable(INT_UART0);
|
|
IntPrioritySet(INT_UART0, 3 << 5);
|
|
UARTIntEnable(UART0_BASE, UART_INT_RX | UART_INT_RT);
|
|
ui32Status = UARTIntStatus(UART0_BASE, true);
|
|
UARTIntClear(UART0_BASE, ui32Status);
|
|
while(0 <= UARTCharGetNonBlocking(UART0_BASE));
|
|
} else if (UartId == MCU_BSP_UART1) {
|
|
SysCtlPeripheralEnable(SYSCTL_PERIPH_UART1);
|
|
SysCtlPeripheralEnable(MCU_BSP_UART1_RX_GPIO_CLK);
|
|
SysCtlPeripheralEnable(MCU_BSP_UART1_TX_GPIO_CLK);
|
|
GPIOPinConfigure(MCU_BSP_UART1_RX_GPIO_CONF);
|
|
GPIOPinConfigure(MCU_BSP_UART1_TX_GPIO_CONF);
|
|
GPIOPinTypeUART(MCU_BSP_UART1_RX_GPIO, MCU_BSP_UART1_RX_GPIO_PIN);
|
|
GPIOPinTypeUART(MCU_BSP_UART1_TX_GPIO, MCU_BSP_UART1_TX_GPIO_PIN);
|
|
UARTConfigSetExpClk(UART1_BASE, SysFreqGet(), gMcuBspUartObj[UartId].BandRate,
|
|
((gMcuBspUartObj[UartId].DataBit) | (gMcuBspUartObj[UartId].StopBit) |
|
|
(gMcuBspUartObj[UartId].CheckBit)));
|
|
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOK);
|
|
GPIODirModeSet(GPIO_PORTK_BASE, GPIO_PIN_4, GPIO_DIR_MODE_OUT);
|
|
GPIOPadConfigSet(GPIO_PORTK_BASE, GPIO_PIN_4, GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD_WPD);
|
|
if (gMcuBspUartObj[UartId].Mode == MCU_BSP_UART_RS485_TYPE) {
|
|
SysCtlPeripheralEnable(MCU_BSP_UART1_RS485_CTRL_GPIO_CLK);
|
|
GPIOPinWrite(GPIO_PORTK_BASE, GPIO_PIN_4, ~GPIO_PIN_4);
|
|
GPIODirModeSet(MCU_BSP_UART1_RS485_CTRL_GPIO, MCU_BSP_UART1_RS485_CTRL_GPIO_PIN, GPIO_DIR_MODE_OUT);
|
|
GPIOPadConfigSet(MCU_BSP_UART1_RS485_CTRL_GPIO, MCU_BSP_UART1_RS485_CTRL_GPIO_PIN, GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD_WPD);
|
|
GPIOPinWrite(MCU_BSP_UART1_RS485_CTRL_GPIO, MCU_BSP_UART1_RS485_CTRL_GPIO_PIN, ~MCU_BSP_UART1_RS485_CTRL_GPIO_PIN);
|
|
} else {
|
|
GPIOPinWrite(GPIO_PORTK_BASE, GPIO_PIN_4, GPIO_PIN_4);
|
|
}
|
|
BSP_IntVectSet((CPU_INT08U)BSP_INT_ID_UART1, (CPU_FNCT_VOID)McuBspUart1IntHandler);
|
|
BSP_IntEn(BSP_INT_ID_UART1);
|
|
IntEnable(INT_UART1);
|
|
IntPrioritySet(INT_UART1, 3 << 5);
|
|
UARTIntEnable(UART1_BASE, UART_INT_RX | UART_INT_RT);
|
|
ui32Status = UARTIntStatus(UART1_BASE, true);
|
|
UARTIntClear(UART1_BASE, ui32Status);
|
|
while(0 <= UARTCharGetNonBlocking(UART1_BASE));
|
|
} else if (UartId == MCU_BSP_UART2) {
|
|
SysCtlPeripheralEnable(SYSCTL_PERIPH_UART2);
|
|
SysCtlPeripheralEnable(MCU_BSP_UART2_RX_GPIO_CLK);
|
|
SysCtlPeripheralEnable(MCU_BSP_UART2_TX_GPIO_CLK);
|
|
GPIOPinConfigure(MCU_BSP_UART2_RX_GPIO_CONF);
|
|
GPIOPinConfigure(MCU_BSP_UART2_TX_GPIO_CONF);
|
|
GPIOPinTypeUART(MCU_BSP_UART2_RX_GPIO, MCU_BSP_UART2_RX_GPIO_PIN);
|
|
GPIOPinTypeUART(MCU_BSP_UART2_TX_GPIO, MCU_BSP_UART2_TX_GPIO_PIN);
|
|
UARTConfigSetExpClk(UART2_BASE, SysFreqGet(), gMcuBspUartObj[UartId].BandRate,
|
|
((gMcuBspUartObj[UartId].DataBit) | (gMcuBspUartObj[UartId].StopBit) |
|
|
(gMcuBspUartObj[UartId].CheckBit)));
|
|
if (gMcuBspUartObj[UartId].Mode == MCU_BSP_UART_RS485_TYPE) {
|
|
SysCtlPeripheralEnable(MCU_BSP_UART2_RS485_CTRL_GPIO_CLK);
|
|
GPIODirModeSet(MCU_BSP_UART2_RS485_CTRL_GPIO, MCU_BSP_UART2_RS485_CTRL_GPIO_PIN, GPIO_DIR_MODE_OUT);
|
|
GPIOPadConfigSet(MCU_BSP_UART2_RS485_CTRL_GPIO, MCU_BSP_UART2_RS485_CTRL_GPIO_PIN, GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD_WPD);
|
|
GPIOPinWrite(MCU_BSP_UART2_RS485_CTRL_GPIO, MCU_BSP_UART2_RS485_CTRL_GPIO_PIN, ~MCU_BSP_UART2_RS485_CTRL_GPIO_PIN);
|
|
}
|
|
BSP_IntVectSet((CPU_INT08U)BSP_INT_ID_UART2, (CPU_FNCT_VOID)McuBspUart2IntHandler);
|
|
BSP_IntEn(BSP_INT_ID_UART2);
|
|
IntEnable(INT_UART2);
|
|
IntPrioritySet(INT_UART2, 3 << 5);
|
|
UARTIntEnable(UART2_BASE, UART_INT_RX | UART_INT_RT);
|
|
ui32Status = UARTIntStatus(UART2_BASE, true);
|
|
UARTIntClear(UART2_BASE, ui32Status);
|
|
while(0 <= UARTCharGetNonBlocking(UART2_BASE));
|
|
} else if (UartId == MCU_BSP_UART3) {
|
|
SysCtlPeripheralEnable(SYSCTL_PERIPH_UART3);
|
|
SysCtlPeripheralEnable(MCU_BSP_UART3_RX_GPIO_CLK);
|
|
SysCtlPeripheralEnable(MCU_BSP_UART3_TX_GPIO_CLK);
|
|
GPIOPinConfigure(MCU_BSP_UART3_RX_GPIO_CONF);
|
|
GPIOPinConfigure(MCU_BSP_UART3_TX_GPIO_CONF);
|
|
GPIOPinTypeUART(MCU_BSP_UART3_RX_GPIO, MCU_BSP_UART3_RX_GPIO_PIN);
|
|
GPIOPinTypeUART(MCU_BSP_UART3_TX_GPIO, MCU_BSP_UART3_TX_GPIO_PIN);
|
|
UARTConfigSetExpClk(UART3_BASE, SysFreqGet(), gMcuBspUartObj[UartId].BandRate,
|
|
((gMcuBspUartObj[UartId].DataBit) | (gMcuBspUartObj[UartId].StopBit) |
|
|
(gMcuBspUartObj[UartId].CheckBit)));
|
|
if (gMcuBspUartObj[UartId].Mode == MCU_BSP_UART_RS485_TYPE) {
|
|
SysCtlPeripheralEnable(MCU_BSP_UART3_RS485_CTRL_GPIO_CLK);
|
|
GPIODirModeSet(MCU_BSP_UART3_RS485_CTRL_GPIO, MCU_BSP_UART3_RS485_CTRL_GPIO_PIN, GPIO_DIR_MODE_OUT);
|
|
GPIOPadConfigSet(MCU_BSP_UART3_RS485_CTRL_GPIO, MCU_BSP_UART3_RS485_CTRL_GPIO_PIN, GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_WAKE_LOW);
|
|
GPIOPinWrite(MCU_BSP_UART3_RS485_CTRL_GPIO, MCU_BSP_UART3_RS485_CTRL_GPIO_PIN, ~MCU_BSP_UART3_RS485_CTRL_GPIO_PIN);
|
|
}
|
|
BSP_IntVectSet((CPU_INT08U)BSP_INT_ID_UART3, (CPU_FNCT_VOID)McuBspUart3IntHandler);
|
|
BSP_IntEn(BSP_INT_ID_UART3);
|
|
IntEnable(INT_UART3);
|
|
IntPrioritySet(INT_UART3, 3 << 5);
|
|
UARTIntEnable(UART3_BASE, UART_INT_RX | UART_INT_RT);
|
|
ui32Status = UARTIntStatus(UART3_BASE, true);
|
|
UARTIntClear(UART3_BASE, ui32Status);
|
|
while(0 <= UARTCharGetNonBlocking(UART3_BASE));
|
|
} else if (UartId == MCU_BSP_UART4) {
|
|
SysCtlPeripheralEnable(SYSCTL_PERIPH_UART4);
|
|
SysCtlPeripheralEnable(MCU_BSP_UART4_RX_GPIO_CLK);
|
|
SysCtlPeripheralEnable(MCU_BSP_UART4_TX_GPIO_CLK);
|
|
GPIOPinConfigure(MCU_BSP_UART4_RX_GPIO_CONF);
|
|
GPIOPinConfigure(MCU_BSP_UART4_TX_GPIO_CONF);
|
|
GPIOPinTypeUART(MCU_BSP_UART4_RX_GPIO, MCU_BSP_UART4_RX_GPIO_PIN);
|
|
GPIOPinTypeUART(MCU_BSP_UART4_TX_GPIO, MCU_BSP_UART4_TX_GPIO_PIN);
|
|
UARTConfigSetExpClk(UART4_BASE, SysFreqGet(), gMcuBspUartObj[UartId].BandRate,
|
|
((gMcuBspUartObj[UartId].DataBit) | (gMcuBspUartObj[UartId].StopBit) |
|
|
(gMcuBspUartObj[UartId].CheckBit)));
|
|
if (gMcuBspUartObj[UartId].Mode == MCU_BSP_UART_RS485_TYPE) {
|
|
SysCtlPeripheralEnable(MCU_BSP_UART4_RS485_CTRL_GPIO_CLK);
|
|
GPIODirModeSet(MCU_BSP_UART4_RS485_CTRL_GPIO, MCU_BSP_UART4_RS485_CTRL_GPIO_PIN, GPIO_DIR_MODE_OUT);
|
|
GPIOPadConfigSet(MCU_BSP_UART4_RS485_CTRL_GPIO, MCU_BSP_UART4_RS485_CTRL_GPIO_PIN, GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_WAKE_LOW);
|
|
GPIOPinWrite(MCU_BSP_UART4_RS485_CTRL_GPIO, MCU_BSP_UART4_RS485_CTRL_GPIO_PIN, ~MCU_BSP_UART4_RS485_CTRL_GPIO_PIN);
|
|
}
|
|
BSP_IntVectSet((CPU_INT08U)BSP_INT_ID_UART4, (CPU_FNCT_VOID)McuBspUart4IntHandler);
|
|
BSP_IntEn(BSP_INT_ID_UART4);
|
|
IntEnable(INT_UART4);
|
|
IntPrioritySet(INT_UART4, 3 << 5);
|
|
UARTIntEnable(UART4_BASE, UART_INT_RX | UART_INT_RT);
|
|
ui32Status = UARTIntStatus(UART4_BASE, true);
|
|
UARTIntClear(UART4_BASE, ui32Status);
|
|
while(0 <= UARTCharGetNonBlocking(UART4_BASE));
|
|
} else if (UartId == MCU_BSP_UART5) {
|
|
SysCtlPeripheralEnable(SYSCTL_PERIPH_UART5);
|
|
SysCtlPeripheralEnable(MCU_BSP_UART5_RX_GPIO_CLK);
|
|
SysCtlPeripheralEnable(MCU_BSP_UART5_TX_GPIO_CLK);
|
|
GPIOPinConfigure(MCU_BSP_UART5_RX_GPIO_CONF);
|
|
GPIOPinConfigure(MCU_BSP_UART5_TX_GPIO_CONF);
|
|
GPIOPinTypeUART(MCU_BSP_UART5_RX_GPIO, MCU_BSP_UART5_RX_GPIO_PIN);
|
|
GPIOPinTypeUART(MCU_BSP_UART5_TX_GPIO, MCU_BSP_UART5_TX_GPIO_PIN);
|
|
UARTConfigSetExpClk(UART5_BASE, SysFreqGet(), gMcuBspUartObj[UartId].BandRate,
|
|
((gMcuBspUartObj[UartId].DataBit) | (gMcuBspUartObj[UartId].StopBit) |
|
|
(gMcuBspUartObj[UartId].CheckBit)));
|
|
if (gMcuBspUartObj[UartId].Mode == MCU_BSP_UART_RS485_TYPE) {
|
|
SysCtlPeripheralEnable(MCU_BSP_UART5_RS485_CTRL_GPIO_CLK);
|
|
GPIODirModeSet(MCU_BSP_UART5_RS485_CTRL_GPIO, MCU_BSP_UART5_RS485_CTRL_GPIO_PIN, GPIO_DIR_MODE_OUT);
|
|
GPIOPadConfigSet(MCU_BSP_UART5_RS485_CTRL_GPIO, MCU_BSP_UART5_RS485_CTRL_GPIO_PIN, GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_WAKE_LOW);
|
|
GPIOPinWrite(MCU_BSP_UART5_RS485_CTRL_GPIO, MCU_BSP_UART5_RS485_CTRL_GPIO_PIN, ~MCU_BSP_UART5_RS485_CTRL_GPIO_PIN);
|
|
}
|
|
BSP_IntVectSet((CPU_INT08U)BSP_INT_ID_UART5, (CPU_FNCT_VOID)McuBspUart5IntHandler);
|
|
BSP_IntEn(BSP_INT_ID_UART5);
|
|
IntEnable(INT_UART5);
|
|
IntPrioritySet(INT_UART5, 3 << 5);
|
|
UARTIntEnable(UART5_BASE, UART_INT_RX | UART_INT_RT);
|
|
ui32Status = UARTIntStatus(UART5_BASE, true);
|
|
UARTIntClear(UART5_BASE, ui32Status);
|
|
while(0 <= UARTCharGetNonBlocking(UART5_BASE));
|
|
} else if (UartId == MCU_BSP_UART6) {
|
|
SysCtlPeripheralEnable(SYSCTL_PERIPH_UART6);
|
|
SysCtlPeripheralEnable(MCU_BSP_UART6_RX_GPIO_CLK);
|
|
SysCtlPeripheralEnable(MCU_BSP_UART6_TX_GPIO_CLK);
|
|
GPIOPinConfigure(MCU_BSP_UART6_RX_GPIO_CONF);
|
|
GPIOPinConfigure(MCU_BSP_UART6_TX_GPIO_CONF);
|
|
GPIOPinTypeUART(MCU_BSP_UART6_RX_GPIO, MCU_BSP_UART6_RX_GPIO_PIN);
|
|
GPIOPinTypeUART(MCU_BSP_UART6_TX_GPIO, MCU_BSP_UART6_TX_GPIO_PIN);
|
|
UARTConfigSetExpClk(UART6_BASE, SysFreqGet(), gMcuBspUartObj[UartId].BandRate,
|
|
((gMcuBspUartObj[UartId].DataBit) | (gMcuBspUartObj[UartId].StopBit) |
|
|
(gMcuBspUartObj[UartId].CheckBit)));
|
|
if (gMcuBspUartObj[UartId].Mode == MCU_BSP_UART_RS485_TYPE) {
|
|
SysCtlPeripheralEnable(MCU_BSP_UART6_RS485_CTRL_GPIO_CLK);
|
|
GPIODirModeSet(MCU_BSP_UART6_RS485_CTRL_GPIO, MCU_BSP_UART6_RS485_CTRL_GPIO_PIN, GPIO_DIR_MODE_OUT);
|
|
GPIOPadConfigSet(MCU_BSP_UART6_RS485_CTRL_GPIO, MCU_BSP_UART6_RS485_CTRL_GPIO_PIN, GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_WAKE_LOW);
|
|
GPIOPinWrite(MCU_BSP_UART6_RS485_CTRL_GPIO, MCU_BSP_UART6_RS485_CTRL_GPIO_PIN, ~MCU_BSP_UART6_RS485_CTRL_GPIO_PIN);
|
|
}
|
|
BSP_IntVectSet((CPU_INT08U)BSP_INT_ID_UART6, (CPU_FNCT_VOID)McuBspUart6IntHandler);
|
|
BSP_IntEn(BSP_INT_ID_UART6);
|
|
IntEnable(INT_UART6);
|
|
IntPrioritySet(INT_UART6, 3 << 5);
|
|
UARTIntEnable(UART6_BASE, UART_INT_RX | UART_INT_RT);
|
|
ui32Status = UARTIntStatus(UART6_BASE, true);
|
|
UARTIntClear(UART6_BASE, ui32Status);
|
|
while(0 <= UARTCharGetNonBlocking(UART6_BASE));
|
|
} else if (UartId == MCU_BSP_UART7) {
|
|
SysCtlPeripheralEnable(SYSCTL_PERIPH_UART7);
|
|
SysCtlPeripheralEnable(MCU_BSP_UART7_RX_GPIO_CLK);
|
|
SysCtlPeripheralEnable(MCU_BSP_UART7_TX_GPIO_CLK);
|
|
GPIOPinConfigure(MCU_BSP_UART7_RX_GPIO_CONF);
|
|
GPIOPinConfigure(MCU_BSP_UART7_TX_GPIO_CONF);
|
|
GPIOPinTypeUART(MCU_BSP_UART7_RX_GPIO, MCU_BSP_UART7_RX_GPIO_PIN);
|
|
GPIOPinTypeUART(MCU_BSP_UART7_TX_GPIO, MCU_BSP_UART7_TX_GPIO_PIN);
|
|
UARTConfigSetExpClk(UART7_BASE, SysFreqGet(), gMcuBspUartObj[UartId].BandRate,
|
|
((gMcuBspUartObj[UartId].DataBit) | (gMcuBspUartObj[UartId].StopBit) |
|
|
(gMcuBspUartObj[UartId].CheckBit)));
|
|
if (gMcuBspUartObj[UartId].Mode == MCU_BSP_UART_RS485_TYPE) {
|
|
SysCtlPeripheralEnable(MCU_BSP_UART7_RS485_CTRL_GPIO_CLK);
|
|
GPIODirModeSet(MCU_BSP_UART7_RS485_CTRL_GPIO, MCU_BSP_UART7_RS485_CTRL_GPIO_PIN, GPIO_DIR_MODE_OUT);
|
|
GPIOPadConfigSet(MCU_BSP_UART7_RS485_CTRL_GPIO, MCU_BSP_UART7_RS485_CTRL_GPIO_PIN, GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_WAKE_LOW);
|
|
GPIOPinWrite(MCU_BSP_UART7_RS485_CTRL_GPIO, MCU_BSP_UART7_RS485_CTRL_GPIO_PIN, ~MCU_BSP_UART7_RS485_CTRL_GPIO_PIN);
|
|
}
|
|
BSP_IntVectSet((CPU_INT08U)BSP_INT_ID_UART7, (CPU_FNCT_VOID)McuBspUart7IntHandler);
|
|
BSP_IntEn(BSP_INT_ID_UART7);
|
|
IntEnable(INT_UART7);
|
|
IntPrioritySet(INT_UART7, 3 << 5);
|
|
UARTIntEnable(UART7_BASE, UART_INT_RX | UART_INT_RT);
|
|
ui32Status = UARTIntStatus(UART7_BASE, true);
|
|
UARTIntClear(UART7_BASE, ui32Status);
|
|
while(0 <= UARTCharGetNonBlocking(UART7_BASE));
|
|
}
|
|
gMcuBspUartObj[UartId].Enable = MCU_BSP_UART_ON;
|
|
return 0;
|
|
}
|
|
|
|
/* 串口发送函数 */
|
|
int McuBspUartSendData(uint8_t UartId, uint8_t *Data, uint32_t DataLen)
|
|
{
|
|
uint32_t i = 0;
|
|
CPU_SR_ALLOC();
|
|
if (UartId >= MCU_BSP_UART_ALL_NUM) {
|
|
return -1;
|
|
}
|
|
if (gMcuBspUartObj[UartId].Enable != MCU_BSP_UART_ON) {
|
|
return -1;
|
|
}
|
|
while (gMcuBspUartObj[UartId].Txbusy == MCU_BSP_UART_BUSY) {
|
|
|
|
}
|
|
gMcuBspUartObj[UartId].Txbusy = MCU_BSP_UART_BUSY;
|
|
OS_ENTER_CRITICAL();
|
|
if (UartId == MCU_BSP_UART0) {
|
|
if (gMcuBspUartObj[UartId].Mode == MCU_BSP_UART_RS485_TYPE) {
|
|
GPIOPinWrite(MCU_BSP_UART0_RS485_CTRL_GPIO, MCU_BSP_UART0_RS485_CTRL_GPIO_PIN, MCU_BSP_UART0_RS485_CTRL_GPIO_PIN);
|
|
}
|
|
for (; i < DataLen; i++) {
|
|
UARTCharPut(UART0_BASE, Data[i]);
|
|
}
|
|
while (UARTBusy(UART0_BASE)) {
|
|
|
|
}
|
|
if (gMcuBspUartObj[UartId].Mode == MCU_BSP_UART_RS485_TYPE) {
|
|
GPIOPinWrite(MCU_BSP_UART0_RS485_CTRL_GPIO, MCU_BSP_UART0_RS485_CTRL_GPIO_PIN, ~MCU_BSP_UART0_RS485_CTRL_GPIO_PIN);
|
|
}
|
|
} else if (UartId == MCU_BSP_UART1) {
|
|
if (gMcuBspUartObj[UartId].Mode == MCU_BSP_UART_RS485_TYPE) {
|
|
GPIOPinWrite(MCU_BSP_UART1_RS485_CTRL_GPIO, MCU_BSP_UART1_RS485_CTRL_GPIO_PIN, MCU_BSP_UART1_RS485_CTRL_GPIO_PIN);
|
|
}
|
|
for (; i < DataLen; i++) {
|
|
UARTCharPut(UART1_BASE, Data[i]);
|
|
}
|
|
while (UARTBusy(UART1_BASE)) {
|
|
|
|
}
|
|
if (gMcuBspUartObj[UartId].Mode == MCU_BSP_UART_RS485_TYPE) {
|
|
GPIOPinWrite(MCU_BSP_UART1_RS485_CTRL_GPIO, MCU_BSP_UART1_RS485_CTRL_GPIO_PIN, ~MCU_BSP_UART1_RS485_CTRL_GPIO_PIN);
|
|
}
|
|
} else if (UartId == MCU_BSP_UART2) {
|
|
if (gMcuBspUartObj[UartId].Mode == MCU_BSP_UART_RS485_TYPE) {
|
|
GPIOPinWrite(MCU_BSP_UART2_RS485_CTRL_GPIO, MCU_BSP_UART2_RS485_CTRL_GPIO_PIN, MCU_BSP_UART2_RS485_CTRL_GPIO_PIN);
|
|
}
|
|
for (; i < DataLen; i++) {
|
|
UARTCharPut(UART2_BASE, Data[i]);
|
|
}
|
|
while (UARTBusy(UART2_BASE)) {
|
|
|
|
}
|
|
if (gMcuBspUartObj[UartId].Mode == MCU_BSP_UART_RS485_TYPE) {
|
|
GPIOPinWrite(MCU_BSP_UART2_RS485_CTRL_GPIO, MCU_BSP_UART2_RS485_CTRL_GPIO_PIN, ~MCU_BSP_UART2_RS485_CTRL_GPIO_PIN);
|
|
}
|
|
} else if (UartId == MCU_BSP_UART3) {
|
|
if (gMcuBspUartObj[UartId].Mode == MCU_BSP_UART_RS485_TYPE) {
|
|
GPIOPinWrite(MCU_BSP_UART3_RS485_CTRL_GPIO, MCU_BSP_UART3_RS485_CTRL_GPIO_PIN, MCU_BSP_UART3_RS485_CTRL_GPIO_PIN);
|
|
}
|
|
for (; i < DataLen; i++) {
|
|
UARTCharPut(UART3_BASE, Data[i]);
|
|
}
|
|
while (UARTBusy(UART3_BASE)) {
|
|
|
|
}
|
|
if (gMcuBspUartObj[UartId].Mode == MCU_BSP_UART_RS485_TYPE) {
|
|
GPIOPinWrite(MCU_BSP_UART3_RS485_CTRL_GPIO, MCU_BSP_UART3_RS485_CTRL_GPIO_PIN, ~MCU_BSP_UART3_RS485_CTRL_GPIO_PIN);
|
|
}
|
|
} else if (UartId == MCU_BSP_UART4) {
|
|
if (gMcuBspUartObj[UartId].Mode == MCU_BSP_UART_RS485_TYPE) {
|
|
GPIOPinWrite(MCU_BSP_UART4_RS485_CTRL_GPIO, MCU_BSP_UART4_RS485_CTRL_GPIO_PIN, MCU_BSP_UART4_RS485_CTRL_GPIO_PIN);
|
|
}
|
|
for (; i < DataLen; i++) {
|
|
UARTCharPut(UART4_BASE, Data[i]);
|
|
}
|
|
while (UARTBusy(UART4_BASE)) {
|
|
|
|
}
|
|
if (gMcuBspUartObj[UartId].Mode == MCU_BSP_UART_RS485_TYPE) {
|
|
GPIOPinWrite(MCU_BSP_UART4_RS485_CTRL_GPIO, MCU_BSP_UART4_RS485_CTRL_GPIO_PIN, ~MCU_BSP_UART4_RS485_CTRL_GPIO_PIN);
|
|
}
|
|
} else if (UartId == MCU_BSP_UART5) {
|
|
if (gMcuBspUartObj[UartId].Mode == MCU_BSP_UART_RS485_TYPE) {
|
|
GPIOPinWrite(MCU_BSP_UART5_RS485_CTRL_GPIO, MCU_BSP_UART5_RS485_CTRL_GPIO_PIN, MCU_BSP_UART5_RS485_CTRL_GPIO_PIN);
|
|
}
|
|
for (; i < DataLen; i++) {
|
|
UARTCharPut(UART5_BASE, Data[i]);
|
|
}
|
|
while (UARTBusy(UART5_BASE)) {
|
|
|
|
}
|
|
if (gMcuBspUartObj[UartId].Mode == MCU_BSP_UART_RS485_TYPE) {
|
|
GPIOPinWrite(MCU_BSP_UART5_RS485_CTRL_GPIO, MCU_BSP_UART5_RS485_CTRL_GPIO_PIN, ~MCU_BSP_UART5_RS485_CTRL_GPIO_PIN);
|
|
}
|
|
} else if (UartId == MCU_BSP_UART6) {
|
|
if (gMcuBspUartObj[UartId].Mode == MCU_BSP_UART_RS485_TYPE) {
|
|
GPIOPinWrite(MCU_BSP_UART6_RS485_CTRL_GPIO, MCU_BSP_UART6_RS485_CTRL_GPIO_PIN, MCU_BSP_UART6_RS485_CTRL_GPIO_PIN);
|
|
}
|
|
for (; i < DataLen; i++) {
|
|
UARTCharPut(UART6_BASE, Data[i]);
|
|
}
|
|
while (UARTBusy(UART6_BASE)) {
|
|
|
|
}
|
|
if (gMcuBspUartObj[UartId].Mode == MCU_BSP_UART_RS485_TYPE) {
|
|
GPIOPinWrite(MCU_BSP_UART6_RS485_CTRL_GPIO, MCU_BSP_UART6_RS485_CTRL_GPIO_PIN, ~MCU_BSP_UART6_RS485_CTRL_GPIO_PIN);
|
|
}
|
|
} else if (UartId == MCU_BSP_UART7) {
|
|
if (gMcuBspUartObj[UartId].Mode == MCU_BSP_UART_RS485_TYPE) {
|
|
GPIOPinWrite(MCU_BSP_UART7_RS485_CTRL_GPIO, MCU_BSP_UART7_RS485_CTRL_GPIO_PIN, MCU_BSP_UART7_RS485_CTRL_GPIO_PIN);
|
|
}
|
|
for (; i < DataLen; i++) {
|
|
UARTCharPut(UART7_BASE, Data[i]);
|
|
}
|
|
while (UARTBusy(UART7_BASE)) {
|
|
|
|
}
|
|
if (gMcuBspUartObj[UartId].Mode == MCU_BSP_UART_RS485_TYPE) {
|
|
GPIOPinWrite(MCU_BSP_UART7_RS485_CTRL_GPIO, MCU_BSP_UART7_RS485_CTRL_GPIO_PIN, ~MCU_BSP_UART7_RS485_CTRL_GPIO_PIN);
|
|
}
|
|
}
|
|
OS_EXIT_CRITICAL();
|
|
gMcuBspUartObj[UartId].Txbusy = MCU_BSP_UART_NOBUSY;
|
|
return 0;
|
|
}
|
|
|
|
int McuBspUartStartRecv(uint8_t UartId, UART_RECV_CALLBACK RecvCallback)
|
|
{
|
|
if ((UartId >= MCU_BSP_UART_ALL_NUM) || (RecvCallback == NULL)) {
|
|
return -1;
|
|
}
|
|
if (gMcuBspUartObj[UartId].Enable != MCU_BSP_UART_ON) {
|
|
return -1;
|
|
}
|
|
while (gMcuBspUartObj[UartId].Rxbusy == MCU_BSP_UART_BUSY) {
|
|
}
|
|
gMcuBspUartObj[UartId].Rxbusy = MCU_BSP_UART_BUSY;
|
|
switch (UartId) {
|
|
case MCU_BSP_UART0:
|
|
gMcuBspUart0RecvCallback = RecvCallback;
|
|
break;
|
|
case MCU_BSP_UART1:
|
|
gMcuBspUart1RecvCallback = RecvCallback;
|
|
break;
|
|
case MCU_BSP_UART2:
|
|
gMcuBspUart2RecvCallback = RecvCallback;
|
|
break;
|
|
case MCU_BSP_UART3:
|
|
gMcuBspUart3RecvCallback = RecvCallback;
|
|
break;
|
|
case MCU_BSP_UART4:
|
|
gMcuBspUart4RecvCallback = RecvCallback;
|
|
break;
|
|
case MCU_BSP_UART5:
|
|
gMcuBspUart5RecvCallback = RecvCallback;
|
|
break;
|
|
case MCU_BSP_UART6:
|
|
gMcuBspUart6RecvCallback = RecvCallback;
|
|
break;
|
|
case MCU_BSP_UART7:
|
|
gMcuBspUart7RecvCallback = RecvCallback;
|
|
break;
|
|
default:
|
|
return -1;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
int McuBspUartEndRecv(uint8_t UartId)
|
|
{
|
|
if (UartId >= MCU_BSP_UART_ALL_NUM) {
|
|
return -1;
|
|
}
|
|
if (gMcuBspUartObj[UartId].Enable != MCU_BSP_UART_ON) {
|
|
return -1;
|
|
}
|
|
switch (UartId) {
|
|
case MCU_BSP_UART0:
|
|
gMcuBspUart0RecvCallback = NULL;
|
|
break;
|
|
case MCU_BSP_UART1:
|
|
gMcuBspUart1RecvCallback = NULL;
|
|
break;
|
|
case MCU_BSP_UART2:
|
|
gMcuBspUart2RecvCallback = NULL;
|
|
break;
|
|
case MCU_BSP_UART3:
|
|
gMcuBspUart3RecvCallback = NULL;
|
|
break;
|
|
case MCU_BSP_UART4:
|
|
gMcuBspUart4RecvCallback = NULL;
|
|
break;
|
|
case MCU_BSP_UART5:
|
|
gMcuBspUart5RecvCallback = NULL;
|
|
break;
|
|
case MCU_BSP_UART6:
|
|
gMcuBspUart6RecvCallback = NULL;
|
|
break;
|
|
case MCU_BSP_UART7:
|
|
gMcuBspUart7RecvCallback = NULL;
|
|
break;
|
|
default:
|
|
return -1;
|
|
}
|
|
gMcuBspUartObj[UartId].Rxbusy = MCU_BSP_UART_NOBUSY;
|
|
return 0;
|
|
}
|
|
|
|
/* 修改配置文件 */
|
|
int McuBspUartModifyConf(uint8_t UartId, uint32_t BandRate, uint32_t DataBit, uint32_t StopBit, uint32_t CheckBit)
|
|
{
|
|
if (UartId >= MCU_BSP_UART_ALL_NUM) {
|
|
return -1;
|
|
}
|
|
if ((BandRate != MCU_BSP_UART_BANDRATE_4800) && (BandRate != MCU_BSP_UART_BANDRATE_9600) && (BandRate != MCU_BSP_UART_BANDRATE_14400) &&
|
|
(BandRate != MCU_BSP_UART_BANDRATE_19200) && (BandRate != MCU_BSP_UART_BANDRATE_38400) && (BandRate != MCU_BSP_UART_BANDRATE_56000) &&
|
|
(BandRate != MCU_BSP_UART_BANDRATE_57600) && (BandRate != MCU_BSP_UART_BANDRATE_115200)) {
|
|
return -1;
|
|
} else {
|
|
gMcuBspUartObj[UartId].BandRate = BandRate;
|
|
}
|
|
switch (DataBit) {
|
|
case MCU_BSP_UART_DATABIT_5:
|
|
gMcuBspUartObj[UartId].DataBit = UART_CONFIG_WLEN_5;
|
|
break;
|
|
case MCU_BSP_UART_DATABIT_6:
|
|
gMcuBspUartObj[UartId].DataBit = UART_CONFIG_WLEN_6;
|
|
break;
|
|
case MCU_BSP_UART_DATABIT_7:
|
|
gMcuBspUartObj[UartId].DataBit = UART_CONFIG_WLEN_7;
|
|
break;
|
|
case MCU_BSP_UART_DATABIT_8:
|
|
gMcuBspUartObj[UartId].DataBit = UART_CONFIG_WLEN_8;
|
|
break;
|
|
default:
|
|
return -1;
|
|
}
|
|
switch (StopBit) {
|
|
case MCU_BSP_UART_STOPBIT_ONE:
|
|
gMcuBspUartObj[UartId].StopBit = UART_CONFIG_STOP_ONE;
|
|
break;
|
|
case MCU_BSP_UART_STOPBIT_TWO:
|
|
gMcuBspUartObj[UartId].StopBit = UART_CONFIG_STOP_ONE;
|
|
break;
|
|
default:
|
|
return -1;
|
|
}
|
|
switch (CheckBit) {
|
|
case MCU_BSP_UART_CHECKBIT_NONE:
|
|
gMcuBspUartObj[UartId].CheckBit = UART_CONFIG_PAR_NONE;
|
|
break;
|
|
case MCU_BSP_UART_CHECKBIT_EVEN:
|
|
gMcuBspUartObj[UartId].CheckBit = UART_CONFIG_PAR_EVEN;
|
|
break;
|
|
case MCU_BSP_UART_CHECKBIT_ODD:
|
|
gMcuBspUartObj[UartId].CheckBit = UART_CONFIG_PAR_ODD;
|
|
break;
|
|
default:
|
|
return -1;
|
|
}
|
|
while ((gMcuBspUartObj[UartId].Rxbusy == 1) || (gMcuBspUartObj[UartId].Txbusy == 1)) {
|
|
|
|
}
|
|
gMcuBspUartObj[UartId].Enable = MCU_BSP_UART_OFF;
|
|
if (UartId == MCU_BSP_UART0) {
|
|
UARTConfigSetExpClk(UART0_BASE, SysFreqGet(), gMcuBspUartObj[UartId].BandRate,
|
|
((gMcuBspUartObj[UartId].DataBit) | (gMcuBspUartObj[UartId].StopBit) |
|
|
(gMcuBspUartObj[UartId].CheckBit)));
|
|
} else if (UartId == MCU_BSP_UART1) {
|
|
UARTConfigSetExpClk(UART1_BASE, SysFreqGet(), gMcuBspUartObj[UartId].BandRate,
|
|
((gMcuBspUartObj[UartId].DataBit) | (gMcuBspUartObj[UartId].StopBit) |
|
|
(gMcuBspUartObj[UartId].CheckBit)));
|
|
} else if (UartId == MCU_BSP_UART2) {
|
|
UARTConfigSetExpClk(UART2_BASE, SysFreqGet(), gMcuBspUartObj[UartId].BandRate,
|
|
((gMcuBspUartObj[UartId].DataBit) | (gMcuBspUartObj[UartId].StopBit) |
|
|
(gMcuBspUartObj[UartId].CheckBit)));
|
|
} else if (UartId == MCU_BSP_UART3) {
|
|
UARTConfigSetExpClk(UART3_BASE, SysFreqGet(), gMcuBspUartObj[UartId].BandRate,
|
|
((gMcuBspUartObj[UartId].DataBit) | (gMcuBspUartObj[UartId].StopBit) |
|
|
(gMcuBspUartObj[UartId].CheckBit)));
|
|
} else if (UartId == MCU_BSP_UART4) {
|
|
UARTConfigSetExpClk(UART4_BASE, SysFreqGet(), gMcuBspUartObj[UartId].BandRate,
|
|
((gMcuBspUartObj[UartId].DataBit) | (gMcuBspUartObj[UartId].StopBit) |
|
|
(gMcuBspUartObj[UartId].CheckBit)));
|
|
} else if (UartId == MCU_BSP_UART5) {
|
|
UARTConfigSetExpClk(UART5_BASE, SysFreqGet(), gMcuBspUartObj[UartId].BandRate,
|
|
((gMcuBspUartObj[UartId].DataBit) | (gMcuBspUartObj[UartId].StopBit) |
|
|
(gMcuBspUartObj[UartId].CheckBit)));
|
|
} else if (UartId == MCU_BSP_UART6) {
|
|
UARTConfigSetExpClk(UART6_BASE, SysFreqGet(), gMcuBspUartObj[UartId].BandRate,
|
|
((gMcuBspUartObj[UartId].DataBit) | (gMcuBspUartObj[UartId].StopBit) |
|
|
(gMcuBspUartObj[UartId].CheckBit)));
|
|
} else if (UartId == MCU_BSP_UART7) {
|
|
UARTConfigSetExpClk(UART7_BASE, SysFreqGet(), gMcuBspUartObj[UartId].BandRate,
|
|
((gMcuBspUartObj[UartId].DataBit) | (gMcuBspUartObj[UartId].StopBit) |
|
|
(gMcuBspUartObj[UartId].CheckBit)));
|
|
}
|
|
gMcuBspUartObj[UartId].Enable = MCU_BSP_UART_ON;
|
|
return 0;
|
|
}
|
|
|
|
static void McuBspUart0IntHandler(void)
|
|
{
|
|
uint32_t ui32Status;
|
|
CPU_SR_ALLOC();
|
|
OSIntEnter(); //通知系统进入OS中断
|
|
OS_ENTER_CRITICAL();
|
|
ui32Status = UARTIntStatus(UART0_BASE, true);
|
|
UARTIntClear(UART0_BASE, ui32Status);
|
|
while (UARTCharsAvail(UART0_BASE)) {
|
|
gMcuBspUartRecvData0 = (uint8_t)UARTCharGetNonBlocking(UART0_BASE);
|
|
if ((gMcuBspUartObj[MCU_BSP_UART0].Rxbusy == 1) && (gMcuBspUart0RecvCallback != NULL)) {
|
|
gMcuBspUart0RecvCallback(gMcuBspUartRecvData0);
|
|
}
|
|
}
|
|
OS_EXIT_CRITICAL();
|
|
OSIntExit();
|
|
}
|
|
|
|
static void McuBspUart1IntHandler(void)
|
|
{
|
|
uint32_t ui32Status;
|
|
CPU_SR_ALLOC();
|
|
OSIntEnter(); //通知系统进入OS中断
|
|
OS_ENTER_CRITICAL();
|
|
ui32Status = UARTIntStatus(UART1_BASE, true);
|
|
UARTIntClear(UART1_BASE, ui32Status);
|
|
while (UARTCharsAvail(UART1_BASE)) {
|
|
gMcuBspUartRecvData1 = (uint8_t)UARTCharGetNonBlocking(UART1_BASE);
|
|
if ((gMcuBspUartObj[MCU_BSP_UART1].Rxbusy == 1) && (gMcuBspUart1RecvCallback != NULL)) {
|
|
gMcuBspUart1RecvCallback(gMcuBspUartRecvData1);
|
|
}
|
|
}
|
|
OS_EXIT_CRITICAL();
|
|
OSIntExit();
|
|
}
|
|
|
|
static void McuBspUart2IntHandler(void)
|
|
{
|
|
uint32_t ui32Status;
|
|
CPU_SR_ALLOC();
|
|
OSIntEnter(); //通知系统进入OS中断
|
|
OS_ENTER_CRITICAL();
|
|
ui32Status = UARTIntStatus(UART2_BASE, true);
|
|
UARTIntClear(UART2_BASE, ui32Status);
|
|
while (UARTCharsAvail(UART2_BASE)) {
|
|
gMcuBspUartRecvData2 = (uint8_t)UARTCharGetNonBlocking(UART2_BASE);
|
|
if ((gMcuBspUartObj[MCU_BSP_UART2].Rxbusy == 1) && (gMcuBspUart2RecvCallback != NULL)) {
|
|
gMcuBspUart2RecvCallback(gMcuBspUartRecvData2);
|
|
}
|
|
}
|
|
OS_EXIT_CRITICAL();
|
|
OSIntExit();
|
|
}
|
|
|
|
static void McuBspUart3IntHandler(void)
|
|
{
|
|
uint32_t ui32Status;
|
|
CPU_SR_ALLOC();
|
|
OSIntEnter(); //通知系统进入OS中断
|
|
OS_ENTER_CRITICAL();
|
|
ui32Status = UARTIntStatus(UART3_BASE, true);
|
|
UARTIntClear(UART3_BASE, ui32Status);
|
|
while (UARTCharsAvail(UART3_BASE)) {
|
|
gMcuBspUartRecvData3 = (uint8_t)UARTCharGetNonBlocking(UART3_BASE);
|
|
if ((gMcuBspUartObj[MCU_BSP_UART3].Rxbusy == 1) && (gMcuBspUart3RecvCallback != NULL)) {
|
|
gMcuBspUart3RecvCallback(gMcuBspUartRecvData3);
|
|
}
|
|
}
|
|
OS_EXIT_CRITICAL();
|
|
OSIntExit();
|
|
}
|
|
|
|
static void McuBspUart4IntHandler(void)
|
|
{
|
|
uint32_t ui32Status;
|
|
CPU_SR_ALLOC();
|
|
OSIntEnter(); //通知系统进入OS中断
|
|
OS_ENTER_CRITICAL();
|
|
ui32Status = UARTIntStatus(UART4_BASE, true);
|
|
UARTIntClear(UART4_BASE, ui32Status);
|
|
while (UARTCharsAvail(UART4_BASE)) {
|
|
gMcuBspUartRecvData4 = (uint8_t)UARTCharGetNonBlocking(UART4_BASE);
|
|
if ((gMcuBspUartObj[MCU_BSP_UART4].Rxbusy == 1) && (gMcuBspUart4RecvCallback != NULL)) {
|
|
gMcuBspUart4RecvCallback(gMcuBspUartRecvData4);
|
|
}
|
|
}
|
|
OS_EXIT_CRITICAL();
|
|
OSIntExit();
|
|
}
|
|
|
|
static void McuBspUart5IntHandler(void)
|
|
{
|
|
uint32_t ui32Status;
|
|
CPU_SR_ALLOC();
|
|
OSIntEnter(); //通知系统进入OS中断
|
|
OS_ENTER_CRITICAL();
|
|
ui32Status = UARTIntStatus(UART5_BASE, true);
|
|
UARTIntClear(UART5_BASE, ui32Status);
|
|
while (UARTCharsAvail(UART5_BASE)) {
|
|
gMcuBspUartRecvData5 = (uint8_t)UARTCharGetNonBlocking(UART5_BASE);
|
|
if ((gMcuBspUartObj[MCU_BSP_UART5].Rxbusy == 1) && (gMcuBspUart5RecvCallback != NULL)) {
|
|
gMcuBspUart5RecvCallback(gMcuBspUartRecvData5);
|
|
}
|
|
}
|
|
OS_EXIT_CRITICAL();
|
|
OSIntExit();
|
|
}
|
|
|
|
static void McuBspUart6IntHandler(void)
|
|
{
|
|
uint32_t ui32Status;
|
|
CPU_SR_ALLOC();
|
|
OSIntEnter(); //通知系统进入OS中断
|
|
OS_ENTER_CRITICAL();
|
|
ui32Status = UARTIntStatus(UART6_BASE, true);
|
|
UARTIntClear(UART6_BASE, ui32Status);
|
|
while (UARTCharsAvail(UART6_BASE)) {
|
|
gMcuBspUartRecvData6 = (uint8_t)UARTCharGetNonBlocking(UART6_BASE);
|
|
if ((gMcuBspUartObj[MCU_BSP_UART6].Rxbusy == 1) && (gMcuBspUart6RecvCallback != NULL)) {
|
|
gMcuBspUart6RecvCallback(gMcuBspUartRecvData6);
|
|
}
|
|
}
|
|
OS_EXIT_CRITICAL();
|
|
OSIntExit();
|
|
}
|
|
|
|
static void McuBspUart7IntHandler(void)
|
|
{
|
|
uint32_t ui32Status;
|
|
CPU_SR_ALLOC();
|
|
OSIntEnter(); //通知系统进入OS中断
|
|
OS_ENTER_CRITICAL();
|
|
ui32Status = UARTIntStatus(UART7_BASE, true);
|
|
UARTIntClear(UART7_BASE, ui32Status);
|
|
while (UARTCharsAvail(UART7_BASE)) {
|
|
gMcuBspUartRecvData7 = (uint8_t)UARTCharGetNonBlocking(UART7_BASE);
|
|
if ((gMcuBspUartObj[MCU_BSP_UART7].Rxbusy == 1) && (gMcuBspUart7RecvCallback != NULL)) {
|
|
gMcuBspUart7RecvCallback(gMcuBspUartRecvData7);
|
|
}
|
|
}
|
|
OS_EXIT_CRITICAL();
|
|
OSIntExit();
|
|
}
|