请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
部件号:MSP432P401R 您好,社区:
我可以创建正在运行的DMA UART发送。不幸的是,对于DMA UART RX代码不起作用。
有任何人在做示例。。
只是我的几个职能...
void preparareDMA()
{
MAP_DMA_enableModule();
MAP_DMA_setControlBase(dmaControlTable);
/*将DMA通道0分配给EUSCI_A0_TX0 */
MAP_DMA_赋 值通道(DMA_CH0_EUSCIA0TX);
/*设置TX传输特性和缓冲区*/
MAP_DMA_setChannelControl(DMA_CH0_EUSCIA0TX | UDMA_PRI_SELECT,
UDMA_SIZE_8 | UDMA_SRC_INC_8 | UDMA_DST_INC_NONE | UDMA_ARB_1);
MAP_DMA_赋 值中断(INT_DMA_INT1,DMA_CHANGE_0);
MAP_DMA_DisableInterrupt (INT_DMA_INT1);
/*将DMA通道1分配给EUSCI_A0_RX0 */
MAP_DMA_赋 值通道(DMA_CH1_EUSCIAN0RX);
/*设置RX传输特性和缓冲区*/
MAP_DMA_setChannelControl(DMA_CH1_EUSCIAN0RX | UDMA_PRI_SELECT,
UDMA_SIZE_8 | UDMA_SRC_INC_NONE | UDMA_DST_INC_8 | UDMA_ARB_1);
MAP_DMA_赋 值中断(INT_DMA_INT2,DMA_CHANGE_1);
MAP_DMA_DisableInterrupt (INT_DMA_INT2);
}
void UART_SEND_DMA(char buy[],int n)
{
MAP_DMA_setChannelTransfer(.
DMA_CH0_EUSCIA0TX | UDMA_PRI_SELECT,
udma_mode_basic,
缓冲器,
(void *) MAP_SPI_getTransmitBufferAddressForDMA(EUSSCI_A0_base),n);
MAP_DMA_enableInterrupt (INT_DMA_INT1);
MAP_DMA_enableInterrupt (INT_DMA_ERR);
MAP_DMA_enableChannel(DMA_Channel_0);
}
void UART_receive DMA (char buy[],int n)
{
MAP_DMA_setChannelTransfer(.
DMA_CH1_EUSCIA0RX | UDMA_PRI_SELECT,
udma_mode_basic,
(void*)MAP_SPI_getReceiveBufferAddressForDMA(EUSSCI_A0_base),
黄,n);
MAP_DMA_enableInterrupt (INT_DMA_INT2);
MAP_DMA_enableInterrupt (INT_DMA_ERR);
MAP_DMA_enableChannel(DMA_Channel_1);}
不幸的是,在UART_receive_DMA()调用后,没有相关中断...
UART_SEND_DMA()起作用,每个调用都会导致中断调用。
谢谢