多年来、我很少在这里用汇编语言进行编码、多年来、我一直在使用 Launchpad 的 MSP430FR5969平台上运行非常复杂的算法。
但我今天遇到的问题是、I/O 端口寄存器 PxIFG 在清零时无法清零。 我以端口3为例、但端口1或2也是如此。
- 我已验证端口中的其他寄存器可以无问题地被写回
-端口3具有中断功能
-已清除 SR 中的 GIE 位为0 (不允许可屏蔽中断)
P3IE 寄存器首先被清零、尽管这一点不重要、因为它只影响中断请求而不影响中断标志寄存器。
- P3OUT、P3IES 不被写入、所以 P3IFG 不能被意外的 IFG 标志置位。
但 P3IFG 拒绝清除!
我已将主代码降至最低、以调查此问题。
CLR.b &P3IFG
MOV.b &P3IFG ,R4
但在 CCS 调试器中、R4值为53h 而不是0。 如果我断开电路板电源(USB 电缆)并重新连接并重新启动所有器件、我将获得另一个不会清除的随机值。
我尝试使用 CCS 调试器内存浏览器"fill memory"覆盖它。 我命令它在0x23C 处填充1个字 、这是 P3IFG 的物理地址。 我遇到错误
窗口显示:“Fill Memory Failed (填充内存失败)”。 地址0x23C 处的内存验证失败。" P1IFG 或 P2IFG 也会发生同样的情况。 但我验证了它可以毫无问题地写入其他位置。
用户指南指出 PxIFG 是读取/写入寄存器、端口中断可由软件通过写入来触发。
????