调试TIM3,好像CCRX不起作用。

[复制链接]
 楼主| hl1200aa 发表于 2009-3-15 23:19 | 显示全部楼层 |阅读模式
本来想利用TIM3产生基准时间,通过CCR1做一个可调的闪烁LED实验,但是怎么调整TIM_OCInitStructure.TIM_Pulse都没有用,LED闪烁的速度都一样,郁闷ing,请高手指点下。

/* Time base configuration */ 
  TIM_TimeBaseStructure.TIM_Period = 65535;           
  TIM_TimeBaseStructure.TIM_Prescaler =200;        
  TIM_TimeBaseStructure.TIM_ClockDivision = 0;     
  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  
   
  TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); 

 /* Output Compare Toggle Mode configuration: Channel1 */ 
   TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_Toggle;           
  TIM_OCInitStructure.TIM_Channel = TIM_Channel_1;           
  TIM_OCInitStructure.TIM_Pulse =1;   
  TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low; 
  TIM_OCInit(TIM3, &TIM_OCInitStructure); 

  TIM_OC1PreloadConfig(TIM3, TIM_OCPreload_Enable); 
  /* TIM3 enable counter */ 
  TIM_Cmd(TIM3, ENABLE); 
barboon 发表于 2009-3-16 10:00 | 显示全部楼层

那是因为你选择的是TIM_OCMode_Toggle模式

TIM_OCMode_Toggle模式下,每当计数器值等于CCR寄存器的值,OCxREF就翻转一次,相应的输出也会翻转一次。lz的程序里

TIM_TimeBaseStructure.TIM_Period = 65535;

TIM_OCInitStructure.TIM_Pulse =1;

这就是说,计数器从0到65535计数,每当到1的时候,输出反转,不管你把TIM_Pulse改成几,都是每65535翻转一次,怎么改都是一样的。

这种情况下,如果你期望输出的反转频率改变应该修改
TIM_TimeBaseStructure.TIM_Period = 65535;
或者
TIM_TimeBaseStructure.TIM_Prescaler =200;
这个参数
 楼主| hl1200aa 发表于 2009-3-16 12:31 | 显示全部楼层

谢谢!

谢谢 barboon
 楼主| hl1200aa 发表于 2009-3-16 19:34 | 显示全部楼层

求timer的详细资料

barboon
哪里有关于timer的详细介绍阿?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

44

帖子

0

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