今天,在编写TMS320F28035程序的时候,添加了某个配置功能,但必须要Rude Retry才能运行,否则无法采用Realtime Mode来运行程序。
后来,恢复到上一个运行正常的版本后,一点点加入之前添加的内容,终于发现了问题。原来是配置寄存器的时候调用了DRTM,但是配置完后没有使能ERTM。在配置寄存器之后,补上了一个ERTM就解决了问题。一时的疏忽大意,导致查找了将近半个小时的错误。
总结一下TI在TMS320F28xx标准库里定义的一些汇编语言:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | // 全局中断使能 #define EINT asm(" clrc INTM") // 全局中断禁止 #define DINT asm(" setc INTM") // Enable RealTime Mode, 使能实时模式 #define ERTM asm(" clrc DBGM") // Disable RealTime Mode, 禁止实时模式 #define DRTM asm(" setc DBGM") // E Allow, 解除保护,使能特殊寄存器的修改 #define EALLOW asm(" EALLOW") // E Disable,恢复保护,禁止特殊寄存器的修改 #define EDIS asm(" EDIS") // Emulator Stop,停止仿真,程序在此处会停住 // 类似端点的的功能 #define ESTOP0 asm(" ESTOP0") |
当DRTM后,处理器是不能进入实时模式的,除非勾选了Rude Retry。