ST7的16位通用定时器有常见的输入捕获和输出比较功能,在英文资料中输入捕获=Input Capture,输出比较=Output Compare;下面对输出比较功能做一个说明:
在16位的通用定时器中最关键的是一个16位的计数器,定时器中输入时钟是由CPU的时钟分频得到,分频系数通常是2、4、8可选;当定时器开启后,计数器就开始计数,计数达到0xFFFF时自动从0x0000开始计数,熟悉51的朋友特别要注意,只要定时器不停这个计数器就永远不会停止,除非关闭定时器否则无法停止计数器。
理解了定时器中计数器的工作方式,理解输出比较功能就容易了;输出比较功能是由一个16位(2个8位构成)的输出比较寄存器和输出比较电路组成(请看下
图),程序员把要比较的数值写入输出比较寄存器后,当计数器的值与输出比较寄存器的值相同时,相应的状态位就会置位,如相应的中断开放则有对应的中断产
生。
附件是一个STVD7的项目文件,演示了用输出比较功能实现的计时功能:
〉本程序每10us产生一个输出比较中断
〉每次输出比较中断中会将输出比较寄存器的内容加上一个固定的值,使得10us后在产生一个中断
〉每次中断程序中将变量TimerTick加一
〉主循环在TimerTick达到一个预定的值后退出
〉设TimerTick=100时退出主循环,再设TimerTick=200时退出主循环做一次,比较两次的运行时间验证程序的正确性。
下两个图分别是两次执行的结果,从执行时间看,程序正确!

/6
文章评论(0条评论)
登录后参与讨论