查看: 180|回复: 4
收起左侧

为什么中断只能进一次?

[复制链接]

6

主题

34

帖子

102

积分

中级技术员

 楼主| 发表于 2017-5-15 20:53 | 显示全部楼层 |返回版面||阅读模式
我想设置电机每隔1s改变占空比,为什么进去中断一次之后后就不会循环?求指教
interrupt void  TINT0_isr(void)      // CPU-Timer 0
{
    CpuTimer0.InterruptCount++;
     if((increase==1)&&(decrease==0)) //如果占空比越来越小
      {
              EvaRegs.CMPR1=EvaRegs.CMPR1+938;
              if(EvaRegs.CMPR1>=0x41EB)
     {
                 EvaRegs.CMPR1=0x41EB;  //占空比到达最小的10%时,改变变化的方向
        increase=0;
        decrease=1;
     }
      }
         if((increase==0)&&(decrease==1)) //如果占空比越来越大
      {
              EvaRegs.CMPR1=EvaRegs.CMPR1-938;
              if(EvaRegs.CMPR1<=0x0753)
     {
                 EvaRegs.CMPR1=0x0753;  //占空比到达最大的90%时,改变变化的方向
        increase=1;
        decrease=0;
     }



      CpuTimer0Regs.TCR.bit.TIF=1;   //
   PieCtrl.PIEACK.bit.ACK1=1;    //
   EINT; //开全局中断

21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里 http://open.21ic.com 移步更多21ic独家微课:http://open.21ic.com/list/3/0/0
     

580

主题

1万

帖子

6万

积分

版主

发表于 2017-5-15 22:32 | 显示全部楼层 |返回版面
应该是相关外设的时钟没有使能
欢迎进入【TI DSP 论坛】 & 【DSP 技术】
          TI忠诚粉丝!
     

0

主题

8

帖子

26

积分

实习生

发表于 2017-5-16 09:43 | 显示全部楼层 |返回版面
一般只能进一次中断的原因是相关标志没有清零,没法进行下一次
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里 http://open.21ic.com 移步更多21ic独家微课:http://open.21ic.com/list/3/0/0

6

主题

34

帖子

102

积分

中级技术员

 楼主| 发表于 2017-5-16 10:00 | 显示全部楼层 |返回版面
yuerweihappy 发表于 2017-5-16 09:43
一般只能进一次中断的原因是相关标志没有清零,没法进行下一次

经过1s之后,程序运行到Defaults.c文件里的TINT0_isr(void)就停止了
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里 http://open.21ic.com 移步更多21ic独家微课:http://open.21ic.com/list/3/0/0

6

主题

34

帖子

102

积分

中级技术员

 楼主| 发表于 2017-5-16 10:01 | 显示全部楼层 |返回版面
zhangmangui 发表于 2017-5-15 22:32
应该是相关外设的时钟没有使能

时钟没使能还能运行?
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里 http://open.21ic.com 移步更多21ic独家微课:http://open.21ic.com/list/3/0/0
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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