智能车制作
标题:
XS128的PITTF始终为1,不能清除
[打印本页]
作者:
卟棄
时间:
2014-3-25 03:43
标题:
XS128的PITTF始终为1,不能清除
定时器和PIT中断标志位不能清除!!!只要一使能相应的定时器活着PIT中断相应的中断标志位就会置一,并且用过各种发放都清不掉??求大神解救啊!程序: void pit_init(INT8U CHNo,INT16U TIME,INT8U MICRO)
{
//禁止定时器
PITCFLMT&=~(1<<7);
// 使能PIT通道CHNo
PITCE|=(1<<CHNo);
// 选用8位模寄存器0产生的计数基准
if(!MICRO)
PITMUX&=~(1<<CHNo);// 选择微定时器0
else
PITMUX|=(1<<CHNo);//选择微定时器1
// 定时器一次中断时间 = (PITMTLD + 1) * (PITLD + 1) / fBUS
// =(0xF4+1)*(0xFFFF+1)/32MHz≈0.5s
PITMTLD0=0x1F; //8位模寄存器
PITLD0=TIME-1; //16位模寄存器
// 使能定时器
PITCFLMT|=(1<<7); //
执行到这句的时候PTF0就开始变成1了!!!
// 清通道CHNo溢出标志,载入新的计时时间
PITTF|=(1<<CHNo);
// 禁止PIT通道0中断
PITINTE&=~(1<<CHNo);
}
void main()
{
DISABLE_INTERRUPTS();
MCUInit(FBUS_32M);//选择PLL锁相环为32MHz
pit_init(PIT0,1000,0);//控制周期为1ms
ENABLE_INTERRUPTS();//使能总中断
EnablePITInt(PIT0); //使能PIT通道pit0溢出中断,计时已经开始
}
__interrupt void isr_pitch(void)
{
DISABLE_INTERRUPTS();
PITCE_PCE0=0;//
试过用PITTF=0X01也不能清
ENABLE_INTERRUPTS();
PITCE_PCE0=1;
}
欢迎光临 智能车制作 (http://dns.znczz.com/)
Powered by Discuz! X3.2