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.

MSP430F55xx_dma_04示例程序中断进入疑问

Other Parts Discussed in Thread: MSP430F5529

再次在附件中附上示例程序,问题具体描述:

这段程序是用TimerB触发ADC12的转换,然后将结果通过DMA从ADC12MEM0储存到RAM中,中断的作用是来用LED灯显示DMA执行情况。

1.在程序运行的过程中,什么时候进入的中断?我通过示波器和寄存器窗口发现,进入中断后Timer依然在触发ADC,转换依然在继续,感觉像是while(1)循环。

2.若是想在转换2000个值之后退出ADC该怎么操作?

Thanks

  • 1. 程序运行过程中,当DMAxSZ值被置0后相应的DMAIFG标志位会被置1,然后DMAIFG标志位触发系统进入中断.

    2. DMA中断并不代表TB的计数会停止,所以TB任然会触发ADC采样。

    3. 如果你想实现转换2000个值后停止ADC采样,可以吧DMAxSZ的值设置成2000,这样当完成2000次转换后,系统会进入到DMA中断中,在DMA中断程序中你关闭TB和ADC即可。

    4. 例程中使用的是1次DMA转换,要实现楼主的功能需要更改目的BUFF。

  • 4. 例程中使用的是1次DMA转换,要实现楼主的功能需要更改目的BUFF。

    那除了要改变DMA_DST为DMA_DST[2000]之外,还需要改变其他变量吗?MSP430F5529的RAM有四个sector,每个sector都有2KB,应该不需要改变DMA0DA吧

  • 其他变量不需要改变。

    msp430f5529的RAM总共有8KRAM,分为4个Sector,每个Sector 有2KB,而且地址不连续,所以不能定义DMA的长度超过2K,否者会出错。