微控制器有时会复位。 为了追根溯源、我想配置看门狗、使其进行中断、然后在唤醒中断内部读取返回程序计数器的值、将其写入 EEPROM、然后复位。 假设这是可行的,我最大的障碍是如何访问 RPC 寄存器,即将其值读取到 C 符号中。 有人能用组装说明执行此操作的过程吗?
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.
微控制器有时会复位。 为了追根溯源、我想配置看门狗、使其进行中断、然后在唤醒中断内部读取返回程序计数器的值、将其写入 EEPROM、然后复位。 假设这是可行的,我最大的障碍是如何访问 RPC 寄存器,即将其值读取到 C 符号中。 有人能用组装说明执行此操作的过程吗?
Peter、您好!
参考 C28x 指令集、只能通过从栈推送/弹出 RPC 来访问它。 您可以将其推入堆栈、然后将其弹出到寄存器中以查看它、但这需要组装完成。
此致、
阿米尔·奥马尔
下面是一些可以正常工作的东西。 也许它会对其他人有所帮助。
uint32 rpc = 0uL;
interrupt void WatchDog_IntHandler(void) {
asm(" ASP");
asm(" PUSH DP");
asm(" PUSH DP");
asm(" PUSH RPC");
asm(" POP ACC");
asm(" MOVW DP, #_rpc");
asm(" MOVL @_rpc, ACC");
asm(" POP DP");
asm(" POP DP");
asm(" NASP");