打印

关于STM32通用定时器的比较/捕获寄存器的一些疑问

[复制链接]
12192|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zoe2003|  楼主 | 2008-1-9 14:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
   最近看资料说:STM32F101xx系列产品中内置了3个通用定时器TIM2、TIM3、TIM4,每个定时器都有一个16位的自动加载递加/递减计数器、一个16位的预分频器和4个独立的通道,每个通道都可用于输入捕获、输出比较、PWM和单脉冲模式输出,在最大的封装配置中可提供最多12个输入捕获、输出比较或PWM通道。但是通用定时器中只有四个比较/捕获寄存器CCR1~CCR4,于是我就有以下的疑问:
1:在固件库中TIM_SetCompare1(TIM2)与TIM_SetCompare1(TIM2)有解释设置某个 TIM 捕获比较1 寄存器的值,这里的捕获比较寄存器1是否就是同一个计数器也就是CCR1呢?
2:如果对1的回答是,那么以下情况有是怎么回事呢?
 a、如果对TIM2的通道1设置为输入捕获状态,那么CCR1用来锁定计数器的值,CCR1就是只读的了。此时,如果TIM3要设置CCR1就不能实现。
 b、如果对TIM2的通道1设置为输出比较状态,TIM_SetCompare1(TIM2, IC1_Value),就设置了CCR1的值了。此时如果中断还没有产生,TIM_SetCompare1(TIM3, IC2_Value),那是不是重新设置了CCR1了?
3:如果对1的回答位否,那么感觉就像每一个TIM有4个通道,每一个通道对应1一个比较/捕获寄存器,岂不是与通用定时器只有4的比较/捕获寄存器相矛盾了?

 如何利用4个比较/捕获寄存器来产生12个输出比较中断呢?

期待高手回答,先谢过了!!
沙发
香水城| | 2008-1-9 15:01 | 只看该作者

不知道是不是理解了楼主的意思,答案应该很简单

TIM2有TIM2的CCR1,TIM3有TIM3的CCR1,它们互不干扰。

使用特权

评论回复
板凳
zoe2003|  楼主 | 2008-1-9 16:16 | 只看该作者

TIM2有TIM2的CCR1,TIM3有TIM3的CCR1

  如果这样推理的话,那就是说三个通用计数器其实有12个CCR了

使用特权

评论回复
地板
香水城| | 2008-1-9 16:19 | 只看该作者

3楼理解正确!

否则如何实现12路的比较/捕获?

使用特权

评论回复
5
nongfuxu| | 2008-1-30 17:27 | 只看该作者

2楼的答案真受用! 类比STM32103也是一样的.

使用特权

评论回复
6
chunfeng12| | 2008-2-1 17:47 | 只看该作者

RE

101不熟悉,我知道103,每个通用定时器有4个捕获比较通道,相对其他定时器这些通道都是独立的,如果设置了输入捕获模式就不能用做输出比较了。其实这个在函数库中也有涉及:
TIM_SetCompare1 Set the TIMx Capture Compare1 Reigster Value  ;
TIM_SetCompare2 Set the TIMx Capture Compare2 Reigster Value  ;
TIM_SetCompare3 Set the TIMx Capture Compare3 Reigster Value  ;
TIM_SetCompare4 Set the TIMx Capture Compare4 Reigster Value  ;
上面不是写着TIMx吗?

同时我试过用TIM3和TIM4实现2路可控硅调光

使用特权

评论回复
7
无名士1994| | 2014-10-20 16:16 | 只看该作者
我现在正想用F407,写一个8路捕获的,分别用TIM3,TIM4,但是TIM3的能捕获,但是TIM4的中断都进不去。求大神解答

使用特权

评论回复
8
yhy123456| | 2015-5-6 21:00 | 只看该作者
学习啦  

使用特权

评论回复
9
myxiexing| | 2015-5-6 22:28 | 只看该作者
受教了0..

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

9

主题

29

帖子

0

粉丝