我实验了下CCS3.3的example,C:\CCStudio_v3.3\examples\dsk5416\csl\dma\dma4,发现测试打印的log一直停留在<DMA4>的位置,CCS3.3出现光标停在空白行,我想这个例子应该是可以没有问题,请教下是什么原因导致的?
Shine:
你好,
这个例子没有问题, 我这边有正确的打印信息.
你跟一下程序运行到哪里了?
xiaoling zhou:
回复 Shine:
光标停下来就是个空白的位置,如下所示,
在 while(!(MCBSP_xrdy(myhMcbsp))){
;
}
MCBSP_write16(myhMcbsp,src[0]);
设置断点的话,会发现死在这个while的位置;
补充一下,我使用的不是DSK。我本来是想参考这个例子,使用mcbsp的CSL库函数,采用挂接中断的接收发送数据,可是在IRQ_globalEnable()后没有进入中断,停下来也是一个空的位置,不知道代码跑到什么地方去了,所以回头就试验了下这个例子,结果发现结果一样。不知是什么地方出了问题
Shine:
回复 xiaoling zhou:
你好,
你对dma4例程没做什么修改吧? 你试试附件我的.out文件, 我是在simulator模式下运行的.
xiaoling zhou:
回复 Shine:
没有改过,我的如果在simulator上运行也是正常的,为何到板子上运行会有问题呢
Shine:
回复 xiaoling zhou:
你试试dma1, timer和mcbsp1自环例程, 看是否能运行? 如果只是mcbsp1不能运行, 其他两个可以运行的话, 可能mcbsp模块有问题了.
xiaoling zhou:
回复 Shine:
dma1,mcbsp1运行正常,timer看样子不正常。运行3次。第1次就只打印出<TIMER>,第2次在timerIsr里设置了断点,打印出来是
<TIMER>
TEST PASSED
<TIMER>
TEST PASSED
第3次打印出来的是
<TIMER>
<TIMER>
<TIMER>
这个是怎么回事?
Shine:
回复 xiaoling zhou:
你的板子是新做的还是以前的旧板?
量一下clkout输出看芯片是否稳定工作.
xiaoling zhou:
回复 Shine:
旧板子, 我上网查了下其他参考例子,增加了 PMST=PMST&0XFF, 发现在板子上可以正常运行,进中断。但是如果在SIMULATOR环境下,加这一句,则会出现反复进入main()函数的情况,类似打印如下:
<TIMER>
TEST PASSED
<TIMER>
TEST PASSED
不是很理解为什么这句话可解决这个问题,但是又会导致在SIMULATOR上发生这样的异常情况。补充:在板上,运行的gel文件,对PMST初始化=0XFFE0, 在SIMULATOR环境下初始化=0XFFE8.