[STM32F1] 定时器中断服务函数

[复制链接]
 楼主| 铜牌之路 发表于 2015-9-7 15:13 | 显示全部楼层 |阅读模式
       想请教一下,我用TIM8的编码器模式计数,主程序又要做其他的,可以把编码器计数放到一个定时器如TIM3的中断服务函数中一直计数吗?我是想程序一开始执行就在编码器模式下计数,然后需要的时候就去查看这个计数值!
        多谢回答!!!
皈依 发表于 2015-9-7 15:17 | 显示全部楼层
1 搞不明白什么叫编码器模式。。。
2 另外放在TIM里面是每一个时钟计数一次,一直计数,和你计数的条件一致么?
3 要注意TIM计数有上限值,超过上限值就溢出
 楼主| 铜牌之路 发表于 2015-9-7 15:35 | 显示全部楼层
皈依 发表于 2015-9-7 15:17
1 搞不明白什么叫编码器模式。。。
2 另外放在TIM里面是每一个时钟计数一次,一直计数,和你计数的条件一致 ...

定时器里面有一个编码器模式,特别用着对编码器计数  
皈依 发表于 2015-9-7 15:36 | 显示全部楼层
铜牌之路 发表于 2015-9-7 15:35
定时器里面有一个编码器模式,特别用着对编码器计数

你说的是计数模式吧。。
 楼主| 铜牌之路 发表于 2015-9-7 15:38 | 显示全部楼层
14.3.12 编码器接口模式
选择编码器接口模式的方法是:如果计数器只在TI2的边沿计数,则置TIMx_SMCR寄存器中的
SMS=001 ;如果只在TI1 边沿计数,则置SMS=010;如果计数器同时在TI1 和TI2边沿计数,则
置SMS=011 。
通过设置TIMx_CCER寄存器中的CC1P和CC2P位,可以选择TI1 和TI2极性;如果需要,还可以
对输入滤波器编程。
两个输入TI1 和TI2被用来作为增量编码器的接口。参看表77,假定计数器已经启动(TIMx_CR1
寄存器中的CEN=’1’),计数器由每次在TI1FP1 或TI2FP2上的有效跳变驱动。 TI1FP1 和TI2FP2
是TI1 和TI2在通过输入滤波器和极性控制后的信号;如果没有滤波和变相,则TI1FP1=TI1 ,
TI2FP2=TI2。根据两个输入信号的跳变顺序,产生了计数脉冲和方向信号。依据两个输入信号
的跳变顺序,计数器向上或向下计数,同时硬件对TIMx_CR1 寄存器的DIR位进行相应的设置。
不管计数器是依靠TI1 计数、依靠TI2计数或者同时依靠TI1 和TI2计数。在任一输入端(TI1 或者
TI2)的跳变都会重新计算DIR位。
编码器接口模式基本上相当于使用了一个带有方向选择的外部时钟。这意味着计数器只在0到
TIMx_ARR寄存器的自动装载值之间连续计数(根据方向,或是0到ARR计数,或是ARR到0计
数)。所以在开始计数之前必须配置TIMx_ARR;同样,捕获器、比较器、预分频器、触发输出
特性等仍工作如常。
皈依 发表于 2015-9-7 16:03 | 显示全部楼层
铜牌之路 发表于 2015-9-7 15:38
14.3.12 编码器接口模式
选择编码器接口模式的方法是:如果计数器只在TI2的边沿计数,则置TIMx_SMCR寄存器 ...

。。。明白了。就是我说的计数模式。。。
可以计数啊,但是要注意我讲的 你放在TIM里面,每次跳变就计数一次,和你的计数条件一致么?
第二,计数有上限,要注意清零。
可可球 发表于 2015-9-8 21:52 | 显示全部楼层
可以设个标志位的
拉克丝 发表于 2015-9-9 22:11 | 显示全部楼层
要注意TIM计数有上限值,超过上限值就溢出
冰河w 发表于 2015-9-9 22:18 | 显示全部楼层
在TIM里面是每一个时钟计数一次的
FireRiver9 发表于 2015-9-9 22:26 | 显示全部楼层
用不同的定时器
 楼主| 铜牌之路 发表于 2015-9-10 17:11 | 显示全部楼层

问题解决了 谢谢
 楼主| 铜牌之路 发表于 2015-9-10 17:12 | 显示全部楼层
冰河w 发表于 2015-9-9 22:18
在TIM里面是每一个时钟计数一次的

TIM一直在计数,问题解决了 谢谢
 楼主| 铜牌之路 发表于 2015-9-10 17:12 | 显示全部楼层
拉克丝 发表于 2015-9-9 22:11
要注意TIM计数有上限值,超过上限值就溢出

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

本版积分规则

9

主题

85

帖子

0

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

9

主题

85

帖子

0

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