我想在定时器中断的理中改变中断触发条件,但是行不通,请问有什么办法可以解决吗
- void timer0Isr(void)
- {
- flagALL = TMR32B0MCR;
- if(flagALL == 0x01)
- {
- TMR32B0IR=0x0f; //清除中断标志位
- flag30s=flag30s+1;
- TMR32B0MCR = 0x01;
- if(flag30s==5)
- {
- TMR32B0MCR=0x01<<3;//记满150s后转换成匹配通道1匹配中断
- }
- if(flag30s==119)
- {
- TMR32B0MCR=0x01<<6;//记满3570s后转换成匹配通道2匹配中断
- }
- }
- if(flagALL == 0x08)
- {
- TMR32B0IR=0x0f; //清除中断标志位
- flag30s=flag30s+1;
- flag3min=flag3min+1;
- TMR32B0MCR=0x01;//记满180s后转换成匹配通道0匹配中断
- }
- if(flagALL == 0x40)
- {
- TMR32B0IR=0x0f; //清除中断标志位
- flag30s=flag30s+1;
- flag1h=flag1h+1;
- TMR32B0MCR=0x01;//记满3600s后转换成匹配通道0匹配中断
- }
- TMR32B0TCR=0x02; //复位定时器
- return;
- }
LPC1114的官方库寄存器定义不是这样的啊,
你这是啥MCU啊?
为什么要改变中断状态。你可以在定时器中断里设置一个标志,等这个标志置位后再在捕获中断里面响应相应的操作,没有职位的话捕获后不处理,进一下匹配中断判断一下标志就出来。如果对CPU利用的不是特别高的话完全可以满足实际需要!
版主大大,那如果说我现在用的是LPC1114定时器的捕获功能的话,只用一个定时器的话,既想要实现上升沿捕获又想要下降沿捕获(用来测量占空比),那就肯定要改变中断状态了啊。
没有用过LPC1114在中断中改变中断触发条件,理论上应该是可以的,一般来说除了个别寄存器需要在特定条件下改写一般的都是可以随时改写的,最好看一下数据手册相应部分的说明。有可能是改写需要特定的条件,或者是顺序。我在玩430的时候遇到过在中断里改变中断触发条件的例程,这样的要求应该是可以实现。
另外看你捕获的周期很长啊。最短的也有150s,这样其实用个定时器,1毫秒或者0.5毫秒扫描一下也可以的,这么长的捕获周期估计精度也不会要求太高了吧。
这个片子好头疼,谁帮下忙?1013021765我的qq谢谢先