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条回答
fxyc87
1楼-- · 2019-03-26 03:08
_NXP LPC1000_ LPC1114的官方库寄存器定义不是这样的啊,
你这是啥MCU啊?
wheats
2楼-- · 2019-03-26 08:50
fxyc87 发表于 2014-10-28 17:06
LPC1114的官方库寄存器定义不是这样的啊,
你这是啥MCU啊?

用的是周公的TinyM0的板子
jishuaihu
3楼-- · 2019-03-26 10:59
 精彩回答 2  元偷偷看……
wheats
4楼-- · 2019-03-26 13:40
jishuaihu 发表于 2014-10-28 18:45
为什么要改变中断状态。你可以在定时器中断里设置一个标志,等这个标志置位后再在捕获中断里面响应相应的操 ...

版主大大,那如果说我现在用的是LPC1114定时器的捕获功能的话,只用一个定时器的话,既想要实现上升沿捕获又想要下降沿捕获(用来测量占空比),那就肯定要改变中断状态了啊。
wheats
5楼-- · 2019-03-26 17:14
jishuaihu 发表于 2014-10-28 18:45
为什么要改变中断状态。你可以在定时器中断里设置一个标志,等这个标志置位后再在捕获中断里面响应相应的操 ...

当然版主大大的想法又让我学了一招
jishuaihu
6楼-- · 2019-03-26 18:06
没有用过LPC1114在中断中改变中断触发条件,理论上应该是可以的,一般来说除了个别寄存器需要在特定条件下改写一般的都是可以随时改写的,最好看一下数据手册相应部分的说明。有可能是改写需要特定的条件,或者是顺序。我在玩430的时候遇到过在中断里改变中断触发条件的例程,这样的要求应该是可以实现。
另外看你捕获的周期很长啊。最短的也有150s,这样其实用个定时器,1毫秒或者0.5毫秒扫描一下也可以的,这么长的捕获周期估计精度也不会要求太高了吧。

一周热门 更多>