智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 1643|回复: 0
打印 上一主题 下一主题

[单片机] 定时器和PIT中断标志位不能清除!!!

[复制链接]

2

主题

4

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
306
威望
173
贡献
81
兑换币
98
注册时间
2014-1-1
在线时间
26 小时
毕业学校
电子科技大学
跳转到指定楼层
1#
发表于 2014-3-9 19:45:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
10贡献
定时器和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;

    }

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-9-23 06:30 , Processed in 0.080419 second(s), 34 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表