我写了个DMA传输的程序,打开了DMA使能中断,对DMAIFR也进行了清零,在不打开全局中断,即INTM=1的情况下,数据传输完成了,对应的DMAIFR相应的位置为1了,IFR的DMA位也为1了,但是同样的程序,仅仅只是加了一条语句,asm(" BCLR INTM , ST1_55");,即打开全局中断,然后就在我打开DMA使能开关,让他开始传输时,程序跑飞了。
哦,还有一个奇怪的现象,当我将IFR0,IFR1,都清零后,第一次用printf()函数打印出来,没有错误,全部是零,但是,当我再次打印一遍的时候,他竟然有值了,查看了下寄存器,对应SAR位的,即AD采样中断位,这是什么原因呢?
硬件平台,TMS320C5517 EVM,软件程序,就是在SDI网站上下载的led程序,加了点语句而已。(也可以理解为对IFR0,IFR1q清零,在打印两边)。
Shine:
加大stack, heap size试试。