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问题咨询

    ROM_uDMAChannelAttributeDisable(UDMA_CHANNEL_UART0RX,                                     UDMA_ATTR_ALTSELECT | UDMA_ATTR_USEBURST |                                     UDMA_ATTR_HIGH_PRIORITY |                                     UDMA_ATTR_REQMASK);

主要是这个函数不懂,其他的都能看懂,每次用dma上来都会disable一些特性,这个有什么用吗?我不调用这一句会有什么现象?

 

另外我把uDma_demo程序里面的发送相关设置屏蔽掉,只有接收设置,结果就不灵了,中断也进不了。配置代码如下:

void InitUART0Transfer(void) {     uint_fast16_t ui16Idx;

    for(ui16Idx = 0; ui16Idx < UART_TXBUF_SIZE; ui16Idx++)     {         g_ui8TxBuf[ui16Idx] = ui16Idx;     }

    ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_UART0);     ROM_SysCtlPeripheralSleepEnable(SYSCTL_PERIPH_UART0);     ROM_UARTConfigSetExpClk(UART0_BASE, ROM_SysCtlClockGet(), 115200,                             UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE |                             UART_CONFIG_PAR_NONE);                                 ROM_UARTFIFOLevelSet(UART0_BASE, UART_FIFO_TX4_8, UART_FIFO_RX4_8);     ROM_UARTEnable(UART0_BASE);     ROM_UARTDMAEnable(UART0_BASE, UART_DMA_RX);     ROM_IntEnable(INT_UART0);     ROM_uDMAChannelAttributeDisable(UDMA_CHANNEL_UART0RX,                                     UDMA_ATTR_ALTSELECT | UDMA_ATTR_USEBURST |                                     UDMA_ATTR_HIGH_PRIORITY |                                     UDMA_ATTR_REQMASK);

    ROM_uDMAChannelControlSet(UDMA_CHANNEL_UART0RX | UDMA_PRI_SELECT,                               UDMA_SIZE_8 | UDMA_SRC_INC_NONE | UDMA_DST_INC_8 |                               UDMA_ARB_4);

    ROM_uDMAChannelControlSet(UDMA_CHANNEL_UART0RX | UDMA_ALT_SELECT,                               UDMA_SIZE_8 | UDMA_SRC_INC_NONE | UDMA_DST_INC_8 |                               UDMA_ARB_4);

    ROM_uDMAChannelTransferSet(UDMA_CHANNEL_UART0RX | UDMA_PRI_SELECT,                                UDMA_MODE_PINGPONG,                                (void *)(UART0_BASE + UART_O_DR),                                g_ui8RxBufA, sizeof(g_ui8RxBufA));

    ROM_uDMAChannelTransferSet(UDMA_CHANNEL_UART0RX | UDMA_ALT_SELECT,                                UDMA_MODE_PINGPONG,                                (void *)(UART0_BASE + UART_O_DR),                                g_ui8RxBufB, sizeof(g_ui8RxBufB));

    ROM_uDMAChannelEnable(UDMA_CHANNEL_UART0RX); }