在F28335的程序编写中,经常会对寄存器的值进行修改,但为了避免在工作过程中寄存器的值发生误操作,F28335对寄存器有保护功能,必须先解除保护功能才能对寄存器进行操作。
EALLOW(Edit ALLOW)指令用于允许对寄存器进行操作,即解除寄存器保护功能。
EDIS(Edit DISABLE)指令用于失能寄存器操作功能,重新恢复对寄存器的保护功能。
代码案例
EALLOW; //解除对寄存器的保护
PieVectTable.ADCINT = &ADC_ISR; //ADC中断
PieVectTable.TINT0 = &ISRTimer0; //Timer0中断
GpioCtrlRegs.GPBPUD.bit.GPIO32 = 0; // Enable pull-up on GPIO32 (EPWMSYNCI)
GpioCtrlRegs.GPBQSEL1.bit.GPIO32 = 0; // Synch to SYSCLKOUT GPIO32 (EPWMSYNCI)
GpioCtrlRegs.GPBMUX1.bit.GPIO32 = 2; // Enable pull-up on GPIO32 (EPWMSYNCI)
EDIS; //Edit disable,恢复寄存器的被保护状态
从代码案例可以看出,在对PIE中断向量、GPIO多路选择寄存器、GPIO上拉寄存器、GPIO引脚时钟模式寄存器进行配置时,需要先使用EALLOW进行保护解除,配置完成后使用EDIS恢复保护状态。
个人思考:
除了上述寄存器,还有哪些寄存器受保护?
器件仿真寄存器、闪存寄存器、CSM寄存器、系统控制寄存器、某些eCAN寄存器(一些寄存器本人并未使用过,摘自CSDN博主----种瓜大爷)