This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

看了很多UDMA的例程 写了下代码 结果压根儿不能用 仿真还出现encounter an improper argument

先是串口初始化

void UART_init(void)
{
  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();
}
再是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);
 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);
}
没有串口中断和DMA中断,因为要发送的数据帧不止一个 中断里面还要改地址
这段代码是一个字节都没发出来。。。不知道什么问题