打印

STM32 定时器问题

[复制链接]
1415|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
anqir621|  楼主 | 2012-4-27 13:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如下配置定时器3通道3输出pwm, 定时可以正常输出,但如果改变ARR 的值,定时器为何停止工作,且无法再次使能
void TIM3_Initial(void)
{
   
TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
TIM_OCInitTypeDef  TIM_OCInitStructure;
  /* Time Base configuration */
  TIM_TimeBaseStructure.TIM_Prescaler = 0x08;
  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
  TIM_TimeBaseStructure.TIM_Period = 31999;  //TIMx->ARR
  TIM_TimeBaseStructure.TIM_ClockDivision = 0;
  TIM_TimeBaseStructure.TIM_RepetitionCounter = 0;
  TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);
  
  /* Enables the TIM3 Preload on ARR Register */
   TIM_ARRPreloadConfig(TIM3, ENABLE);
  
  /* Channel 3Configuration in PWM mode */
  TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
  TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Disable;
  TIM_OCInitStructure.TIM_Pulse = 16000;  //TIMx->CCR1
  TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low; //TIM_OCPolarity_Low
  TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Reset;
   TIM_OC3Init(TIM3, &TIM_OCInitStructure);


  /* Enables the TIM3 Prelaod on CC3 Register */
  TIM_OC3PreloadConfig(TIM3, TIM_OCPreload_Enable);
沙发
PowerSource| | 2012-4-29 16:01 | 只看该作者
怎么知道是定时器不工作了?

使用特权

评论回复
板凳
cs0617| | 2012-4-30 20:01 | 只看该作者
定时器不工作是什么意思,你的意思是不是没有PWM了,你还是哪里没有设置好

使用特权

评论回复
地板
cs0617| | 2012-4-30 20:01 | 只看该作者
定时器不工作是什么意思,你的意思是不是没有PWM了,你还是哪里没有设置好

使用特权

评论回复
5
anqir621|  楼主 | 2012-5-1 19:27 | 只看该作者
是的,PWM停止输出

使用特权

评论回复
6
logokfu| | 2012-5-1 19:31 | 只看该作者
你把值改成多少了。
最好把工程打包发上来,我调调试试。

使用特权

评论回复
7
anqir621|  楼主 | 2012-5-1 20:58 | 只看该作者
值改变是正确的,以前一直是这样用的,如果改成通道1 就是正常的

使用特权

评论回复
8
anqir621|  楼主 | 2012-5-4 13:56 | 只看该作者
明白了,我改变的是CCR1的值,应该是改变CCR4的值

使用特权

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

本版积分规则

0

主题

40

帖子

1

粉丝