完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
关于STM32时钟系统的配置
在 STM32 中,有五个时钟源,为HSI、HSE、LSI、LSE、PLL,系统时钟(SYSCLK)相当于神经中枢系统,一般为72M,可经过AHB预分频器、APB1预分频器、APB2预分频器后作为一系列外设时钟。系统时钟(SYSCLK)可以由HSI振荡器时钟、HSE振荡器时钟、PLL(锁相环)时钟驱动。HSE为外部晶振提供产生时钟源(416MHZ),HSI时钟信号由内部8MHz的RC振荡器产生,具有睡眠情况下继续工作的特点,为备用时钟源。PLL可以选择HIS振荡器/2或HSE振荡器(可选择HSE/2或者直接HSE直接输入)为PLL的输入时钟,倍频可选择为216 倍,但是其输出频率最大不得超过 72MHz,可经过USB分频器分频后作为USB时钟的时钟源。当外部晶振受损时可由CSS(时钟监视系统)自动切换HIS时钟为时钟源。RTC(实时时钟)可由LSE、HSE/128分频、LSI驱动。LSE 是低速外部时钟,接频率为 32.768kHz 的石英晶体,为实时时钟(RTC)或者其他定时功能提供 一个低功耗且精确的时钟源。LSI 是低速内部时钟,RC 振荡器,频率约为 40kHz,作为独立看门狗时钟源。MCO为输出内部时钟,可输出系统时钟(SYSCLK)、HSI、HSE、或者/2分频PLL(锁相环),MCO为一个引脚,可用示波器对内部的时钟进行波形检测。 下面我将对SystemInit ()函数进行刨析 打开HIS 将寄存器所有位置零即关闭,相当于初始化 接下来我们将进入SetSysClock()函数 运用#ifdef语法调用不同频率时钟配置函数,可选择不同时钟,只在system_stm32f10x.c的开头选择所需的时钟即可。 通过选择了不同分频时钟的函数我们将进入时钟的配置,以SetSysClockTo72()配置72M为例。 首先打开外部高速时钟(HSE) 等待HSE时钟稳定 判断是否稳定 然后通过操作CFGR寄存器的位对AHB、APB1、APB2进行分频处理 选择PLL为时钟源,并选择9倍频的HSE为输入时钟,所以倍频之后的系统时钟为72MHz 之后便是操作CR寄存器使能PLL时钟(RCC-》CR |= RCC_CR_PLLON;) 然后等待PLL时钟就绪并操作CFGR寄存器选择PLL为系统时钟。 (系统时钟默认为72M,在启动文件中已经调用了SystemInit()函数不需要自己配置,如果需要其他频率的时钟修改倍频因子即可)。 |
|
|
|
只有小组成员才能发言,加入小组>>
623 浏览 0 评论
6140 浏览 1 评论
3774 浏览 7 评论
TIM3定时器输出PWM波控制LED灯的亮暗程度,PWM输出的高电平还有不同的值吗?
2358 浏览 11 评论
1697 浏览 5 评论
804浏览 9评论
1184浏览 8评论
4075浏览 6评论
592浏览 6评论
642浏览 6评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 粤ICP备14022951号 )
GMT+8, 2023-8-20 00:54 , Processed in 0.760941 second(s), Total 63, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 深圳华秋电子有限公司
电子发烧友 (电路图) 粤公网安备 44030402000349 号 电信与信息服务业务经营许可证:粤 B2-20160233 工商网监 湘ICP备2023018690号