Hi all:
最近发现一个问题,就是操作SCI 的SCIGCR0寄存器组,我发现居然不能读,但是可以写!一读就引起hardfault,不知道什么地方可以设置?
谢谢
klapset
Ken Wang:
Klapset,
首先SCIGCR0这个寄存器只有在privilege mode下面才能操作。一般我们都是在初始化模块是对他进行写操作来reset模块和使能模块。
你需要读的目的,是想确认SCI模块是否工作吗?
谢谢
chou klapset:
回复 Ken Wang:
也不是要可以去读,是对寄存器 比如 Reg0 |= 0x1 这样的操作, 汇编上先把Reg0读出来再赋值,使得非操作位不变。这种情况都会产生hardfault。
昨天观察DEMO中,发现有一条语句就可以搞定,就是 SYSTEM寄存器 有一个全局使能外设的寄存器,具体我记不得。这个置1就OK了。但是不太知道为何会这样。
但是如果写操作即可reset的话,那发生hardfault语句前面都是直接赋值, 如Reg0 = 0x12345678; 这样不会引发异常, 到了 |= 操作就出问题了。