后来,恢复到上一个运行正常的版本后,一点点加入之前添加的内容,终于发现了问题。原来是配置寄存器的时候调用了DRTM,但是配置完后没有使能ERTM。在配置寄存器之后,补上了一个ERTM就解决了问题。一时的疏忽大意,导致查找了将近半个小时的错误。
总结一下TI在TMS320F28xx标准库里定义的一些汇编语言:
// 全局中断使能
#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。
没有评论:
发表评论