大家好、同事、
请举一个使用 DMA_INT0_SRCFLG 寄存器的示例
我知道在 DMA 中 、INT_DMA_INT0中断被用作或(公共)中断、用于所有 DMA 情况、但 DMA 源被写入 DMA_INT0_SRCFLG 寄存器、
有人有 这样的 C 代码示例吗?
谢谢
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.
大家好、同事、
请举一个使用 DMA_INT0_SRCFLG 寄存器的示例
我知道在 DMA 中 、INT_DMA_INT0中断被用作或(公共)中断、用于所有 DMA 情况、但 DMA 源被写入 DMA_INT0_SRCFLG 寄存器、
有人有 这样的 C 代码示例吗?
谢谢
通过"API 内部"、我的意思是有 API 例程执行此操作、您可以查看代码内部以了解如何完成此操作。 这些内容可在 c:\ti\simplelink_msp432_sdk_下找到 \source\ti\devices\msp432p4xx\driverlib\
在本例中、请查看 dma.c 和 dma.h API 是 DMA_getInterruptStatus(),它返回32位值(UINT32_T)。 通过该值、您可以确定哪个 DMA 通道是 DMA_INT0中断的源。 此32位值的定义可在 《MSP432P401R/M 技术参考手册 》第9.3.7节(DMA_INT0_SRCFLG 寄存器)中找到。 本质上、位31是 CH31、位30是 CH30、依此类推。 检查此项的代码片段(使用 driverlib 调用)为:
//示例中断处理程序
空 DMA_INT1_IRQHandler (空)
{
uint32_t dma_status;
MAP_DMA_clearInterruptFlag (0);
dma_status = dma_getInterruptStatus();
//此示例假定只有 CH0-2被配置并且能够生成中断请求
if (dma_status 和 dma_INT0_SRCFLGA_CH0){
//处理 CH0
}
if (dma_status 和 dma_INT0_SRCFLGA_CH1){
//处理通道1
}
if (dma_status 和 dma_INT0_SRCFLGA_CH2){
//处理通道2
}
}