请教关于stm32f105 时钟配置0中ADC的时钟问题

&&国之画&&&& &&
版权所有 京ICP备号-2
迷上了代码!STM32(2)
众所周知,时钟系统是&CPU&的脉搏,就像人的心跳一样。所以时钟系统的重要性就不言而喻了。&&&STM32&的时钟系统比较复杂,不像简单的&51&单片机一个系统时钟就可以解决一切。于是有人要问,采用一个系统时钟不是很简单吗?为什么&STM32&要有多个时钟源呢?&&因为首先STM32&本身非常复杂,外设非常的多,但是并不是所有外设都需要系统时钟这么高的频率,比如看门狗以及&RTC&只需要几十&k&的时钟即可。同一个电路,时钟越快功耗越大,同时抗电磁干扰能力也会越弱,所以对于较为复杂的&MCU&一般都是采取多时钟源的方法来解决这些问题。首先让我们来看看&STM32&的时钟系统图吧:
以上图片有重复
在&STM32&中,有五个时钟源,为&HSI、HSE、LSI、LSE、PLL。从时钟频率来分可以分为高速时钟源和低速时钟源,在这&5&个中&HIS,HSE&以及&PLL&是高速时钟,LSI&和&LSE&是低速时钟。从来源可分为外部时钟源和内部时钟源,外部时钟源就是从外部通过接晶振的方式获取时钟源,其中&HSE&和&LSE&是外部时钟源,其他的是内部时钟源。下面我们看看&STM32&的&5&个时钟源,我们讲解顺序是按图中红圈标示的顺序:
①、HSI&是高速内部时钟,RC&振荡器,频率为&8MHz。
②、HSE&是高速外部时钟,可接石英&/&陶瓷谐振器,或者接外部时钟源,频率范围为4MHz~16MHz。
③、LSI&是低速内部时钟,RC&振荡器,频率为&40kHz。独立看门狗的时钟源只能是&LSI,同时&LSI&还可以作为&RTC&的时钟源。
④、LSE&是低速外部时钟,接频率为&32.768kHz&的石英晶体。这个主要是&RTC&的时钟源。
⑤、PLL&为锁相环倍频输出,其时钟输入源可选择为&HSI/2、HSE&或者&HSE/2。倍频可选择为2~16&倍,但是其输出频率最大不得超过&72MHz。
那么这&5&个时钟源是怎么给各个外设以及系统提供时钟的呢?这里我们将一一讲解。我们还是从图的下方讲解起吧,因为下方比较简单。图中我们用&A&&~E&标示我们要讲解的地方。
A.&&MCO&是&STM32&的一个时钟输出&IO(PA8),它可以选择一个时钟信号输出,可以选择为&PLL&输出的&2&分频、HSI、HSE、或者系统时钟。这个时钟可以用来给外部其他系统提供时钟源。
B.&&这里是&RTC&时钟源,从图上可以看出,RTC&的时钟源可以选择&LSI,LSE,以及HSE&的&128&分频。
C.&从图中可以看出&C&处&USB&的时钟是来自&PLL&时钟源。&STM32&中有一个全速功能的&USB&模块,其串行接口引擎需要一个频率为&48MHz&的时钟源。该时钟源只能从&PLL&输出端获取,可以选择为&1.5&分频或者&1&分频,也就是,当需要使用&USB模块时,PLL&必须使能,并且时钟频率配置为&48MHz&或&72MHz。
D.&D&处就是&STM32&的系统时钟&SYSCLK,它是供&STM32&中绝大部分部件工作的时钟源。&系统时钟可选择为&PLL&输出、&HSI&或者&HSE。系统时钟最大频率为&72MHz,当然你也可以超频,不过一般情况为了系统稳定性是没有必要冒风险去超频的。
E.&这里的&E&处是指其他所有外设了。从时钟图上可以看出,其他所有外设的时钟最终来源都是&SYSCLK。SYSCLK&通过&AHB&分频器分频后送给各模块使用。这些模块包括:
①、AHB&总线、内核、内存和&DMA&使用的&HCLK&时钟。
②、通过&8&分频后送给&Cortex&的系统定时器时钟,也就是&systick&了。
③、直接送给&Cortex&的空闲运行时钟&FCLK。
④、送给&APB1&分频器。APB1&分频器输出一路供&APB1&外设使用(PCLK1,最大频率&36MHz),另一路送给定时器(Timer)2、3、4&倍频器使用。
⑤、送给&APB2&分频器。APB2&分频器分频输出一路供&APB2&外设使用(PCLK2,最大频率&72MHz),另一路送给定时器(Timer)1&倍频器使用。
其中需要理解的是&APB1&和&APB2&的区别,APB1&上面连接的是低速外设,包括电源接口、备份接口、CAN、USB、I2C1、I2C2、UART2、UART3&等等,APB2&上面连接的是高速外设包括&UART1、SPI1、Timer1、ADC1、ADC2、所有普通&IO&口(PA~PE)、第二功能&IO&口等。
STM32&时钟系统的配置除了初始化的时候在&system_stm32f10x.c&中的&SystemInit()函数中外,其他的配置主要在&stm32f10x_rcc.c&文件中,里面有很多时钟设置函数,可以打开这个文件浏览一下,基本上看看函数的名称就知道这个函数的作用。在设置时钟的时候,一定要仔细参考&STM32&的时钟图,做到心中有数。这里需要指明一下,对于系统时钟,默认情况下是在&SystemInit&函数的&SetSysClock()函数中间判断的,而设置是通过宏定义设置的。我们可以看看&SetSysClock()函数体:
这段代码非常简单,就是判断系统宏定义的时钟是多少,然后设置相应值。我们系统默认宏定义是&72MHz:
#define&SYSCLK_FREQ_72MHz&&&
如果你要设置为&36MHz,只需要注释掉上面代码,然后加入下面代码即可:
#define&SYSCLK_FREQ_36MHz&&&
同时还要注意的是,当我们设置好系统时钟后,可以通过变量&SystemCoreClock&获取系统时钟值,如果系统是&72M&时钟,那么&SystemCoreClock=。这是在&
&系统时钟系统初始化重要函数:SystemInit();&使用V3.5版本的库函数,该函数在系统启动之后会自动调用:&
&初始化之前首先通过宏定义定义系统时钟频率:
&&&&&#define&SYSCLK_FREQ_72MHz&&
&初始化之后的状态:& &&&
SYSCLK(系统时钟)&&&&&&&&&=72MHz
AHB&总线时钟(使用&SYSCLK)&&=72MHz
APB1&总线时钟(PCLK1)&&&&=36MHz
APB2&总线时钟(PCLK2)&&&&=72MHz
PLL&时钟&&&&&&&&&&&&&&=72MHz
&初始化之后可以通过变量SystemCoreClock获取系统变量。如果&SYSCLK=72MHz,那么变量SystemCoreClock=。
RCC配置相关头文件和固件库源文件
1、时钟使能配置:
&&&&&&RCC_LSEConfig()&、RCC_HSEConfig()、
&&&&&&RCC_HSICmd()&、&RCC_LSICmd()&、&RCC_PLLCmd()&……
2、时钟源相关配置:
&&&&&&RCC_PLLConfig&()、&RCC_SYSCLKConfig()&、&RCC_RTCCLKConfig()&…
3、分频系数选择配置:
&&&&&&RCC_HCLKConfig()&、&RCC_PCLK1Config()&、&RCC_PCLK2Config()…
4、外设时钟使能:
&&&&&&RCC_APB1PeriphClockCmd():&&//APB1线上外设时钟使能
&&&&&RCC_APB2PeriphClockCmd();&&//APB2线上外设时钟使能
&&&&&RCC_AHBPeriphClockCmd();&&&//AHB线上外设时钟使能
5.&&其他外设时钟配置:
&&&&&RCC_ADCCLKConfig&();&&RCC_RTCCLKConfig();
6、状态参数获取参数:
&&&&&RCC_GetClocksFreq();
&&&&&RCC_GetSYSCLKSource();
&&&&&RCC_GetFlagStatus()
7.&&RCC中断相关函数&:
&&&&&RCC_ITConfig()&、&RCC_GetITStatus()&、&RCC_ClearITPendingBit()…
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:4631次
排名:千里之外(ERROR:15) & 访客不能直接访问请教STM32F051定时器触发ADC中断问题_百度知道21ic官方微信-->
后使用快捷导航没有帐号?
查看: 4026|回复: 11
关于STM32F0的系统时钟配置和备份寄存器问题。
&&已结帖(20)
主题帖子积分
初级技术员, 积分 92, 距离下一级还需 8 积分
初级技术员, 积分 92, 距离下一级还需 8 积分
主题帖子积分
专家等级:结帖率:62%
主题帖子积分
初级技术员, 积分 92, 距离下一级还需 8 积分
初级技术员, 积分 92, 距离下一级还需 8 积分
各位大神好,
& & 我有两个问题请教下大家。
1、以前STM32F103的系统配置是在RCC_Configuration里,但是STM32F0好像是在startup.s里自动配置,那么我想把系统时钟配置为非48M时怎么配置?还有ADC的时钟。
2、STM32F0好像没有BKP了是不是?
满意回复+20
虽然没用过,不过“startup.s里自动配置”不是你理解的那样,像stm32F1的v3.5.0固件,是在startup.s里边调用配置函数SystemInit,要改为48M主频,到system_stm32 ...
主题帖子积分
初级技术员, 积分 92, 距离下一级还需 8 积分
初级技术员, 积分 92, 距离下一级还需 8 积分
主题帖子积分
专家等级:结帖率:62%
主题帖子积分
初级技术员, 积分 92, 距离下一级还需 8 积分
初级技术员, 积分 92, 距离下一级还需 8 积分
在线等。谢谢大家!
主题帖子积分
助理工程师, 积分 1072, 距离下一级还需 928 积分
助理工程师, 积分 1072, 距离下一级还需 928 积分
主题帖子积分
专家等级:结帖率:75%
主题帖子积分
助理工程师, 积分 1072, 距离下一级还需 928 积分
助理工程师, 积分 1072, 距离下一级还需 928 积分
在线等,不如在线看书。
主题帖子积分
初级技术员, 积分 92, 距离下一级还需 8 积分
初级技术员, 积分 92, 距离下一级还需 8 积分
主题帖子积分
专家等级:结帖率:62%
主题帖子积分
初级技术员, 积分 92, 距离下一级还需 8 积分
初级技术员, 积分 92, 距离下一级还需 8 积分
但是没有相关的书籍。。您知道吗?
主题帖子积分
助理工程师, 积分 1072, 距离下一级还需 928 积分
助理工程师, 积分 1072, 距离下一级还需 928 积分
主题帖子积分
专家等级:结帖率:75%
主题帖子积分
助理工程师, 积分 1072, 距离下一级还需 928 积分
助理工程师, 积分 1072, 距离下一级还需 928 积分
那就看数据手册。
主题帖子积分
---------------------
主题帖子积分
---------------------
专家等级:结帖率:97%打赏:0.00受赏:40.00
主题帖子积分
---------------------
从数据手册看, STM32F0 的 RTC 的最后5个寄存器 20B 为 BKP.
欢迎进入 !
主题帖子积分
中级技术员, 积分 221, 距离下一级还需 79 积分
中级技术员, 积分 221, 距离下一级还需 79 积分
主题帖子积分
专家等级:结帖率:91%
主题帖子积分
中级技术员, 积分 221, 距离下一级还需 79 积分
中级技术员, 积分 221, 距离下一级还需 79 积分
虽然没用过,不过“startup.s里自动配置”不是你理解的那样,像stm32F1的v3.5.0固件,是在startup.s里边调用配置函数SystemInit,要改为48M主频,到system_stm32f10x.c这个文件中将“#define SYSCLK_FREQ_72MHz”改变即刻,AHB,APB1,APB2的话直接到对应函数(比如你选72M)SetSysClockTo72(void)中修改。其实你英语好的话看system_stm32f10x.c文件开始的介绍就明白了。
主题帖子积分
技术达人, 积分 8128, 距离下一级还需 1872 积分
技术达人, 积分 8128, 距离下一级还需 1872 积分
主题帖子积分
专家等级:结帖率:33%
主题帖子积分
技术达人, 积分 8128, 距离下一级还需 1872 积分
技术达人, 积分 8128, 距离下一级还需 1872 积分
那就看数据手册。
pattywu 发表于
自己再详细看下数据手册
主题帖子积分
资深工程师, 积分 10782, 距离下一级还需 9218 积分
资深工程师, 积分 10782, 距离下一级还需 9218 积分
主题帖子积分
专家等级:结帖率:4%
主题帖子积分
资深工程师, 积分 10782, 距离下一级还需 9218 积分
资深工程师, 积分 10782, 距离下一级还需 9218 积分
碰到这种问题第一反应应该是看数据手册
姚明的铁杆球迷
主题帖子积分
高级工程师, 积分 7076, 距离下一级还需 924 积分
高级工程师, 积分 7076, 距离下一级还需 924 积分
主题帖子积分
专家等级:结帖率:23%
主题帖子积分
高级工程师, 积分 7076, 距离下一级还需 924 积分
高级工程师, 积分 7076, 距离下一级还需 924 积分
从数据手册看, STM32F0 的 RTC 的最后5个寄存器 20B 为 BKP.
airwill 发表于
LZ再翻翻数据手册
主题帖子积分
高级工程师, 积分 7748, 距离下一级还需 252 积分
高级工程师, 积分 7748, 距离下一级还需 252 积分
主题帖子积分
专家等级:结帖率:9%
主题帖子积分
高级工程师, 积分 7748, 距离下一级还需 252 积分
高级工程师, 积分 7748, 距离下一级还需 252 积分
但是没有相关的书籍。。您知道吗?
3# pattywu
llglqh 发表于
主题帖子积分
初级技术员, 积分 92, 距离下一级还需 8 积分
初级技术员, 积分 92, 距离下一级还需 8 积分
主题帖子积分
专家等级:结帖率:62%
主题帖子积分
初级技术员, 积分 92, 距离下一级还需 8 积分
初级技术员, 积分 92, 距离下一级还需 8 积分
感谢各位的帮助,小弟开发经验不足,确实应该多看看手册。
刚才看了下手册和固件库的说明书,找到了答案。
谢谢各位!
技术奇才奖章
人才类勋章
时间类勋章
欢快之小溪
发帖类勋章
希望之星奖章
等级类勋章
荣誉元老奖章
等级类勋章
坚毅之洋流
发帖类勋章
技术领袖奖章
人才类勋章
时间类勋章
技术新星奖章
人才类勋章

我要回帖

更多关于 stm32f207时钟配置 的文章

 

随机推荐