关于2812定时器比较中断的问题

[复制链接]
 楼主| 电子乌鸦 发表于 2008-9-26 08:52 | 显示全部楼层 |阅读模式
void&nbsp;InitEvaTimer1(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;EvaRegs.GPTCONA.all&nbsp;=&nbsp;0x0000;<br />&nbsp;&nbsp;&nbsp;&nbsp;EvaRegs.T1PR&nbsp;=&nbsp;0x0100;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//T1周期寄存器<br />&nbsp;&nbsp;&nbsp;&nbsp;EvaRegs.T1CMPR&nbsp;=&nbsp;0x0100;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//T1比较寄存器<br />&nbsp;&nbsp;&nbsp;&nbsp;EvaRegs.EVAIMRA.bit.T1CINT&nbsp;=&nbsp;1;&nbsp;&nbsp;&nbsp;&nbsp;//T1中断屏蔽寄存器<br />&nbsp;&nbsp;&nbsp;&nbsp;EvaRegs.EVAIFRA.bit.T1CINT&nbsp;=&nbsp;1;&nbsp;//T1中断标志寄存器<br />&nbsp;&nbsp;&nbsp;&nbsp;EvaRegs.T1CNT&nbsp;=&nbsp;0x0000;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//T1计数器清零<br />&nbsp;&nbsp;&nbsp;&nbsp;EvaRegs.T1CON.all&nbsp;=&nbsp;0x1742;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//T1控制寄存器&nbsp;&nbsp;&nbsp;&nbsp;<br />}<br />这是定时器比较中断初始化函数,我想问一下再做定时器比较中断的时候为什么要设置T1PR&nbsp;寄存器呢,比较中断应该是设置T1CMPR,然后TICNT计数値与T1CMPR设置値相等的时候触发比较中断啊,好像和T1PR没有什么关系啊,但是再实际用的时候必须要设置T1PR,而且T1CMPR的値还必须小于或等于T1PR的値才能产生中断,即使T1CMPR设置成0也可以,好像T1CMPR没什么用似得。有用过比较中断的吗,指点一下吧
snakeemail 发表于 2008-9-27 14:36 | 显示全部楼层

无它,使劲看几遍就明白了

  
cauhorse 发表于 2008-10-3 16:33 | 显示全部楼层

看技术文档

通用定时器的周期是需要设置的,<br />以单向增/减计数为例,通过设置不同的定时周期,<br />相应的比较器触发周期也会变化,<br />这一点在使用PWM波形发生时很重要,<br />直接影响波形的周期。<br />理解它的最好办法还是去找个PWM有关的技术文档看看。
tjsheep 发表于 2008-10-3 21:16 | 显示全部楼层

呵呵,txcmpr比较完了,还要txpr恢复呢

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

本版积分规则

11

主题

21

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部