OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 19840|回复: 8

关于定时器里改变时钟分频因子TIM_CKD_DIV1的值,定时器没有反应,求解惑

[复制链接]

30

主题

150

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
208
金钱
208
注册时间
2017-5-19
在线时间
149 小时
发表于 2018-4-7 22:05:10 | 显示全部楼层 |阅读模式
20金钱
看了原子提供的A盘程序代码中的定时器中断实验,有个不懂的地方,就是关于定时器分频这块的疑惑。
【TIM3_Int_Init(4999,7199);//10Khz的计数频率,计数到5000为500ms 】此句的意思本人理解为:预分配值装入7199,将原有CK_INT  72MHZ的频率,分频为10KHZ,以10KHZ频率计数,也就是0.0001s,ARR自动重装载值设为4999,也就是最终以5000*0.001s=0.5s的频率溢出一次产生中断,达到LED闪烁的效果。(1:我这样理解对吗?)
那么【TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //设置时钟分割:TDTS = Tck_tim】里面的TIM_CKD_DIV1是不是对上面的10KHZ再分频?我将其设置为TIM_CKD_DIV4,也就是4分频,我的理解就是将10KHZ再4分频为2500HZ,也就是0.0004s,那么发生一次中断的时间为5000*0.0004s=2s,下载验证LED闪烁没有变化,没有按照我的想法运行,看原子里视频教程也说对这个实验没有多大的用处。那么这里的时钟分隔TIM_CKD_DIV1到底是什么作用?不是再4分频的作用吗?为什么原子的视频说这个实验和TIM_CKD_DIV1没关系?





定时器3初始化.jpg

main函数

main函数

最佳答案

查看完整内容[请看2#楼]

TIM_ClockDivision 是改变做输入捕获时滤波用的并不是定时器的分频器。 你要改的是psc的值。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165475
金钱
165475
注册时间
2010-12-1
在线时间
2115 小时
发表于 2018-4-7 22:05:11 | 显示全部楼层
TIM_ClockDivision 是改变做输入捕获时滤波用的并不是定时器的分频器。 你要改的是psc的值。
回复

使用道具 举报

30

主题

150

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
208
金钱
208
注册时间
2017-5-19
在线时间
149 小时
 楼主| 发表于 2018-4-8 12:16:11 | 显示全部楼层
正点原子 发表于 2018-4-7 22:05
TIM_ClockDivision 是改变做输入捕获时滤波用的并不是定时器的分频器。 你要改的是psc的值。

原来如此啊!了解了!谢谢谢谢!
回复

使用道具 举报

4

主题

30

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
354
金钱
354
注册时间
2019-5-9
在线时间
121 小时
发表于 2019-5-21 00:00:08 | 显示全部楼层
正点原子 发表于 2018-4-7 22:05
TIM_ClockDivision 是改变做输入捕获时滤波用的并不是定时器的分频器。 你要改的是psc的值。

如果是设置定时器中断的话,TIM_ClockDivision的值是没影响的,无论是哪个值都是可以的吗?
回复

使用道具 举报

1

主题

6

帖子

0

精华

初级会员

Rank: 2

积分
132
金钱
132
注册时间
2019-10-17
在线时间
47 小时
发表于 2020-2-27 23:01:07 | 显示全部楼层
吖基哈 发表于 2019-5-21 00:00
如果是设置定时器中断的话,TIM_ClockDivision的值是没影响的,无论是哪个值都是可以的吗?

是不是呢,困惑
回复

使用道具 举报

75

主题

458

帖子

4

精华

金牌会员

Rank: 6Rank: 6

积分
1635
金钱
1635
注册时间
2012-8-28
在线时间
71 小时
发表于 2020-4-25 02:38:19 | 显示全部楼层
TIM_ClockDivision有
#define TIM_CKD_DIV1                       ((uint16_t)0x0000)
#define TIM_CKD_DIV2                       ((uint16_t)0x0100)
#define TIM_CKD_DIV4                       ((uint16_t)0x0200)
这个对输出PWM没有影响。
只对输入有效。
比如tim2的ch1通道采集信号(PA0)。
给PA0发8个脉冲,如果你设置的是TIM_CKD_DIV4;那么你计数器里的值 +2
QQ750273008有好的资料记得发给我哦。。。
回复

使用道具 举报

75

主题

458

帖子

4

精华

金牌会员

Rank: 6Rank: 6

积分
1635
金钱
1635
注册时间
2012-8-28
在线时间
71 小时
发表于 2020-4-25 22:22:39 | 显示全部楼层
750273008 发表于 2020-4-25 02:38
TIM_ClockDivision有
#define TIM_CKD_DIV1                       ((uint16_t)0x0000)
#define TIM_CKD_ ...

另外在时钟树上有一段话,APB2预分频1则频率不变,否则x2倍。就是说你把APB2进行分频成36MHz后,tim1和tim8的钟源还是72MHz
QQ750273008有好的资料记得发给我哦。。。
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
10
金钱
10
注册时间
2020-9-26
在线时间
2 小时
发表于 2020-10-20 10:05:49 | 显示全部楼层
楼主,你一哪里理解正确吗?
回复

使用道具 举报

1

主题

77

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
388
金钱
388
注册时间
2020-11-7
在线时间
44 小时
发表于 2021-1-12 21:08:18 | 显示全部楼层
750273008 发表于 2020-4-25 02:38
TIM_ClockDivision有
#define TIM_CKD_DIV1                       ((uint16_t)0x0000)
#define TIM_CKD_ ...

我对你的解释有异议。
1.TIM_ClockDivision设置的是TIMx_CR1寄存器CKD(时钟分频因子)的比例。它所影响的是滤波器的采样频率。
2.而如果要使用采样滤波器,还要设置TIMx_CCMR1寄存器中IC1F(输入捕获1滤波器);才能确定采样滤波的个数和是否使用;
3.所以TIM_ClockDivision的设置与计数器CNT并无关系。
4.如果有异议,欢迎反驳。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-14 18:49

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表