先是串口初始化
void UART_init(void)
{
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD);
SysCtlPeripheralEnable(SYSCTL_PERIPH_UART2);
{
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD);
SysCtlPeripheralEnable(SYSCTL_PERIPH_UART2);
HWREG(GPIO_PORTD_BASE + GPIO_O_LOCK) = GPIO_LOCK_KEY;
HWREG(GPIO_PORTD_BASE + GPIO_O_CR) = 0xFF;
GPIOPinConfigure(GPIO_PD7_U2TX);
GPIOPinConfigure(GPIO_PD6_U2RX);
GPIOPinTypeUART(GPIO_PORTD_BASE,GPIO_PIN_7|GPIO_PIN_6);
UARTConfigSetExpClk(UART2_BASE,SysCtlClockGet(),115200,UART_CONFIG_WLEN_8|UART_CONFIG_STOP_ONE|UART_CONFIG_PAR_NONE);
UARTEnable(UART2_BASE);
UARTDMAEnable(UART2_BASE,UART_DMA_RX|UART_DMA_TX);
uDMAChannelAssign(UDMA_CH1_UART2TX);
IntEnable(INT_UART2);
IntMasterEnable();
}
HWREG(GPIO_PORTD_BASE + GPIO_O_CR) = 0xFF;
GPIOPinConfigure(GPIO_PD7_U2TX);
GPIOPinConfigure(GPIO_PD6_U2RX);
GPIOPinTypeUART(GPIO_PORTD_BASE,GPIO_PIN_7|GPIO_PIN_6);
UARTConfigSetExpClk(UART2_BASE,SysCtlClockGet(),115200,UART_CONFIG_WLEN_8|UART_CONFIG_STOP_ONE|UART_CONFIG_PAR_NONE);
UARTEnable(UART2_BASE);
UARTDMAEnable(UART2_BASE,UART_DMA_RX|UART_DMA_TX);
uDMAChannelAssign(UDMA_CH1_UART2TX);
IntEnable(INT_UART2);
IntMasterEnable();
}
再是DMA初始化
void UDMA_Init(void)
{
SysCtlPeripheralEnable(SYSCTL_PERIPH_UDMA);
SysCtlPeripheralSleepEnable(SYSCTL_PERIPH_UDMA);
uDMAEnable();
uDMAControlBaseSet(pui8ControlTable);
uDMAChannelAttributeDisable(UDMA_CH1_UART2TX,
UDMA_ATTR_ALTSELECT|
UDMA_ATTR_HIGH_PRIORITY|UDMA_ATTR_REQMASK);
uDMAChannelControlSet(UDMA_CH1_UART2TX|UDMA_PRI_SELECT,
UDMA_SIZE_8|UDMA_SRC_INC_8|
UDMA_DST_INC_NONE|UDMA_ARB_4);
{
SysCtlPeripheralEnable(SYSCTL_PERIPH_UDMA);
SysCtlPeripheralSleepEnable(SYSCTL_PERIPH_UDMA);
uDMAEnable();
uDMAControlBaseSet(pui8ControlTable);
uDMAChannelAttributeDisable(UDMA_CH1_UART2TX,
UDMA_ATTR_ALTSELECT|
UDMA_ATTR_HIGH_PRIORITY|UDMA_ATTR_REQMASK);
uDMAChannelControlSet(UDMA_CH1_UART2TX|UDMA_PRI_SELECT,
UDMA_SIZE_8|UDMA_SRC_INC_8|
UDMA_DST_INC_NONE|UDMA_ARB_4);
uDMAChannelEnable(UDMA_CH1_UART2TX);
}
}
DMA发送
void UART2DMA_Send(void *p,uint32_t length)
{
uDMAChannelDisable(UDMA_CH1_UART2TX);
uDMAChannelTransferSet(UDMA_CH1_UART2TX|UDMA_PRI_SELECT,
UDMA_MODE_BASIC,(void*)p,(void*)(UART2_BASE+UART_O_DR),
length);
}
{
uDMAChannelDisable(UDMA_CH1_UART2TX);
uDMAChannelTransferSet(UDMA_CH1_UART2TX|UDMA_PRI_SELECT,
UDMA_MODE_BASIC,(void*)p,(void*)(UART2_BASE+UART_O_DR),
length);
}
没有串口中断和DMA中断,因为要发送的数据帧不止一个 中断里面还要改地址
这段代码是一个字节都没发出来。。。不知道什么问题