include này nọ
//===============================================================================================================
uint32_t g_SysClock;
uint8_t Uart_Send_0[255];
uint8_t g_ui8RxBufA[255];
uint8_t g_ui8RxBufB[255];
uint8_t g_ui8TxBuf[255]={49,50,51,52};
int test;
//===============================================================================================================
#pragma DATA_ALIGN(pui8ControlTable, 1024)
uint8_t pui8ControlTable[1024];
// TODO
void UART0IntHandler(void)
{
uint32_t ui32Status;
ui32Status = UARTIntStatus(UART0_BASE, 1);
UARTIntClear(UART0_BASE, ui32Status);
test++;
}
//===============================================================================================================
void uDMAErrorHandler(void)
{
unsigned long ulStatus;
//
// Check for uDMA error bit
//
ulStatus = uDMAErrorStatusGet();
if(ulStatus)
{
uDMAErrorStatusClear();
//g_uluDMAErrCount++;
}
}
//===============================================================================================================
void GPIOInit(void)
{
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPION);
GPIOPinTypeGPIOOutput(GPIO_PORTN_BASE, GPIO_PIN_0|GPIO_PIN_0);
}
//===============================================================================================================
void UartInit(void)
{
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
SysCtlPeripheralEnable(SYSCTL_PERIPH_UART0);
GPIOPinConfigure(GPIO_PA0_U0RX);
GPIOPinConfigure(GPIO_PA1_U0TX);
GPIOPinTypeUART(GPIO_PORTA_BASE, GPIO_PIN_0 | GPIO_PIN_1);
UARTConfigSetExpClk(UART0_BASE, g_SysClock, 115200,
UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE |
UART_CONFIG_PAR_NONE);
UARTFIFOLevelSet(UART0_BASE, UART_FIFO_TX4_8, UART_FIFO_RX4_8);
UARTEnable(UART0_BASE);
UARTIntDisable(UART0_BASE , UART_INT_9BIT | UART_INT_OE | UART_INT_BE | UART_INT_PE | UART_INT_FE | UART_INT_RT
| UART_INT_TX | UART_INT_RX | UART_INT_DSR | UART_INT_DCD | UART_INT_CTS | UART_INT_RI | UART_INT_DMATX|UART_INT_DMARX);
UARTIntClear(UART0_BASE , UART_INT_9BIT | UART_INT_OE | UART_INT_BE | UART_INT_PE | UART_INT_FE | UART_INT_RT
| UART_INT_TX | UART_INT_RX | UART_INT_DSR | UART_INT_DCD | UART_INT_CTS | UART_INT_RI | UART_INT_DMATX|UART_INT_DMARX);
UARTIntEnable(UART0_BASE,UART_INT_RX|UART_INT_RT);
// UARTIntEnable(UART0_BASE , UART_INT_OE | UART_INT_BE | UART_INT_PE | UART_INT_FE | UART_INT_RX);
UARTIntUnregister(UART0_BASE);
UARTIntRegister(UART0_BASE, &UART0IntHandler);
IntDisable(INT_UART0);
IntEnable(INT_UART0);
UARTStdioConfig(0,115200,g_SysClock);
}
//===============================================================================================================
void DMAUart_Init(void)
{
SysCtlPeripheralDisable(SYSCTL_PERIPH_UDMA);
SysCtlPeripheralEnable(SYSCTL_PERIPH_UDMA);
SysCtlPeripheralSleepEnable(SYSCTL_PERIPH_UDMA);
IntDisable(INT_UDMAERR);
IntEnable(INT_UDMAERR);
uDMADisable();
uDMAEnable();
uDMAControlBaseSet(pui8ControlTable);
UARTDMAEnable(UART0_BASE, UART_DMA_RX);
uDMAChannelAttributeDisable(UDMA_CHANNEL_UART0RX, UDMA_ATTR_ALTSELECT |
UDMA_ATTR_USEBURST | UDMA_ATTR_HIGH_PRIORITY |
UDMA_ATTR_REQMASK);
uDMAChannelControlSet(UDMA_CHANNEL_UART0RX | UDMA_PRI_SELECT, UDMA_SIZE_8 |
UDMA_SRC_INC_NONE | UDMA_DST_INC_8|
UDMA_ARB_4);
uDMAChannelTransferSet(UDMA_CHANNEL_UART0RX | UDMA_PRI_SELECT, UDMA_MODE_BASIC,
(void *)(UART0_BASE + UART_O_DR), g_ui8RxBufA, sizeof(g_ui8RxBufA));
uDMAChannelEnable(UDMA_CHANNEL_UART0RX);
UARTIntEnable(UART0_BASE, UART_INT_DMARX);
}
//===============================================================================================================
int main(void)
{
g_SysClock = SysCtlClockFreqSet((SYSCTL_XTAL_25MHZ | SYSCTL_OSC_MAIN | SYSCTL_USE_PLL | SYSCTL_CFG_VCO_480), 120000000);
GPIOInit();
UartInit();
DMAUart_Init();
UARTprintf("Test Udma\n");
while(1)
{
}
}