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.

6747 中断问题



兄弟们,求解

我用的是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。

请教一下各位高手,这是怎么回事啊

非常感谢!

  • 你可以在ccs中单步运行这几个赋值指令,并可以查看此时

    GPIO_CLR_RIS_TRIG23等指针,此时指向的地址是不是该寄存器的地址。

  • Titan 说:

    你可以在ccs中单步运行这几个赋值指令,并可以查看此时

    GPIO_CLR_RIS_TRIG23等指针,此时指向的地址是不是该寄存器的地址。

    感谢您的回答,地址没错

    现在的问题是,我在memory browser这个界面里,对地址直接写值,都无法写入。

    比如说,寄存器SET_RIS_TRIG23的地址是0x012E6050,我在memory里直接找到该地址,然后敲进去值,但是不能写进去,还是00000000.

    是不是中断有什么特别的设置?我的硬件配置上有错误?

  • 我看一下,在C6747芯片中

    0x01E26000 到 0x01E26FFF 这4K的空间是GPIO寄存器的空间

    而你所写的“0x012E6050”明显错误啊。。。

  • Titan 说:

    我看一下,在C6747芯片中

    0x01E26000 到 0x01E26FFF 这4K的空间是GPIO寄存器的空间

    而你所写的“0x012E6050”明显错误啊。。。

    不好意思,我发帖的时候敲错了。

    程序里的地址没有错,是0x01E26050。

  • 您好,我发现寄存器没有把值写进去,或者说我有赋值语句,但是通过memory窗口看的时候,显示的不是我赋的值,但是中断还是进去了。

    这是为什么?

    而且碰到一个新问题。由于.text和.far比较大,将其指向外部sdram,但是现在很容易跑飞,尤其是长时间工作后,基本上无法正常工作。

    将程序放到外部sdram后,有什么需要特别注意的吗?还是说这种方式存有隐患?