- UID
- 343571
- 性别
- 男
|
版主你好,我的一个输入捕捉周期的程序有问题,请版主帮忙啊
我的程序如下
输入捕捉初始化:
void Init_IC(void){
TIE = 0x00; //中断禁止
TSCR2 = 0x04; //0x03 分频系数为8,一次溢出时间为21ms,对应速度为0.1/s
//溢出中断禁止
TIOS = 0x00; //选择为输入捕捉
TCTL4 = 0x01; //沿选择
ICSYS = 0x0a; //00001010:两个有效沿之后中断,使能保持寄存器,队列模式
ICOVW_NOVW0 = 0; //0为允许重写
DLYCT = 0x01; //延时
TFLG1 = 0xff; //清中断标志
TIE = 0x01; //中断使能
TSCR1_TEN = 1; //定时器使能
}
中断程序:
interrupt void ECT_IC0(void){
b = TC0H;
a = TC0;
if(TFLG2_TOF == 1 ){
c = 0 ;
TFLG2_TOF = 1 ;
}
else{
c = a-b;
}
PORTB=~PORTB;
TFLG1_C0F = 1; //清中断标志
TCNT = 0;
TSCR1_TEN = 1; //定时器使能
}
这个程序我测试是正确的,但是我一旦启用实时中断的初始化之后,这个程序就不对了,输入捕捉对引脚上的变化没有任何的反应
以下初始化将总线时钟初始化为24M
void Init_CRG(void) {
SYNR=2;
REFDV=1;
while(!(CRGFLG&0x08)); //Set theCoreclk at 48MHZ,BUS at 24MHZ
CLKSEL=0x80;
//CRGINT=0x80; //0x80Enable the Interrupt of RTI
//RTICTL=0x75; //0x75
}
其中被格掉的即为实时中断的初始化,我一旦加上之后,输入捕捉就不工作了
怎么回事啊 ? |
|