在线时间0 小时
UID371507
注册时间2012-7-17
NXP金币0
该用户从未签到
新手上路

- 积分
- 7
- 最后登录
- 1970-1-1
|
在做ECT输入捕捉,,单独测试 ECT输入捕捉都是好用的 。。。但是当加入定时器后 ,问题就出现了。。。。程序跑飞。。。定时器不好使了。。。。看了好几遍芯片手册也没找到原因。。。现在求教。。。谢谢了。。。很着急
下面是我的程序:
这是定时器的初始化:
void INIT_MDCU(void)
{
ECT_MCCTL = 0xc7; //使能模数计数器,分频常数为16,即模块时钟周期为0.5us,采用模数循环计数方式,允许中断
ECT_MCCNT = 50000; //模数常数为50000,则25ms产生一次中断
ECT_MCCTL_FLMC = 1; //将模数常数加载到模数计数器
ECT_MCCTL_MCZI = 0;
}
void ENABLE_MDCU_INT(void)
{
ECT_MCCTL_MCZI = 1; //允许计数器中断
}
定时器中断:
interrupt void MDCU_inter(void)
{
static uchar TimeNum = 0;
if(ECT_MCFLG_MCZF == 1) //判断是否是模数递减中断
ECT_MCFLG_MCZF = 1; //清除标志位
// 设置程序运行灯
if(TimeNum>=20)
{
LEDCPU_dir = 1;LEDCPU = ~LEDCPU;
TimeNum = 0;
}
TimeNum +=1;
}
下面是ECT输入捕捉的初始化:
void initialize_ect(void)
{
ECT_TSCR1_TFFCA = 1; // 定时器标志位快速清除
ECT_TSCR1_TEN = 1; // 定时器使能位. 1=允许定时器正常工作; 0=使主定时器不起作用(包括计数器)
ECT_TIOS = 0xfe; //指定所有通道为输出比较方式
ECT_TCTL4 = 0x01; // 设置通道0为捕捉上升沿方式
ECT_DLYCT = 0x00; // 延迟控制功能禁止
ECT_ICOVW = 0x00; // 对应的寄存器允许被覆盖; NOVWx = 1, 对应的寄存器不允许覆盖
ECT_ICSYS = 0x00; // 禁止IC及PAC的保持寄存器
ECT_TIE = 0x01; // 禁止所有通道定时中断
ECT_TSCR2 = 0x07; // 预分频系数pr2-pr0:111,,时钟周期为4us,
//PR2~PR0定时器预分频因子的选择
//主定时器的计数器频率=总线时钟频率 / (预分频因子)
//预分频因子 1 2 4 8 16 32 64 128 分别对应000~111
//TSCR2 定时器控制寄存器2
// 7 6 5 4 3 2 1 0
//TO1 0 0 0 TCRE PR2 PR1 PR0
ECT_TFLG1 = 0xff; // 清除各IC/OC中断标志位
ECT_TFLG2 = 0xff; // 清除自由定时器中断标志位
}
输入捕捉中断:
interrupt void capture(void)
{
if(ECT_TFLG1_C0F == 1)
ECT_TFLG1_C0F = 1;
DDRE_DDRE3 = 1;
PORTE_PE3 = ~PORTE_PE3;
}
求教。。。。。。。
|
|