OpenEdv-开源电子网

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

怎么设置APB1 的时钟分频数不为 1呢?

[复制链接]

11

主题

66

帖子

0

精华

初级会员

Rank: 2

积分
147
金钱
147
注册时间
2014-5-4
在线时间
0 小时
发表于 2014-10-28 20:05:57 | 显示全部楼层 |阅读模式
5金钱
怎么设置APB1 的时钟分频数不为 1,TIM2~7 的时钟频率将为 APB1 时钟的两倍呢??(APB1默认是36M啊)?



下面的程序哪里体现了“时钟选择为APB1的2倍”呢??


拜托各位大神了!!

最佳答案

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

回复【2楼】lvonve: --------------------------------- 这个你应该看《STM32参考手册》寄存器描述,CFGR寄存器的描述。 就清楚了。
行善,持咒
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-10-28 20:05:58 | 显示全部楼层
回复【2楼】lvonve:
---------------------------------
这个你应该看《STM32参考手册》寄存器描述,CFGR寄存器的描述。
就清楚了。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

11

主题

66

帖子

0

精华

初级会员

Rank: 2

积分
147
金钱
147
注册时间
2014-5-4
在线时间
0 小时
 楼主| 发表于 2014-10-28 20:46:01 | 显示全部楼层
没有人知道么?
我知道是设置CFGR寄存器的PPRE1几个位来决定。 
但我不知道程序哪里有配置,默认不是36MHz么?
哪里让他配置成72M了呢??
行善,持咒
回复

使用道具 举报

3

主题

60

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
249
金钱
249
注册时间
2016-10-8
在线时间
50 小时
发表于 2016-10-12 17:13:31 | 显示全部楼层
lvonve 发表于 2014-10-28 20:46
没有人知道么?
我知道是设置CFGR寄存器的PPRE1几个位来决定。 
但我不知道程序哪里有配置,默认不 ...

我猜想应该就是那个psc的值,我也是初学者,指南上面讲解的也不是很详细,有些话太官方,让人不好理解,所以这是我自己的理解了,不知道对不对,,,你参考下吧。大概就是psc的值为1的时候定时器的时钟是36M,不为1的时候是72M,就是这么规定的吧!
如果我哪说的不对的话,麻烦看到的大神帮忙指正一下,免得误人子弟了,嘿嘿~
回复

使用道具 举报

13

主题

28

帖子

0

精华

新手入门

积分
9
金钱
9
注册时间
2016-3-16
在线时间
13 小时
发表于 2016-11-1 10:28:41 | 显示全部楼层
风呼呼 发表于 2016-10-12 17:13
我猜想应该就是那个psc的值,我也是初学者,指南上面讲解的也不是很详细,有些话太官方,让人不好理解, ...

不是啊 psc是定时器的分频 他说的是APB1 的分频
回复

使用道具 举报

0

主题

3

帖子

0

精华

新手上路

积分
40
金钱
40
注册时间
2019-8-22
在线时间
13 小时
发表于 2019-9-11 09:37:41 | 显示全部楼层
RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE1_DIV2;
回复

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
14
金钱
14
注册时间
2020-2-29
在线时间
2 小时
发表于 2020-2-29 23:18:11 | 显示全部楼层
这是sys.h里面定义的一段,希望对后面遇到这种情况的小伙伴有帮助

RCC->CFGR=0X00000400; //APB1=DIV2;APB2=DIV1;AHB=DIV1;设置分频

void Stm32_Clock_Init(u8 PLL)
{
        unsigned char temp=0;   
        MYRCC_DeInit();                  //复位并配置向量表
        RCC->CR|=0x00010000;  //外部高速时钟使能HSEON
        while(!(RCC->CR>>17));//等待外部时钟就绪
        RCC->CFGR=0X00000400; //APB1=DIV2;APB2=DIV1;AHB=DIV1;设置分频
        PLL-=2;                                  //抵消2个单位(因为是从2开始的,设置0就是2)
        RCC->CFGR|=PLL<<18;   //设置PLL值 2~16
        RCC->CFGR|=1<<16;          //PLLSRC ON
        FLASH->ACR|=0x32;          //FLASH 2个延时周期
        RCC->CR|=0x01000000;  //PLLON
        while(!(RCC->CR>>25));//等待PLL锁定
        RCC->CFGR|=0x00000002;//PLL作为系统时钟         
        while(temp!=0x02)     //等待PLL作为系统时钟设置成功
        {   
                temp=RCC->CFGR>>2;
                temp&=0x03;
        }   
}                    
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手上路

积分
26
金钱
26
注册时间
2019-9-8
在线时间
7 小时
发表于 2020-4-16 10:40:54 | 显示全部楼层
ds_00000 发表于 2016-11-1 10:28
不是啊 psc是定时器的分频 他说的是APB1 的分频

??是时钟的分频吧 你看库函数手册这段话:
接下来我们看第三个与我们这章有关的寄存器:预分频寄存器(TIMx_PSC)。该寄存器用
设置对时钟进行分频,然后提供给计数器,作为计数器的时钟
。该寄存器的各位描述如图 13.1.3
所示:
回复

使用道具 举报

0

主题

3

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2018-10-25
在线时间
6 小时
发表于 2020-8-19 12:04:00 | 显示全部楼层
本帖最后由 EverglowRSL 于 2020-8-19 12:05 编辑
lvonve 发表于 2014-10-28 20:46
没有人知道么?
我知道是设置CFGR寄存器的PPRE1几个位来决定。
但我不知道程序哪里有配置,默认不 ...

图1时钟树上APB外设时钟要进行1、2、4、8等分频;但是定时器时钟比较特殊,如果APB预分频为1,那么定时器时钟是APB时钟x1,其他均为APB时钟X2;
图2可以看见在时钟初始化的时候,配置了APB1的时钟预分频为2,则定时器3的时钟为APB1的时钟X2;
关于如何修改,可以配置CFGR寄存器PPRE1几个位,配置的地方可参见SystemInit下的内容;
不过,中文参考手册中,对APB1的时钟描述中有一句:软件必须保证APB1时钟频率不超过36MHz。也就是说,默认就已经最低2分频了,TIM时钟则得X2;
另外,实际应用中,TIM应用跟具体TIM时钟配置关系不大,只要清楚TIM时钟是多少就好了,希望能起到交流作用。
图3.png
时钟树.png
时钟配置.png
回复

使用道具 举报

0

主题

2

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2019-7-22
在线时间
4 小时
发表于 2020-10-21 21:29:21 | 显示全部楼层
如果SYSCLK为168M,且AHB_PRESC为1,则传到APB1_PRESC的时钟就是168M,
如果APB1_PRESC = 1,则APB1时钟就是168M,TIM3的时钟是168M,
如果APB1_PRESC = 2,则APB1时钟就是168M,TIM3的时钟是168M,
如果APB1_PRESC = 4,则APB1时钟就是168M,TIM3的时钟是  84M。C:\Users\15580\Desktop
回复

使用道具 举报

0

主题

3

帖子

0

精华

新手上路

积分
25
金钱
25
注册时间
2021-3-27
在线时间
5 小时
发表于 2021-10-16 19:00:38 | 显示全部楼层
在选择系统时钟为72M的情况下,APB1为36M,APB1的预分频器分频系数为2即:RCC_CFGR_PPRE1_DIV2。但是APB1总线下的定时器2~7的频率在36M的基础上需要乘以2,为72M
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-9 03:12

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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