打印

STM32定时器单脉冲模式

[复制链接]
11376|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wxx116zh|  楼主 | 2011-11-23 20:01 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
请问香主,定时器单脉冲模式中,定时器是不是必须通过TIx输入脚的边沿检测逻辑设置CEN位来启动计数器,手动设置CEN位能不能启动。配置代码是:
TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct;
TIM_TimeBaseInitStruct.TIM_Period = 0x0BB8;  //3000计数
TIM_TimeBaseInitStruct.TIM_Prescaler = 0x0001; //2分频
TIM_TimeBaseInitStruct.TIM_ClockDivision = TIM_CKD_DIV1;
TIM_TimeBaseInitStruct.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM1, &TIM_TimeBaseInitStruct);

TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2;
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Enable;
TIM_OCInitStructure.TIM_Pulse = 0x7D0;          //2000翻转
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
TIM_OCInitStructure.TIM_OCNPolarity = TIM_OCNPolarity_High;
TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Reset;
TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCNIdleState_Reset;
TIM_OC1Init(TIM1, &TIM_OCInitStructure);
                        
TIM_SelectOnePulseMode(TIM1, TIM_OPMode_Single);  //选择单脉冲模式
TIM_CtrlPWMOutputs(TIM1, ENABLE);
TIM_Cmd(TIM1, ENABLE);

这样的话,在CH1的输出出现了7个脉冲。不知道这样的配置是否正确。

还有一个问题是:通过TIM1_CR2的MMS位选择将OC1REF信号被用于作为触发输出(TRGO)时, 在连接定时器1的TRGO1输出至定时器2时,在TIM2_SMCR的TS位中,应该内部触发的那个序号,才能将TIM1的输出连接到TIM2。

谢谢香主。
沙发
wxx116zh|  楼主 | 2011-11-23 21:28 | 只看该作者

RE: STM32定时器单脉冲模式

TIM内部的触发连接,在手册上面找到有。

未命名.jpg (15.95 KB )

未命名.jpg

使用特权

评论回复
板凳
wxx116zh|  楼主 | 2011-11-24 09:49 | 只看该作者
问题找到了,使用固件库的时候,TIM1的重复计数器没有使用,没有赋值,在定时器初始化之后,RCR被赋值为6,结果就出来了7个脉冲。

使用特权

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

本版积分规则

7

主题

62

帖子

1

粉丝