LPC1114的定时器与中断问题

2019-03-25 20:12发布

我想在定时器中断的理中改变中断触发条件,但是行不通,请问有什么办法可以解决吗
  1. void timer0Isr(void)
  2. {
  3.         flagALL = TMR32B0MCR;
  4.         if(flagALL == 0x01)
  5.         {
  6.                 TMR32B0IR=0x0f;                 //清除中断标志位
  7.                 flag30s=flag30s+1;
  8.                 TMR32B0MCR = 0x01;       
  9.                 if(flag30s==5)
  10.                 {
  11.                         TMR32B0MCR=0x01<<3;//记满150s后转换成匹配通道1匹配中断
  12.                 }
  13.                 if(flag30s==119)
  14.                 {
  15.                         TMR32B0MCR=0x01<<6;//记满3570s后转换成匹配通道2匹配中断
  16.                 }
  17.         }
  18.         if(flagALL == 0x08)
  19.         {
  20.                 TMR32B0IR=0x0f;                 //清除中断标志位
  21.                 flag30s=flag30s+1;
  22.                 flag3min=flag3min+1;
  23.                 TMR32B0MCR=0x01;//记满180s后转换成匹配通道0匹配中断
  24.         }
  25.         if(flagALL == 0x40)
  26.         {
  27.                 TMR32B0IR=0x0f;                 //清除中断标志位
  28.                 flag30s=flag30s+1;
  29.                 flag1h=flag1h+1;
  30.                 TMR32B0MCR=0x01;//记满3600s后转换成匹配通道0匹配中断
  31.         }
  32.         TMR32B0TCR=0x02; //复位定时器
  33.         return;
  34. }
复制代码 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
9条回答
jishuaihu
2019-03-26 18:06
没有用过LPC1114在中断中改变中断触发条件,理论上应该是可以的,一般来说除了个别寄存器需要在特定条件下改写一般的都是可以随时改写的,最好看一下数据手册相应部分的说明。有可能是改写需要特定的条件,或者是顺序。我在玩430的时候遇到过在中断里改变中断触发条件的例程,这样的要求应该是可以实现。
另外看你捕获的周期很长啊。最短的也有150s,这样其实用个定时器,1毫秒或者0.5毫秒扫描一下也可以的,这么长的捕获周期估计精度也不会要求太高了吧。

一周热门 更多>