5716|15

69

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

看了M3的T2时钟源,看了半天怎么还是感觉乱糟糟的。。。 [复制链接]

                                 看M3的参考手册(128K FALSH),68页,APB1时钟经prescaler后直接给了TIM2,就成了TIMxCLK,然后转到270页看定时器框图,在左上角处时钟来源处写着TIMxCLK from RCC和Internal Clock(CK_INT),但是该处只画了一条线,然后后面的时钟来源时钟是CK_INT,~#~$!@%!@#%@^就再也看不懂了,prescaler到底是对谁的分频,要准确的计算T2的定时周期看到这就说啥也看不明白了,郁闷中~~##~¥~¥!·#%!
此帖出自stm32/stm8论坛

最新回复

                                     详情 回复 发表于 2008-8-14 17:07
点赞 关注
 

回复
举报

68

帖子

0

TA的资源

一粒金砂(初级)

沙发
 

回复

61

帖子

0

TA的资源

一粒金砂(初级)

板凳
 

一般学者级才会研究这样的问题。^_^!

                                 ^_^! 楼主有意思。
此帖出自stm32/stm8论坛
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

4
 

我是为了在项目中实现较精确的定时不得不研究

                                 跟uint8  Priority[64];有区别吧
此帖出自stm32/stm8论坛
 
 
 

回复

86

帖子

0

TA的资源

一粒金砂(初级)

5
 

哈哈,你还没有看完,所以感觉乱糟糟的

首先,不知道你看的是哪个版本?但不是最新版本,请在ST网站下载最新版本(如下)。

在277页的第13.3.3节,对照267页的图95,计数器的时钟(CK_PSC)可以有多种选择,一般是选择内部时钟(CK_INT),这样CK_INT=CK_PSC,然后经PSC预分频器输出CK_CNT至计数器。
相关链接:http://www.st.com/stonline/products/literature/rm/13902.pdf
此帖出自stm32/stm8论坛
 
 
 

回复

62

帖子

0

TA的资源

一粒金砂(初级)

6
 

表95左上角这样写

Internal Clock(CK_INT)
TIMxCLK from RCC
然后他们之间划了个横线,那么他们两个都是从哪来的,我觉得ST的参考手册说的很不明确,我下面的实验是问北京ST的问题,那边给我的答复是让我用示波器实际测一下波形,我感觉已经不用测量波形就已经能说明问题了,请香主帮我看看

我用的晶振是11.0592M,6倍频,那么SYSCLK应该是66.3552M,实际读出的频率是对的,附件里的位图是我读出频率的截图
另外我T2的设置是:
void Timer2Init(void){
    TIM_TimeBaseStructure.TIM_Period = 10368;                     //ARR值
    TIM_TimeBaseStructure.TIM_Prescaler = 32;                     //APB1的32分频 = 1.0368M Hz
    TIM_TimeBaseStructure.TIM_ClockDivision = 0;                  //采样频率等于时钟输入频率
    TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Down; //向下计数
    TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);               //溢出频率:33177600/32/10368 = 100Hz

    TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE);
    TIM_Cmd(TIM2, ENABLE);
}
T2中断处理函数是:
void TIM2_IRQHandler(void){
    TIM2->SR = 0;
    if(++it100==100){
        total++;
        it100=0;
    }
}
it100和total都初始化为0,实验是这样做的:13点20分15秒开始运行,13点21分15秒把应用暂停,观察到的total变量是117,做了几次实验,都是接近120的样子,请帮我分析下原因。
此帖出自stm32/stm8论坛
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

7
 

1.0368*10368*100=1074954.24uS

                                  
此帖出自stm32/stm8论坛
 
 
 

回复

48

帖子

0

TA的资源

禁止发言

8
 

我认为图95(不是表95)标记的已经很清楚了

Internal Clock(CK_INT)和TIMxCLK from RCC 对应的不是横线,而是一个箭头

这表示从RCC来得TIMxCLK作为Internal Clock(CK_INT)进入左面的触发控制器(Trigger Controller);如果搂主这样还不清楚,请建议一种你认为更清楚地画法。

关于你的程序,不知道你期望什么结果?这个结果有什么不对?
此帖出自stm32/stm8论坛
 
 
 

回复

52

帖子

0

TA的资源

一粒金砂(初级)

9
 

我的程序设置的定时器溢出频率是100Hz

                                 按照我设置的参数计算出来的结果应该是100Hz,但我掐表执行程序,发现60秒的时间里计数计了117次,本来应该是接近60次的样子,如果是这样的话说明定时周期确实是10ms,但实际计数结果接近120次,说明定时周期是5ms,这就是我的问题
此帖出自stm32/stm8论坛
 
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

10
 

APB1是如何初始化的?

                                 请注意从APB1的时钟到TIM2之间有一个倍频器,关于这个倍频器效应以前讨论很多次了。
此帖出自stm32/stm8论坛
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

11
 

定时器倍频是硬件自动配置

定时器时钟频率是其所在APB 总线频率的两倍。然而,如果相应的APB 预分频
系数是1,定时器的时钟频率与所在APB 总线频率一致。
此帖出自stm32/stm8论坛
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

12
 

看样子TIM2把APB1的时钟倍频了

                                 楼上和香主提示一下,关于APB1的时钟到TIM2之间的倍频器是在什么地方说明的
此帖出自stm32/stm8论坛
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

13
 

还是那个问题:“APB1是如何初始化的?”

看看这个帖子中的相关内容:STM32F10xx时钟系统框图:时钟是整个系统的脉搏
此帖出自stm32/stm8论坛
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

14
 

终于搞清楚了

STM32网友原话是这样说的:"输出定时器时钟之前有一个乘法器,它的操作不是由程序控制的,是由硬件根据前一级的APB预分频器的输出自动选择,当APB预分频器的分频因子为1时,这个乘法器无作用;当APB预分频器的分频因子大于1时,这个乘法器做倍频操作,即将APB预分频器输出的频率乘2,这样可以保证定时器可以得到最高的72MHz时钟脉冲。"

这样就很清楚为什么溢出频率高了一倍了,在参考手册的Figure 8中也有这样的说明:
 -------------------------
| TIM2,3,4,5,6,7          |
| if(APB1 prescaler=1) x1 |  ==> TIMxCLK
|                else  x2 |
 -------------------------
看这个也能说明上面的意思,但是好像这部分内容在参考手册里并没有明确的文字说明,所以刚开始很容易被忽略:(

sorry,刚看了2楼的提示链接里面香主提示的那段话,在Figure 8的下面找到了
The timer clock frequencies are automatically fixed by hardware. There are two cases:

1. if the APB prescaler is 1, the timer clock frequencies are set to the same frequency as that of the APB domain to which the timers are connected.

2. otherwise, they are set to twice (x2) the frequency of the APB domain to which the timers are connected. 

看来还是没仔细看手册呀,但话说回来做项目都想快,N多着急的因素,没有太多富于时间仔仔细细看手册,所以只好来发问看看有没有。。。

本贴已结,谢谢大家的跟贴!
此帖出自stm32/stm8论坛
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

15
 

这部分内容在参考手册里当然有明确的文字说明

在最新的英文版RM0008(2008年5月)中第69页,有这样的文字:

The timer clock frequencies are automatically fixed by hardware. There are two cases:
1. if the APB prescaler is 1, the timer clock frequencies are set to the same frequency as
that of the APB domain to which the timers are connected.
2. otherwise, they are set to twice (x2) the frequency of the APB domain to which the
timers are connected.


在中文译文中(基于STM32F10xxx参考手册英文第二版)的第37页下端,有这样的文字:

定时器时钟频率是其所在APB总线频率的两倍。然而,如果相应的APB预分频系数是1,定时器的时钟频率与所在APB总线频率一致。
此帖出自stm32/stm8论坛
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

16
 

还是喜欢看英文手册

                                  
此帖出自stm32/stm8论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表