2、对PDATD寄存器的初始化示例二:IMMR基地址 + 寄存器偏移地址,偏移值为0
lis r5, HIADJ (0xfbffffff) /* 对某一管脚置0 */
addi r5, r5, LO (0xfbffffff)
lis r6, HIADJ (0x04700000 + 0x010D70) /* 取PDATD寄存器的地址 */
addi r6, r6, LO (0x04700000 + 0x010D70)
stw r5, 0 (r6) /* 将初始化值写到PDATD寄存器 */
在这一过程中容易出现的错误是IMMR的基地址的混淆,因为在起始阶段由HRCW[ISB]决定了一个默认的IMMR的基地址,在后续代码中可能会对IMMR基地址进行重定义,所以在调用点灯程序时要根据程序执行到的位置对IMMR基地址值进行相应重置。