自动重装载值和预分频系数怎么算 定时器的频率

2019-07-21 04:41发布

        TIM_TimeBaseInitStruct.TIM_Period=arr;
        TIM_TimeBaseInitStruct.TIM_Prescaler=pre;
        TIM_TimeBaseInitStruct.TIM_CounterMode=TIM_CounterMode_Up;
        TIM_TimeBaseInitStruct.TIM_ClockDivision=TIM_CKD_DIV1;
        TIM_TimeBaseInit(TIM3,&TIM_TimeBaseInitStruct);
不清楚定时器的频率怎么算
比方说10khz的  
我的第一反应就是 时钟频率/预分频系数  72MHZ/7200
但是这样我就不知道这个自动冲装载值怎么设了

        /* Time base configuration */
        TIM_TimeBaseStructure.TIM_Period = 999;  //1KHz
        TIM_TimeBaseStructure.TIM_Prescaler = 0;
        TIM_TimeBaseStructure.TIM_ClockDivision = 0;
        TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
        TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
        //TIM2预分频设置:1MHZ,APB1分频系数2,输入到TIM3时钟为36MHzx2 = 72MHz  
        TIM_PrescalerConfig(TIM2,71, TIM_PSCReloadMode_Immediate);               



比方说这么例题 这个1khz 怎么算的?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
13条回答
openedvadmin
1楼-- · 2019-07-22 00:51
其实不用死记硬背。。。
一个频率A ,经过预分频PRE后得到频率B=A/(PRE+1)。 预分频就是把频率做除法嘛。。。
然后定时器按频率B计数,计数到ARR+1重载,就是重新开始。。。所以一个全周期时间就是
(ARR+1)*(PRE+1)/A
倒数就是频率。。。。。

这个只有你理解了定时器的工作原理就得心应手
461450651
2楼-- · 2019-07-21 06:17
好好理解公式f=1/T(频率=1/周期)
TIM_TimeBaseStructure.TIM_Period里面装的就是周期
TIM_TimeBaseStructure.TIM_Prescaler装的是预分频系数,用来驱动计数器自加的
如果TIM_Period装的数值是999并且TIM_Prescaler装的是71
那么计数器就会以1us记一次,记满1000次(0-999是1000次),那么记满的时间就是1000us,相对应的周期就是1000us
所以频率=1000000/1000=1000Hz,为什么是1000000,因为公式的单位是秒,你要化成us才能正确计算
原_子_哥门徒
3楼-- · 2019-07-21 08:09
 精彩回答 2  元偷偷看……
xkwy
4楼-- · 2019-07-21 12:18
PWM频率 = 定时器模块频率 / (Period+1) / (Prescaler+1)
xkwy
5楼-- · 2019-07-21 16:50
461450651 发表于 2016-3-16 19:48
好好理解公式f=1/T(频率=1/周期)
TIM_TimeBaseStructure.TIM_Period里面装的就是周期
TIM_TimeBaseStruct ...

你指的是电机正反转吗?
0.png
461450651
6楼-- · 2019-07-21 19:16
xkwy 发表于 2016-3-16 20:02
你指的是电机正反转吗?

不是,蓝桥杯那里不是有电路设计吗

一周热门 更多>