打印

菜鸟关于TIME2设置的问题

[复制链接]
2130|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lgy218|  楼主 | 2011-8-10 14:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
第一次发帖,希望尽量把问题说清楚,不要嫌我啰嗦哈。
手上有两段程序,都是关于TIME2的,对它们的TIME2时钟频率有一些疑惑。

程序1:
TIM_TimeBaseStructure.TIM_Period = 4999;            // 在下一个更新事件时装入的自动重装载寄存器周期(0~0xFFFF)
TIM_TimeBaseStructure.TIM_Prescaler = 71;           // 预分频值为71+1 = 72(时钟TIM2_CLK = 72MHz/72 = 1MHz)
TIM_TimeBaseStructure.TIM_ClockDivision = 0x0;        // 时钟分割值
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  // 向上计数模式
TIM_TimeBaseStructure.TIM_RepetitionCounter = 0;      // 每次向上溢出都产生更新事件(5ms溢出一次)
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);     // 完成配置

程序2:(来源于半壶水基础例程)
  TIM_TimeBaseStructure.TIM_Period=1;   //自动重装载寄存器周期的值
  TIM_TimeBaseStructure.TIM_Prescaler=0;  //TIMx 时钟频率除数的预分频值
  TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1; //采样分频
  TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up; //向上计数模式
  TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);  
  TIM_PrescalerConfig(TIM2,36000-1,TIM_PSCReloadMode_Immediate);//时钟分频系数,定时器1ms
  TIM_ARRPreloadConfig(TIM2, DISABLE);//禁止ARR预装载缓冲器
  TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);

在STM32F10xxx参考手册上,时钟树上的描述“如果APB1预分频系数=1则频率不变,否则X2”。那么在程序1中,“预分频值为71+1 = 72”,在这里预分频为什么会加上1?同样的问题出现在程序2,TIM_TimeBaseStructure.TIM_Prescaler=0,这里程序是否也是自动加1,则预分频为1,TIME2时钟频率为36MHz?
沙发
香水城| | 2011-8-10 14:54 | 只看该作者
加上1是因为预分频值寄存器从零开始计算,预分频值寄存器=0表示预分频系数=1,以此类推。。。。。

使用特权

评论回复
板凳
lgy218|  楼主 | 2011-8-10 15:04 | 只看该作者
好的,谢香版

使用特权

评论回复
地板
lxj19901115| | 2011-8-23 20:41 | 只看该作者
你好好看看,TIM里面的处理器资料的PDF293页,专门讲TIM 的PSC计数器的时钟频率CK_CNT等于fCK_PSC/(PSC[15:0]+1)。这句是手册上的原话

使用特权

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

本版积分规则

0

主题

5

帖子

1

粉丝