请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:TM4C1290NCPDT 您好!
我将配置 DMA、以便从内部 RAM 写入 EPI。 虽然这个传输工作一次、但我没有清除中断、所以它会不断被重新触发。 我认为 EPIIntErrorClear (EPI0_BASE、EPI_INT_ERR_DMAWRIC)
应该执行该任务、但不应该执行该操作。 要清零:如果发生任何其他中断、我选中了该复选框、但该中断仅为 EPI_INT_DMA_TX_DONE 中断。
欢迎您提供任何帮助、
此致
Micky
我的代码是
uint16_t auData[512]={1、2、3}; uint16_t* pDst =(uint16_t*) 0x80000400; ROM_uDMAChannelAttributeDisable (UDMA_CH21_EPI0TX、UDMA_ATTR_USEBURST); ROM_uDMAChannelAttributeEnable (UDMA_CH21_EPI0TX、UDMA_ATTR_USEBURST); ROM_uDMAChannelControlSet (UDMA_CH21_EPI0TX| UDMA_PRI_SELECT、 UDMA_SIZE_16| UDMA_SRC_INC_16 | uDMA_dst_INC_none| uDMA_ARB_8); ROM_uDMAChannelTransferSet (UDMA_CH21_EPI0TX | UDMA_PRI_SELECT、 UDMA_MODE_AUTO、AUData、&pDst、 256); ROM_uDMAChannelAssign (UDMA_CH21_EPI0TX); ROM_uDMAIntClear (UDMA_CH21_EPI0TX); ROM_uDMAChannelEnable (UDMA_CH21_EPI0TX); ROM_uDMAChannelRequest (UDMA_CH21_EPI0TX); EPIDMATxCount (EPI0_BASE、256);
和中断服务处理程序
void vfnEpi0Handler()
{
uint32_t USTATUS;
静态 uint32_t suEpiReady=0;
uint32_t uInts = ROM_EPIIntStatus (EPI0_BASE、TRUE);
开关(uInts)
{
EPI_INT_TXREQ 案例:
suEpiReady++;
中断;
EPI_INT_RXREQ 案例:
suEpiReady++;
中断;
EPI_INT_ERR 案例:
suEpiReady++;
中断;
EPI_INT_DMA_TX_DONE 情况:
suEpiReady++;
EPIIntErrorClear (EPI0_BASE、EPI_INT_ERR_DMAWRIC);
中断;
EPI_INT_DMA_RX_DONE 情况:
suEpiReady++;
中断;
默认值:
中断;
}
USTATUS = ROM_uDMAChannelModeGet (UDMA_CH21_EPI0TX);
if (USTATUS = UDMA_MODE_STOP)
{
// DMA 就绪
suEpiReady++;
}
};