大家好,我用的是6678L,主要想完成以下工作,1)用EDMA将数据从数组A搬运到数组B。2)结束之后EDMA出发中断,进入中断程序。大概结构如下:
中断服务程序()
{
中断任务;
}
中断控制器初始化程序()
{
}
main()
{
中断控制器初始化程序();//调用中断初始化程序,初始化intc和cic
EDMA搬运任务;
}
这样写完之后,编译通过,但是运行结果发现B里面没有搬运到的数据。edma我用的是cpu写ESR的触发,单步执行发现该语句执行完之后,没有触发EDMA进行搬运。
然后我进行了如下调试:
将中断初始化程序删除,并将main函数中对该函数的调用语句注释掉,编译通过,发现数据搬运正常。
然后还原中断初始化程序,但是main中的调用语句仍然注释掉,编译通过,但是发现没有发生数据搬运。
main函数里面对edma配置和使用的代码,和中断控制器初始化程序没有任何联系,中断初始化程序只是配置了以下几个寄存器而已,为什么会对edma造成影响呢?而且就算有影响,我把调用该函数的语句从main中注释掉,应该就不会执行了啊,为什么一定要删除其代码才可以搬运数据呢?
还有就是编译通过后,发现A数组和B数组的地址,在删除和不删除中断初始化程序时,是不一样的,请问这个有什么影响吗?
问题比较多,在这里先谢谢各位老师!