用小的HC32F460和HC32L130等,均遇到使用库无法达到目的的问题,使用例程也有例外。跟踪调试发现,在位操作时,相应的指令有误,和实际不符,现举例如下。
例如对某一位的操作:
M0P_SYSCTRL->SYSCTRL0_f.HCLK_PRS = 7;
相应的汇编指令为:
0x00000740 781C LDRB r4,[r3,#0x00]
0x00000742 2507 MOVS r5,#0x07
0x00000744 432C ORRS r4,r4,r5
0x00000746 701C STRB r4,[r3,#0x00]
0x00000748 4C31 LDR r4,[pc,#196] ; @0x00000810
R3作为间址地址,装载为:
而实际需要装载的是SYSCTRL0的地址0x40002000,
其执行结果错误。
在其它使用位操作的地方,均为间接寻址时的地址装载错误所导致。还未发现别的原因引起。
|