兄弟们,求解
我用的是6747的片子,在用中断时,有几个寄存器的赋值出现错误,导致进不了中断。
GPIO_INSTAT23=0xFFFFFFFF;
GPIO_CLR_RIS_TRIG23=0x08000011;
GPIO_SET_FAL_TRIG23=0x08000011;
程序运行以后,我通过memory查看,发现GPIO_CLR_RIS_TRIG23和GPIO_SET_FAL_TRIG23这两个地址的值为0,而这两个地址+4的地址上,值为0x08000011。比如说GPIO_CLR_RIS_TRIG23的地址是0x012E605C,0x012E605C的值是0,而0x012E6060的值是0x08000011.
GPIO_INSTAT23这个地址的值也错误,不过与它相邻地址的值也不是0xFFFFFFFF。
请教一下各位高手,这是怎么回事啊
非常感谢!
noaming:
你可以在ccs中单步运行这几个赋值指令,并可以查看此时
GPIO_CLR_RIS_TRIG23等指针,此时指向的地址是不是该寄存器的地址。
rp zhang:
回复 noaming:
Titan
你可以在ccs中单步运行这几个赋值指令,并可以查看此时
GPIO_CLR_RIS_TRIG23等指针,此时指向的地址是不是该寄存器的地址。
noaming:
回复 rp zhang:
我看一下,在C6747芯片中
0x01E26000 到 0x01E26FFF 这4K的空间是GPIO寄存器的空间
而你所写的“0x012E6050”明显错误啊。。。
rp zhang:
回复 noaming:
Titan
我看一下,在C6747芯片中
0x01E26000 到 0x01E26FFF 这4K的空间是GPIO寄存器的空间
而你所写的“0x012E6050”明显错误啊。。。
rp zhang:
回复 noaming:
您好,我发现寄存器没有把值写进去,或者说我有赋值语句,但是通过memory窗口看的时候,显示的不是我赋的值,但是中断还是进去了。
这是为什么?
而且碰到一个新问题。由于.text和.far比较大,将其指向外部sdram,但是现在很容易跑飞,尤其是长时间工作后,基本上无法正常工作。
将程序放到外部sdram后,有什么需要特别注意的吗?还是说这种方式存有隐患?