还要注意,尽管PIC24和PIC32都用两个编译器进行编译,但它们在内存或外围寄存器中的设置和清除位是不同的。构建寄存器。BIT=值是PIC24的原子,但不是PIC32。为了获得PIC32的原子位操作,使用SET、CLR和IV偏移。这对于可由软件和硬件更改的寄存器尤其重要,其中一个寄存器具有用于多个功能(如中断标志)的位。如果不使用CLR偏移量来清除ISR中的中断标志,那么当运行具有高优先级的中断而低优先级的中断变为挂起并且两个中断共享相同的中断标志寄存器时,将很难发现读-修改-写错误。这将导致较低的PRIO中断在这种情况下根本不运行。更高优先级的中断也可能被触发两次。/ Ruben
还要注意,尽管PIC24和PIC32都用两个编译器进行编译,但它们在内存或外围寄存器中的设置和清除位是不同的。构建寄存器。BIT=值是PIC24的原子,但不是PIC32。为了获得PIC32的原子位操作,使用SET、CLR和IV偏移。这对于可由软件和硬件更改的寄存器尤其重要,其中一个寄存器具有用于多个功能(如中断标志)的位。如果不使用CLR偏移量来清除ISR中的中断标志,那么当运行具有高优先级的中断而低优先级的中断变为挂起并且两个中断共享相同的中断标志寄存器时,将很难发现读-修改-写错误。这将导致较低的PRIO中断在这种情况下根本不运行。更高优先级的中断也可能被触发两次。/ Ruben
举报