我在使 UCB1中断触发时遇到问题。 我通常从未遇到过中断问题、因为我从事嵌入式代码已有大约40年。
我想我已经把它缩小到当我向 UCB1IE 寄存器写入一个3时、它不会写入。 它保持为0。
在执行行 UCB1IE = 0x03后、当我单步执行代码时、我有一个 IAR 调试器的屏幕截图。
如果仔细观察、您可以在主窗口的 USI_i2c.c 选项卡中看到、当前指令是 UCB1IFG = 0;(尚未执行)
刚刚执行的指令是 UCB1IE = 0x03;
当我查看观察1窗口时、我会期望 UCB1IE 为3、但它显示'\0'(0x00) Memory 0x63c
查看反汇编窗口、可以看到汇编命令是40F2 0003 063C、我认为这是将3移动到内存063C (UCB1IE)。
我再次跳了一步、只是为了确保观察窗口不在后面、但它保持为0。
我出了什么问题?
UCB1CTL1.UCSWRST = 1、这意味着当我更改这些值时它被保持在复位状态。 中断关闭、正如您在左侧的 CPU 寄存器窗口中看到的那样。 GIE = 0、如果中断打开、并且一个中断被触发、调试器本会将我带到中断服务例程。
基普
