写了一个例程,是用DMA来得到ADC的转换数据。用dma传输一半中断和传输完成中断实现了数据双缓冲的目的,在DMA中断函数中,用DMA_PDD_ClearInterruptFlagsMask(DMA_BASE_PTR, DMA_PDD_CHANNEL_MASK_1);
来清除DMA中断标志,总是不起作用。这代码来自freescale的DMA_PDD.h的文件。其定义如下:
从代码中可以看出是对某位直接清零的,而手册中是要求w1c操作来清零的:
所以代码作如下更改,便可以正常工作了。
DMA_INT |= DMA_PDD_CHANNEL_MASK_1;
|