ImageVerifierCode 换一换
格式:DOCX , 页数:29 ,大小:150.02KB ,
资源ID:18368165      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/18368165.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(第七章复位和系统时钟Word文件下载.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

第七章复位和系统时钟Word文件下载.docx

1、三种不同的时钟源可被用来驱动系统时钟(SYSCLK):HSI振荡器时钟 HSE振荡器时钟 PLL时钟 这些设备有以下2种二级时钟源:1. 40kHz低速内部RC,可以用于驱动独立看门狗和通过程序选择驱动RTC。RTC用于从停机/待机模式下自动唤醒系统。2. 32.768kHz低速外部晶体也可用来通过程序选择驱动RTC(RTCCLK)。当不被使用时,任一个时钟源都可被独立地启动或关闭,由此优化系统功耗。图7-2-1是系统的时钟树。 图 7-2-1 时钟树当HSI被用于作为PLL时钟的输入时,系统时钟的最大频率不得超过64MHz。用户可通过多个预分频器配置AHB、高速APB(APB2)和低速APB

2、(APB1)域的频率。AHB和APB2域的最大频率是72MHZ。APB1域的最大允许频率是36MHZ。SDIO接口的时钟频率固定为HCLK/2。RCC通过AHB时钟8分频后供给Cortex系统定时器的(SysTick)外部时钟。通过对SysTick控制与状态寄存器的设置,可选择上述时钟或Cortex AHB时钟作为SysTick时钟。ADC时钟由高速APB2时钟经2、4、6或8分频后获得。定时器时钟频率分配由硬件按以下2种情况自动设置:1.如果相应的APB预分频系数是1,定时器的时钟频率与所在APB总线频率一致。2.否则,定时器的时钟频率被设为与其相连的APB总线频率的2倍。FCLK是Cort

3、ex-M3的自由运行时钟。7.2.1 HSE时钟(外部高速时钟)高速外部时钟信号(HSE)由以下两种时钟源产生: HSE外部晶体/陶瓷谐振器 HSE用户外部时钟 为了减少时钟输出的失真和缩短启动稳定时间,晶体/陶瓷谐振器和负载电容器必须尽可能地靠近振荡器管脚。负载电容值必须根据所选择的振荡器来调整。图7-2-2 HSE/LSE时钟源 硬 件 配 置 外 部 时 钟晶 体陶 瓷 谐 振 器 图 7-2-2 时钟电路外部时钟源(HSE旁路) 在这个模式里,必须提供外部时钟。它的频率最高可达25MHz。用户可通过设置在时钟控制寄存器中的HSEBYP和HSEON位来选择这一模式。外部时钟信号(50%占

4、空比的方波、正弦波或三角波)必须连到SOC_IN管脚,同时保证OSC_OUT管脚悬空。见图7-2-2。外部晶体/陶瓷谐振器(HSE晶体) 416Mz外部振荡器可为系统提供更为精确的主时钟。相关的硬件配置可参考图7-2-2。在时钟控制寄存器RCC_CR中的HSERDY位用来指示高速外部振荡器是否稳定。在启动时,直到这一位被硬件置1,时钟才被释放出来。如果在时钟中断寄存器RCC_CIR中允许产生中断,将会产生相应中断。HSE晶体可以通过设置时钟控制寄存器里RCC_CR中的HSEON位被启动和关闭。7.2.2 HSI时钟HSI时钟信号由内部8MHz的RC振荡器产生,可直接作为系统时钟或在2分频后作为

5、PLL输入。HSI RC振荡器能够在不需要任何外部器件的条件下提供系统时钟。它的启动时间比HSE晶体振荡器短。然而,即使在校准之后它的时钟频率精度仍较差。校准:制造工艺决定了不同芯片的RC振荡器频率会不同,这就是为什么每个芯片的HSI时钟频率在出厂前已经被ST校准到1%(25C)的原因。系统复位时,工厂校准值被装载到时钟控制寄存器的HSICAL7:0位。如果用户的应用基于不同的电压或环境温度,这将会影响RC振荡器的精度。你可以通过利用在时钟控制寄存器里的HSITRIM4:0位来调整HSI频率。时钟控制寄存器中的HSIRDY位用来指示HSI RC振荡器是否稳定。在时钟启动过程中,直到这一位被硬件

6、置1,HSI RC输出时钟才被释放。HSI RC可由时钟控制寄存器中的HSION位来启动和关闭。如果HSE晶体振荡器失效,HSI时钟会被作为备用时钟源。7.2.3 PLL 内部PLL可以用来倍频HSI RC的输出时钟或HSE晶体输出时钟。参考图7-2-1时钟树和时钟控制寄存器。PLL的设置(选择HIS振荡器除2或HSE振荡器为PLL的输入时钟,和选择倍频因子)必须在其被激活前完成。一旦PLL被激活,这些参数就不能被改动。如果PLL中断在时钟中断寄存器里被允许,当PLL准备就绪时,可产生中断申请。如果需要在应用中使用USB接口,PLL必须被设置为输出48或72MHZ时钟,用于提供48MHz的US

7、BCLK时钟。7.2.4 LSE时钟LSE晶体是一个32.768kHz的低速外部晶体或陶瓷谐振器。它为实时时钟或者其他定时功能提供一个低功耗且精确的时钟源。LSE晶体通过在备份域控制寄存器(RCC_BDCR)里的LSEON位启动和关闭。在备份域控制寄存器(RCC_BDCR)里的LSERDY指示LSE晶体振荡是否稳定。在启动阶段,直到这个位被硬件置1后,LSE时钟信号才被释放出来。如果在时钟中断寄存器里被允许,可产生中断申请。外部时钟源(LSE旁路) 在这个模式里必须提供一个32.768kHz频率的外部时钟源。你可以通过设置在备份域控制寄存器(RCC_BDCR)里的LSEBYP和LSEON位来选

8、择这个模式。具有50%占空比的外部时钟信号(方波、正弦波或三角波)必须连到OSC32_IN管脚,同时保证OSC32_OUT管脚悬空。见图7-2-1。7.2.5 LSI时钟LSI RC担当一个低功耗时钟源的角色,它可以在停机和待机模式下保持运行,为独立看门狗和自动唤醒单元提供时钟。LSI时钟频率大约40kHz(在30kHz和60kHz之间)。进一步信息请参考数据手册中有关电气特性部分。LSI RC可以通过控制/状态寄存器(RCC_CSR)里的LSION位来启动或关闭。在控制/状态寄存器(RCC_CSR)里的LSIRDY位指示低速内部振荡器是否稳定。在启动阶段,直到这个位被硬件设置为1后,此时钟才

9、被释放。如果在时钟中断寄存器(RCC_CIR)里被允许,将产生LSI中断申请。注意: 只有大容量产品可以进行LSI校准LSI校准:可以通过校准内部低速振荡器LSI来补偿其频率偏移,从而获得精度可接受的RTC时间基数,以及独立看门狗(IWDG)的超时时间(当这些外设以LSI为时钟源)。校准可以通过使用TIM5的输入时钟(TIM5_CLK)测量LSI时钟频率实现。测量以HSE的精度为保证,软件可以通过调整RTC的20位预分频器来获得精确的RTC时钟基数,以及通过计算得到精确的独立看门狗(IWDG)的超时时间。LSI校准步骤如下:1. 打开TIM5,设置通道4为输入捕获模式;2. 设置AFIO_MA

10、PR的TIM5_CH4_IREMAP位为1,在内部把LSI连接到TIM5的通道4;3. 通过TIM5的捕获/比较4事件或者中断来测量LSI时钟频率;4. 根据测量结果和期望的RTC时间基数和独立看门狗的超时时间,设置20位预分频器。7.2.6 系统时钟(SYSCLK)选择系统复位后,HSI振荡器被选为系统时钟。当时钟源被直接或通过PLL间接作为系统时钟时,它将不能被停止。只有当目标时钟源准备就绪了(经过启动稳定阶段的延迟或PLL稳定),从一个时钟源到另一个时钟源的切换才会发生。在被选择时钟源没有就绪时,系统时钟的切换不会发生。直至目标时钟源就绪,才发生切换。在时钟控制寄存器(RCC_CR)里的

11、状态位指示哪个时钟已经准备好了,哪个时钟目前被用作系统时钟。7.2.7 时钟安全系统(CSS) 时钟安全系统可以通过软件被激活。一旦其被激活,时钟监测器将在HSE振荡器启动延迟后被使能,并在HSE时钟关闭后关闭。如果HSE时钟发生故障,HSE振荡器被自动关闭,时钟失效事件将被送到高级定时器TIM1的刹车输入端,并产生时钟安全中断CSSI,允许软件完成营救操作。此CSSI中断连接到Cortex-M3 的NMI中断。 一旦CSS被激活,并且HSE时钟出现故障,CSS中断就产生,并且NMI也自动产生。NMI将被不断执行,直到CSS中断挂起位被清除。因此,在NMI的处理程序中必须通过设置时钟中断寄存器

12、(RCC_CIR)里的CSSC位来清除CSS中断。如果HSE振荡器被直间或间接地作为系统时钟,(间接的意思是:它被作为PLL输入时钟,并且PLL时钟被作为系统时钟),时钟故障将导致系统时钟自动切换到HSI振荡器,同时外部HSE振荡器被关闭。在时钟失效时,如果HSE振荡器时钟(被分频或未被分频)是用作系统时钟的PLL的输入时钟,PLL也将被关闭。7.2.8 RTC时钟通过设置备份域控制寄存器(RCC_BDCR)里的RTCSEL1:0位,RTCCLK时钟源可以由HSE/128、LSE或LSI时钟提供。除非备份域复位,此选择不能被改变。LSE时钟在备份域里,但HSE和LSI时钟不是。因此:如果LSE

13、被选为RTC时钟:只要VBAT维持供电,尽管VDD供电被切断,RTC仍继续工作。如果LSI被选为自动唤醒单元(AWU)时钟:详见7.2.5节LSI时钟。 如果VDD供电被切断, AWU状态不能被保证 。如果HSE时钟128分频后作为RTC时钟:如果VDD供电被切断或内部电压调压器被关闭(1.8V域的供电被切断),则RTC状态不确定。7.2.9 看门狗时钟 如果独立看门狗已经由硬件选项或软件启动,LSI振荡器将被强制在打开状态,并且不能被关闭。在LSI振荡器稳定后,时钟供应给IWDG。7.2.10 时钟输出 微控制器允许输出时钟信号到外部MCO管脚。相应的GPIO端口寄存器必须被配置为相应功能。

14、以下四个时钟信号可被选作MCO时钟:SYSCLK HSI HSE 除2的PLL时钟 7.3 外设时钟 STM32系列的芯片,所有外设的时钟都可以独立的打开和关闭,这样可以只把使用的那部分外设时钟打开,这样的好处是,可以降低系统的能耗,满足低功耗的要求。下面是各个具体外设的时钟情况:1 USB时钟: USB时钟来源于PLLCLK,通过USB分频器为USB外设提供48MHz时钟。由于USB时钟分频器只能1分频(即不分频)和1.5分频,所以PLL出来的时钟频率只能是48MHz和72MHz。当需要使用USB时,PLLCLK时钟只能设定为48MHz和72MHz。2独立看门狗时钟:独立看门狗时钟来源于内部

15、的低速RC时钟,可以提供30KHz60KHz之间,标准时40KHz的时钟。当独立看门狗打开时,这个时钟被强制打开,并且不会被关闭。3I2S时钟:I2S时钟直接来源于系统时钟,通过使能控制位来控制该外设时钟。4AHB时钟:AHB时钟为其他外设时钟提供时钟源。AHB时钟通过系统时钟1,2512分频而来,最高为72MHz。5DMA时钟:DMA时钟来源于AHB,最高可以到72MHz。6APB2高速时钟:APB2时钟来源于AHB时钟1,2,4,8,16分频,最高可以到72MHz。连接在APB2时钟上的是系统的高速外设,有TIME1、TIME8、SPI1、USART1、ADC1、ADC2、ADC3和所有I

16、/O口等这些外设。这些外设时钟都可以单独打开和关闭。7APB1低速时钟:APB1时钟来源于AHB时钟1,2,4,8,16分频,最高可达36MHz。连接在APB1时钟上的是系统的低速外设,有TIME2TIME7、窗口看门狗、USART2USART5、SPI2、SPI3、CAN、I2C1、I2C2、BKP后备域、电源控制和DAC时钟。这些外设可以单独打开和关闭。7.4 RCC库函数7.4.1 函数RCC_DeInit 表 7-4-1 . 描述了函数RCC_DeInit 表 7-4-1 . RCC_DeInit函数名RCC_DeInit函数原形void RCC_DeInit(void)功能描述将外设

17、RCC寄存器重设为缺省值输入参数无输出参数返回值先决条件被调用函数1. 该函数不改动寄存器RCC_CR的HSITRIM4:2. 该函数不重置寄存器RCC_BDCR和寄存器RCC_CSR。例: 设置RCC寄存器为初始状态RCC_DeInit();7.4.2 函数RCC_HSEConfig 表7-4-2. 描述了函数RCC_HSEConfig RCC_HSEConfigvoid RCC_HSEConfig(u32 RCC_HSE) 设置外部高速晶振(HSE)RCC_HSE: HSE的新状态如果HSE被直接或者通过PLL用于系统时钟,那么它不能被停振RCC_HSE 该参数设置了HSE的状态(见表7-

18、4-3.)。表7-4-3 RCC_HSE定义 RCC_HSE描述RCC_HSE_OFFHSE晶振OFFRCC_HSE_ONHSE晶振ONRCC_HSE_BypassHSE晶振被外部时钟旁路 使能HSERCC_HSEConfig(RCC_HSE_ON);7.4.3 函数RCC_WaitForHSEStartUp 表7-4-4. 描述了函数RCC_WaitForHSEStartUp RCC_WaitForHSEStartUpErrorStatus RCC_WaitForHSEStartUp(void)等待HSE起振该函数将等待直到HSE就绪,或者在超时的情况下退出 一个ErrorStatus枚举值

19、:SUCCESS:HSE晶振稳定且就绪 ERROR:HSE晶振未就绪 ErrorStatus HSEStartUpStatus;/* 使能 HSE */ /* 等待直到HSE起振或超时退出 */ HSEStartUpStatus = RCC_WaitForHSEStartUp();if(HSEStartUpStatus = SUCCESS) /* 在此处加入PLL和系统时钟的定义 */ else /* 在此处加入超时错误处理 */ 7.4.4 函数RCC_PLLConfig 表7-4-5. 描述了函数RCC_PLLConfig RCC_PLLConfigvoid RCC_PLLConfig(u

20、32 RCC_PLLSource, u32 RCC_PLLMul)设置PLL时钟源及倍频系数输入参数1RCC_PLLSource:PLL的输入时钟源输入参数2RCC_PLLMul:PLL倍频系数RCC_PLLSource RCC_PLLSource用以设置PLL的输入时钟源。表7-4-6. 给出了该参数可取的值 表7-4-6. RCC_PLLSource值 RCC_PLLSourceRCC_PLLSource_HSI_Div2 PLL的输入时钟 = HSI时钟频率除以2RCC_PLLSource_HSE_Div1PLL的输入时钟 = HSE时钟频率RCC_PLLSource_HSE_Div2P

21、LL的输入时钟 = HSE 时钟频率除以2RCC_PLLMul 该参数用以设置PLL的倍频系数。表7-4-7. 给出了该参数可取的值 表7-4-7. RCC_PLLMul值 RCC_PLLMul描述 RCC_PLLMul_2PLL输入时钟 x 2RCC_PLLMul_3PLL输入时钟 x 3RCC_PLLMul_4PLL输入时钟 x 4RCC_PLLMul_5PLL输入时钟 x 5RCC_PLLMul_6PLL输入时钟 x 6RCC_PLLMul_7PLL输入时钟 x 7RCC_PLLMul_8PLL输入时钟 x 8RCC_PLLMul_9PLL输入时钟 x 9RCC_PLLMul_10PLL

22、输入时钟 x 10RCC_PLLMul_11PLL输入时钟 x 11RCC_PLLMul_12PLL输入时钟 x 12RCC_PLLMul_13PLL输入时钟 x 13RCC_PLLMul_14PLL输入时钟 x 14RCC_PLLMul_15PLL输入时钟 x 15RCC_PLLMul_16PLL输入时钟 x 16警告:必须正确设置软件,使PLL输出时钟频率不超过72 MHz /* 设定PLL时钟输出72MHz使用8MHz外部晶振 */ RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);7.4.5 函数RCC_PLLCmd 表7-4-8.

23、 描述了函数RCC_PLLCmd RCC_PLLCmd void RCC_PLLCmd(FunctionalState NewState)使能或者失能PLLNewState:PLL新状态 这个参数可以取:ENABLE或者DISABLE 如果PLL被用于系统时钟,那么它不能被失能 /*使能 PLL */ RCC_PLLCmd(ENABLE);7.4.6 函数RCC_SYSCLKConfig 表7-4-9. 描述了函数RCC_SYSCLKConfig RCC_SYSCLKConfigvoid RCC_SYSCLKConfig(u32 RCC_SYSCLKSource)设置系统时钟(SYSCLK)R

24、CC_SYSCLKSource: 用作系统时钟的时钟源 RCC_SYSCLKSource :该参数设置了系统时钟(见表7-4-10)。表7-4-10 RCC_SYSCLKSource值 RCC_SYSCLKSource RCC_SYSCLKSource_HSI选择HSI作为系统时钟 RCC_SYSCLKSource_HSE选择HSE作为系统时钟RCC_SYSCLKSource_PLLCLK选择PLL作为系统时钟 /* 选择PLL作为系统时钟源*/ RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);7.4.7 函数RCC_GetSYSCLKSource 表7-4

25、-11. 描述了函数RCC_GetSYSCLKSource RCC_GetSYSCLKSourceu8 RCC_GetSYSCLKSource(void)返回用作系统时钟的时钟源 用作系统时钟的时钟源:0x00:HSI作为系统时钟 0x04:HSE作为系统时钟 0x08:PLL作为系统时钟/* 检测HSE是否为系统时钟 */ if(RCC_GetSYSCLKSource() != 0x04) 7.4.8 函数RCC_HCLKConfig 表7-4-12 描述了函数RCC_HCLKConfig RCC_HCLKConfigvoid RCC_HCLKConfig(u32 RCC_HCLK)设置AHB时钟(HCLK)RCC_HCLK: 定义HCLK,该时钟源自系统时钟(SYSCLK)RCC_HCLK :该参数设置了AHB时钟,表7-4-13. 给出了该参数可取的值。表7-4-13 RCC_HCLK值 RCC_HCLKRCC_SYSCLK_Div1AHB时钟 = 系统时钟RCC_SYSCLK_Div2AHB时钟 = 系统时钟 / 2RCC_SYSCLK_Div4AHB时钟 = 系统时钟 / 4RCC_SYSCLK_Div8AHB时钟 = 系统时钟 / 8RCC_SYSC

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1