2010年9月22日星期三

关于EALLOW之类的汇编宏定义

今天,在编写TMS320F28035程序的时候,添加了某个配置功能,但必须要Rude Retry才能运行,否则无法采用Realtime Mode来运行程序。
后来,恢复到上一个运行正常的版本后,一点点加入之前添加的内容,终于发现了问题。原来是配置寄存器的时候调用了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。

没有评论:

发表评论