




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、舉V耳旦聊STM32MCSSCSTM32RCC分析与使用MCCSTM32RCCSTM32STM32STM32硬件分析该时钟通过8MHz的内部RC振荡器产生,并且可被直接用做系统时钟,或者经过2分频后作为PLL的输入。它比HSE有更快的启动时间,但频率精确度没有外部晶体振荡器高。而且根据制造工艺的不同,不同芯片之间的RC振荡器频率也是不同。出厂时,每个设备频率已被校准至1%(25摄氏度)。出厂校验值被装载到时钟控制寄存器RCC_CR的HSICAL7:0位。在不同的电压或者温度下,可以通过RCC_CR中的HSITRIM4:0位来调整HSI的频率。并可以通过时钟控制寄存器RCC_CR的HISON位打
2、开或者禁用。LSE:低速外部时钟信号振荡器是一个32.768KHZ的低速外部晶体/陶瓷振荡器,它可以向RTC提供高精准时钟。LSI:低速内部时钟信号振荡频率为32KHZ左右(30-60KHZ之间)。(5)PLL:锁相环倍频输出其时钟输入源可选择为HSI/2、HSE或者HSE/2。倍频可选择为216倍,但是其输出频率最大不得超过72MHz。系统时钟(SYSCLK)系统时钟SYSCLK是供STM32中绝大部分部件工作的时钟源。系统时钟可选择为PLL输出、HSI或者HSE。HSI与HSE可以通过分频加至PLLSRC,并由PLLMUL进行倍频后经选择直接充当SYSCLK。PLLCLK经1.5分频或1分
3、频后为USB串行接口引擎提供一个48MHz的振荡频率。即当需要使用USB时,PLL必须使能,并且时钟频率配置为48MHz或者72MHz。但这并不意味着USB模块工作时需要48MHz,48MHz仅提供给USB串行接口引擎(SIE),而USB模块工作是由APBH1提供的。系统时钟最大频率为72MHz,它通过AHB分频器分频后送给各模块使用,AHB分频器可选择1、2、4、&16、64、128、256、512分频。AHB分频器输出的时钟送给5大模块使用:送给AHB总线、内核、内存和DMA使用的HCLK时钟。通过8分频后送给Cortex的系统定时器时钟。直接送给Cortex的空闲运行时钟FCLK。送给A
4、PB1分频器APB1分频器可选择为1、2、4、8、16分频,其输出中一路供APB1外设使用(PCLK1,最大频率36MHz);另一路送给定时器(Timer)2、3、4的倍频器使用(TIMXCLK),该倍频器可选择1或者2倍频,输出供定时器2、3、4使用。送给APB2分频器APB2分频器可供选择为1、2、4、8、16分频,其输出一路供APB2外设使用(PCLK2,最大频率72MHz);路送给定时器(Timer)1的倍频器使用(TIM1CLK),该倍频器可选择1或者2倍频,输出供定时器1使用;另外,APB2分频器还有一路输出供ADC分频器使用,分频后送给ADC模块使用,ADC分频器可选择为2、4、
5、6、8分频。时钟安全系统(CSS)图中在SYSCLK选择端下方有个CSS模块,CSS是一个时钟安全系统,用来保证系统时钟在HSE失效时能继续工作。时钟检测器在HSE振荡器启动延时后被使能,并当振荡器停止时禁用。如果在HSE振荡器时钟上检测到一个失效,这个振荡器将被自动禁用;一个时钟失效事件打断TIM1高级控制定时器的输入,并且产生一个中断来通知软件该次失效,使得MCU能够进行补救措施。系统时钟输出(MCO)图的左下方为系统时钟输出(MCO)模块。使得时钟能够输出到外部MCO引脚,相关的GPIO端口的配置寄存器必须被编程为复用功能模式。下面4个时钟的任意一个可被选作MCO时钟:SYSCLKHIS
6、HSE2分频的PLLCLK可通过时钟配置寄存器RCC_CFGR的MCO2:0位进行选择。几点说明:在以上的时钟输出中,有很多是带使能控制端的(如图中的PeripheralClockEnable),例如AHB总线时钟、内核时钟、各种APB1外设、APB2外设等等。当需要使用某模块时,记得一定要先使能对应的时钟。需要注意的是定时器的倍频器,当APB的分频为1时,它的倍频值为1,否则它的倍频值就为2。连接在APB1(低速外设)上的设备有:电源接口、备份接口、CAN、USB、I2C1、I2C2、UART2、UART3、SPI2、窗口看门狗、Timer2、Timer3、Timer4。连接在APB2(高速
7、外设)上的设备有:UART1、SPI1、Timer1、ADC1、ADC2、所有普通IO口(PAPE)、第二功能IO口。如果独立的看门狗(IWDG)被硬件选项或者软件访问启动了,LSI振荡器将被强制打开,并且不能被禁用,在LSI振荡器开始工作后,它的时钟被提供给IWDG。复位复位AW1系统复位复位复位SE關-VD审审擀丄wr餐吕Dv嘗曙回AD位(Ass)Assv(Add)Addv(Uom$寸AnbpADDV)ABEt+系统复位复位系统复位复位)复位)复位)系统复位将复位复位复位耗管理复位复位复位复位理复位复位:复位复位位识别复位位软置件复1位复位系统复位系统电源复位电/掉电复位电源复位复位电源复
8、位将复位除了备复位电Hue丄L6昭E斗&LUm复位源复位复位时时钟时钟源可被用来驱动系统时钟振荡器时钟振荡器时钟时钟以下2种二级时钟源:时钟时钟信时钟时钟Hbn|复位TDD冲发生器时钟源巴电复位roM-boMGLujgugf20KM3L6强甘bOM6L心引审罐IMDG56(J(UJ!U50hs)aeueLg(0Lbn備复位源MMDCL6S6I團口时时钟源sonLceEX6Lug|外部时钟源的硬件配置时钟时钟时钟时钟时时相钟关时钟时,直到这一位被硬件置1,时钟才被释放出晶体可以通过设置时钟控制寄存器来。如果在时钟时钟时钟作为系统时钟或在下提供系统时钟。它的启动时间比在校准之后它的时钟频率校准时钟
9、校准。系统复位时,工厂校准值被装载到时钟控制寄存器通过时钟控制时钟时钟时钟时钟时钟时钟LLLLSCLLLLLLLLLLLLSBCLKLSLSLSCC(RCC_BC)LS)里YLSELSLS(LSEBDC)在这LSSCYLSSCLSLSIRCLSLSIRC(CCCSCC_CSR)LSLSY(CCC)LSLSLSLSCLK)LSRTCLSLSLS(RCC(SYSCLK)SLLLL)(CSS)S(CCS)S(S)CCS时钟时钟时钟时钟时钟时钟时钟故障将导应用举例时钟自动切换用作系统时钟时钟(,间接的意振荡器,同时的输入时钟,时钟时钟时钟时闭钟。失效时时钟时钟时,产生中断,对应时钟时钟时钟时钟时钟时钟
10、时钟时钟看门狗时钟看门狗时钟时钟输出在实际应用中,一些用户常常遇到某些外设需要对其输入外部时钟或方波,针对这一需求,常用的方法是使用拟,或使用有源晶振为其提供时钟或方波。时钟输出时钟输出问题,同时降低了硬件成本。输出时钟时钟时钟时时钟时钟寄存器控制应应用举例用输出时钟:时钟的选择由时钟寄存器2:0位控制输出的内部时钟:时钟时钟时钟器时钟时钟寄存器时钟控制寄存器时钟和停止模式时,该位由硬件清零时钟用时钟时,该:时钟安以使能时钟监器。0:时钟监测器关闭器绪,时钟监测器开启。时钟旁路外部晶体振荡器。只有在外器器器被旁路。高速时钟就绪标(置器置器外器部时钟置振荡器已由软件置1器器部高速时钟使(能时钟件
11、置1来启器时,该位不能被器器器时钟的外部4-16器故障时,器系统时器器时钟件置1或清机和停止模式时器被用作或被选统时钟时,该位器器时钟统启动时,这些部高速时钟,时钟置器置器置器置器时钟配置寄存器时钟切换时器时钟时钟时钟器时钟器时钟时钟时钟源时时钟时钟输出在启动和切时钟由软件置1或清0来产生48MHz的USB时钟。在RCC_APB1ENR寄存器中使能USB时钟之前,必须保证该位已经有效。如果USB时钟被使能,该位不能被清零。O:PLL时钟1.5倍分频作为USB时钟1:PLL时钟直接作为USB时钟位21:18PLLMUL:PLL倍频系数(PLLmultiplicationfactor)由软件设置来
12、确定PLL倍频系数。只有在PLL关闭的情况下才可被写入。注意:PLL的输出频率不能超过72MHz0000:PLL2倍频输出1000:PLL10倍频输出0001:PLL3倍频输出1001:PLL11倍频输出0010:PLL4倍频输出1010:PLL12倍频输出0011:PLL5倍频输出1011:PLL13倍频输出0100:PLL6倍频输出1100:PLL14倍频输出0101:PLL7倍频输出1101:PLL15倍频输出0110:PLL8倍频输出1110:PLL16倍频输出0111:PLL9倍频输出1111:PLL16倍频输出位17PLLXTPRE:HSE分频器作为PLL输入(HSEdivider
13、forPLLentry)由软件置1或清0来分频HSE后作为PLL输入时钟。只能在关闭PLL时才能写入此位。0:HSE不分频1:HSE2分频位16PLLSRC:PLL输入时钟源(PLLentryclocksource)由软件置1或清0来选择PLL输入时钟源。只能在关闭PLL时才能写入此位。0:HSI振荡器时钟经2分频后作为PLL输入时钟1:HSE时钟作为PLL输入时钟。位15:14ADCPRE1:0:ADC预分频(ADCprescaler)由软件置1或清0来确定ADC时钟频率00:PCLK22分频后作为ADC时钟01:PCLK24分频后作为ADC时钟10:PCLK26分频后作为ADC时钟11:P
14、CLK28分频后作为ADC时钟位13:11PPRE22:0:高速APB预分频(APB2)(APBhigh-speedprescaler(APB2)由软件置1或清0来控制高速APB2时钟(PCLK2)的预分频系数。0 xx:HCLK不分频100:HCLK2分频101:HCLK4分频110:HCLK8分频111:HCLK16分频位10:8PPRE12:0:低速APB预分频(APB1)(APBlow-speedprescaler(APB1)由软件置1或清0来控制低速APB1时钟(PCLK1)的预分频系数。警告:软件必须保证APB1时钟频率不超过36MHz。0 xx:HCLK不分频100:HCLK2分
15、频101:HCLK4分频110:HCLK8分频111:HCLK16分频位7:4HPRE3:0:AHB预分频(AHBPrescaler)由软件置1或清0来控制AHB时钟的预分频系数。0 xxx:SYSCLK不分频1000:SYSCLK2分频1001:SYSCLK4分频1010:SYSCLK8分频1101:SYSCLK16分频1100:SYSCLK64分频1101:SYSCLK128分频时钟时器时钟时器统时钟;统时钟;为系统时钟;一个时钟源被作为系统时钟。时钟统时钟源。在从停止或待机模式中返回时出现故障时,由硬件时钟中断寄存器统时钟;统时钟;为系统时钟;作为系统时钟(如果时钟安全系统已经启时钟时钟
16、时钟时器时钟时器时钟时器时钟时器时钟安全中断中断中断标志位。中断中断绪中断标中断中断绪中断标中断中断绪中断标中断中断绪中断标中断中断位位位夕卜器位器位夕卜器位器位在夕部4-16器位位6:保5留,始终读位位位位3夕卜位位0:无夕部4-1:夕部4-1器器位2位1器器位位位0在夕部低速时钟0:无夕部32外器器位位器器位位夕2设复位寄存器位复位复位值:0 x00000000访问:无等待周期,字位31:16保留,始终读为0。位15ADC3RST:ADC3接口复位(ADC3interfacereset)由软件置1或清00:无作用;1:复位ADC3接口。位14USART1RST:USART1复位(USART
17、1reset)由软件置1或清00:无作用;1:复位USART1。位13TIM8RST:TIM8定时器复位(TIM8timerreset)由软件置1或清00:无作用;1:复位TIM8定时器。位12SPI1RST:SPI1复位(SPI1reset)由软件置1或清00:无作用;1:复位SPI1。位11TIM1RST:TIM1定时器复位(TIM1timerreset)由软件置1或清00:无作用;1:复位TIM1定时器。位10ADC2RST:ADC2接口复位(ADC2interfacereset)由软件置1或清00:无作用;1:复位ADC2接口。位9ADC1RST:ADC1接口复位(ADC1interf
18、acereset)由软件置1或清00:无作用;1:复位ADC1接口。位8IOPGRST:IO端口G复位(IOportGreset)由软件置1或清00:无作用;1:复位IO端口G。位7IOPFRST:IO端口F复位(IOportFreset)由软件置1或清00:无作用;1:复位IO端口F。位6IOPERST:IO端口E复位(IOportEreset)由软件置1或清00:无作用;1:复位IO端口E。位5IOPDRST:IO端口D复位(IOportDreset)由软件置1或清00:无作用;1:复位IO端口D。位复位复位位复位复位位复位复位位1保留,始终读为0。位复位复位辅助功能。外1设复位寄存器复位
19、复位位28复位复位位27:复位电源接复位位26:复位备份接位25复位位24复位位23复位位复位由软件置1或清00:无作用;1:复位USB。位22I2C2RST:I2C2复位(I2C2reset)由软件置1或清00:无作用;1:复位I2C2。位21I2C1RST:I2C1复位(I2C1reset)由软件置1或清00:无作用;1:复位I2C1。位20UART5RST:UART5复位(UART5reset)由软件置1或清00:无作用;1:复位UART5。位19UART4RST:UART4复位(UART4reset)由软件置1或清00:无作用;1:复位UART4。位18USART3RST:USART3
20、复位(USART3reset)由软件置1或清00:无作用;1:复位USART3。位17USART2RST:USART2复位(USART2reset)由软件置1或清00:无作用;1:复位USART2。位16保留,始终读为0。位15SPI3RSTSPI3复位(SPI3reset)由软件置1或清00:无作用;1:复位SPI3。位14SPI2RST:SPI2复位(SPI2reset)由软件置1或清00:无作用;1:复位SPI2。位13:12保留,始终读为0。位11WWDGRST:窗口看门狗复位(Windowwatchdogreset)由软件置1或清00:无作用;1:复位窗口看门狗。位10:6保留,始终
21、读为0。位5TIM7RST:定时器7复位(Timer7reset)由软件置1或清00:无作用;1:复位TIM7定时器。位4TIM6RST:定时器6复位(Timer6reset)由软件置1或清00:无作用;1:复位TIM6定时器。位3TIM5RST:定时器5复位(Timer5reset)由软件置1或清00:无作用;1:复位TIM5定时器。时器(时器(时钟使能时钟使能时器(时器(时钟使能时钟使能时器时器(时器时器(时器外设时钟使能寄存器外设时钟没有启用时,软件不能读出外设寄存器时钟使能时钟时钟时钟使能时钟时钟时钟使能时钟关闭;时钟开启。存时钟使能式时闪存接口电路时钟关闭;模式时闪存式时闪存接口电路
22、时钟开启。时钟时钟时钟使能时钟使能时时钟时时钟时钟使能时钟关闭;时钟开启。时钟使能时钟时钟外2设时钟使能寄存器外的设外访设问外的设外被设访被问访时问,时将时钟使能时钟关闭;时钟开启。时钟使能时钟关闭;时钟开启。时器时钟使能时器时钟关闭;时器时钟开启。时钟使能时钟关闭;时钟开启。时器时钟使能定时器时钟关闭;定时器时钟开启。时钟使能接口时钟关闭;接口时钟开启。时钟时钟时钟时钟使能时钟使能时钟使能时钟关闭时钟开启时钟使能时钟关闭时钟开启时钟使能时钟关闭时钟开启时钟使能时钟关闭时钟开启时钟使能时钟关闭时钟开启时钟使能时钟关闭时钟开启时钟使能时钟关闭时钟开启能时钟使能能时钟能时钟外1设时钟使能寄存器外1
23、外外设外设时时设访问结束。外设时钟时能外设寄存器器由软件置1或清0O:DAC接口时钟关闭;1:DAC接口时钟开启。位28PWREN:电源接口时钟使能(Powerinterfaceclockenable)由软件置1或清00:电源接口时钟关闭;1:电源接口时钟开启。位27BKPEN:备份接口时钟使能(Backupinterfaceclockenable)由软件置1或清00:备份接口时钟关闭;1:备份接口时钟开启。位26保留,始终读为0。位25CANEN:CAN时钟使能(CANclockenable)由软件置1或清00:CAN时钟关闭;1:CAN时钟开启。位24保留,始终读为0。位23USBEN:U
24、SB时钟使能(USBclockenable)由软件置1或清00:USB时钟关闭;1:USB时钟开启。位22I2C2EN:I2C2时钟使能(I2C2clockenable)由软件置1或清00:I2C2时钟关闭;1:I2C2时钟开启。位21I2C1EN:I2C1时钟使能(I2C1clockenable)由软件置1或清00:I2C1时钟关闭;1:I2C1时钟开启。位20UART5EN:UART5时钟使能(UART5clockenable)由软件置1或清00:UART5时钟关闭;1:UART5时钟开启。位19UART4EN:UART4时钟使能(UART4clockenable)由软件置1或清00:UA
25、RT4时钟关闭;1:UART4时钟开启。位18USART3EN:USART3时钟使能(USART3clockenable)由软件置1或清00:USART3时钟关闭;1:USART3时钟开启。位17USART2EN:USART2时钟使能(USART2clockenable)由软件置1或清00:USART2时钟关闭;1:USART2时钟开启。位16保留,始终读为0。位15SPI3EN:SPI3时钟使能(SPI3clockenable)由软件置1或清00:SPI3时钟关闭;1:SPI3时钟开启。位14SPI2EN:SPI2时钟使能(SPI2clockenable)由软件置1或清00:SPI2时钟关闭
26、;器0:定时器7时钟关闭1:定时器7时钟开启器0:定时器6时钟关闭1:定时器6时钟开启器0:定时器5时钟关闭1:定时器5时钟开启器0:定时器4时钟关闭1:定时器4时钟开启器0:定时器3时钟关闭1:定时器3时钟开启器0:定时器2时钟关闭1:定时器2时钟开启备份域控制寄存器备份域份域备份域到3等待周期,字、半字和字节访问当连续对该寄存器备份域控制寄存器控制寄存器5.节1。这些位只能由备份域复位清除(见6.1节.)。3任备份域器器作器器器器的周期才被清零。器器器器器器控制/状态寄存器(RCC_C状态寄存器软件软件软件复位发生时由硬件置1;由软件通过写:无软件复位发生;:发生软件复位。上电/掉电复位发
27、生时由硬件置1;由软件件置1;由软件软件软件软件分析系统启动过程分析2件在进行时钟部分的软件分析分析分析RCC-APB2ENR|=RCC_APB2Periph;else/*失能APB2时钟*/RCC-APB2ENR&=RCC_APB2Periph;看了RCC_APB2PeriphClockCmd()的函数原型,你显然会发现,其中只有对APB2外设使能寄存器的赋值操作。新的问题又出现了,我们没有在程序中对时钟控制寄存器(RCC_CR)和时钟配置寄存器(RCC_CFGR)进行任何操作,那么这么多系统时钟是如何配置的?默认的复位值么?肯定不是,因为默认的复位值与我们实际使用的时钟并不相符合。或者有人
28、想起了我们在创建项目的时候,进行的文件修改,在stm32f10 x.h中,我们取消了下面代码的注释:#defineSTM32F10X_XL/*!选择高密集型(大容量)的STM32设备*/在system_stm32f10 x.c中,我们同样取消了下面代码的注释#defineSYSCLK_FREQ_72MHz72000000/*选择系统频率为72Hz*/这两行代码起了什么作用?打开system_stm32f10 x.c,我们向下看:#ifdefSYSCLK_FREQ_HSE/*!SystemClockFrequency(CoreClock)*/*!SystemClockFrequency(Core
29、Clock)*/*!SystemClockFrequency(CoreClock)*/*!SystemClockFrequency(CoreClock)*/*!SystemClockFrequency(CoreClock)*/*!SystemClockFrequency(CoreClock)*/*!SystemClockFrequency(CoreClock)*/uint32_tSystemCoreClock=SYSCLK_FREQ_HSE;#elifdefinedSYSCLK_FREQ_24MHzuint32_tSystemCoreClock=SYSCLK_FREQ_24MHz;#elifd
30、efinedSYSCLK_FREQ_36MHzuint32_tSystemCoreClock=SYSCLK_FREQ_36MHz;#elifdefinedSYSCLK_FREQ_48MHzuint32_tSystemCoreClock=SYSCLK_FREQ_48MHz;#elifdefinedSYSCLK_FREQ_56MHzuint32_tSystemCoreClock=SYSCLK_FREQ_56MHz;#elifdefinedSYSCLK_FREQ_72MHzuint32_tSystemCoreClock=SYSCLK_FREQ_72MHz;#else/*!CR|=(uint32_t)
31、0 x00000001;/*重置SW,HPRE,PPRE1,PPRE2,ADCPRE和MCO位设置*/#ifndefSTM32F10X_CL/*若定义了CL型芯片,贝I编译如下语句,对时钟配置寄存器做出相应设置*/RCC-CFGR&=(uint32_t)0 xF8FF0000;#else/*若定义的芯片非CL型芯片,则编译如下语句,对时钟配置寄存器做出相应设置*/RCC-CFGR&=(uint32_t)0 xF0FF0000;#endif/*结束条件编译*/*重置外部高速时钟,时钟安全系统,锁相环的使能*/RCC-CR&=(uint32_t)0 xFEF6FFFF;/*重置外部高速时钟旁路使能
32、设置*/RCC-CR&=(uint32_t)0 xFFFBFFFF;/*重置PLL输入时钟源,HSE分频器作为PLL输入,PLL倍频系数,和USB预分频设置*/RCC-CFGR&=(uint32_t)0 xFF80FFFF;#ifdefSTM32F10X_CL/*若定义了CL型芯片,贝编译如下语句*/*ResetPLL2ONandPLL3ONbits*/RCC-CR&=(uint32_t)0 xEBFFFFFF;/*Disableallinterruptsandclearpendingbits*/RCC-CIR=0 x00FF0000;/*ResetCFGR2register*/RCC-CFG
33、R2=0 x00000000;#elifdefined(STM32F10X_LD_VL)|defined(STM32F10X_MD_VL)/*若定义了LD_CL型芯片或MD_VL型芯片,则编译如下语句*/*Disableallinterruptsandclearpendingbits*/RCC-CIR=0 x009F0000;/*ResetCFGR2register*/RCC-CFGR2=0 x00000000;#else/*若定义了其他类型型芯片,则编译如下语句*/*禁用所有中断,清除挂起位*/RCC-CIR=0 x009F0000;#endif/*结束条件编译*/#ifdefined(ST
34、M32F10X_HD)|(definedSTM32F10X_XL)#ifdefDATA_IN_ExtSRAM/*设置外部存储器控制器。在startup_stm32f10 x_xx.s/.c跳转到主函数之前调用。配置SRAM被用作程序数据存储器(包括堆和栈)。*/SystemInit_ExtMemCtl();#endif/*DATA_IN_ExtSRAM*/#endif/*配置系统时钟频率,HCLK,PCLK2和PCLK1的预分频*/*配置闪存延迟周期,使能预取缓冲*/SetSysClock();系统初始化的流程为:可以看出,系统的初始化流程中,除了初始化存储器外,大部分都是为下一步在SetSy
35、sClock()中为了初始化时钟做准备.SetSysClock()源代码如下:staticvoidSetSysClock(void)#ifdefSYSCLK_FREQ_HSESetSysClockToHSE();#elifdefinedSYSCLK_FREQ_24MHzSetSysClockTo24();#elifdefinedSYSCLK_FREQ_36MHzSetSysClockTo36();#elifdefinedSYSCLK_FREQ_48MHzSetSysClockTo48();#elifdefinedSYSCLK_FREQ_56MHzSetSysClockTo56();#elifd
36、efinedSYSCLK_FREQ_72MHzSetSysClockTo72();#endif/*如果上述定义都未启用,则使用复位值作为系统时钟源*/在SetSysClock()的主要作用为根据定义的宏,编译相应的系统时钟设置,对于我们而言,这个函数的有效语句为,#elifdefinedSYSCLK_FREQ_72MHzSetSysClockTo72();由此可见,我们一系列的设置就是为了SetSysClockTo72()做铺垫时钟设置分析SetSysClockTo72()函数中含有大量的宏,宏大多都定义在system_stm32f10 x.h中,结合上面的寄存器分析,和宏的名称,我们不难看出
37、这些宏的作用,与时钟相关的宏,有600多行定义,恕笔者时间和精力有限,在此无法一一列举介绍。如果想要深入了解,可以使用Sourceinsight等软件,结合着数据手册和我们上面的分析去对照学习需要掌握的是方法,如果自己没有独立分析代码的能力以后的学习将会十分困难.SetSysClockTo72()源代码如下:staticvoidSetSysClockTo72(void)_iOuint32_tStartUpCounter=0,HSEStatus=0;/*配置系统时钟,HCLK,PCLK2和PCLK1*/*使能HSE时钟*/RCC-CR|=(uint32_t)RCC_CR_HSEON);/*等待H
38、SE时钟就绪,如果超时,贝I腿出*/doHSEStatus=RCC-CR&RCC_CR_HSERDY;外部高速时钟就绪标志StartUpCounter+;/计数值自加一/*当外部高速时钟就绪且或计数值大于1280即超时时,自带向下执行*/while(HSEStatus=0)&(StartUpCounter!=HSEStartUp_TimeOut);/*如果外部4-16MHZ振荡器就绪*/if(RCC-CR&RCC_CR_HSERDY)!=RESET)/*高速外部时钟标志位置1*/HSEStatus=(uint32_t)0 x01;else/*若未就绪,则高速外部时钟标志位置0*/HSEStat
39、us=(uint32_t)0 x00;/*若外部高速时钟就绪*/if(HSEStatus=(uint32_t)0 x01)/*使能预取缓冲器*/FLASH-ACR|=FLASH_ACR_PRFTBE;/*FLASH进入等待状态*/FLASH-ACR&=(uint32_t)(uint32_t)FLASH_ACR_LATENCY);FLASH-ACR|=(uint32_t)FLASH_ACR_LATENCY_2;/*设置系统时钟为默认值,高速APB2时钟不分频,HCLK=SYSCLK*/RCC-CFGR|=(uint32_t)RCC_CFGR_HPRE_DIV1;/*高速APB2时钟(PCLK2)的频率设置为HCLK不分频值*/RCC-CFGR|=(uint32_t)RCC_CFGR_PPRE2_DIV1;/*低速APB1时钟(PCLK1)频率设置为HCLK的2分频值*/RCC-CFGR|=(uint32_t)RCC_CFGR_PPRE1_DIV
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 学校教学群管理制度
- 学校电设备管理制度
- 学校钢琴室管理制度
- 学生助教团管理制度
- 学科实验室管理制度
- 安全与责任管理制度
- 安全设施室管理制度
- 实训室部门管理制度
- 审计局财务管理制度
- 客餐厅配电管理制度
- 2025年新高考2卷(新课标Ⅱ卷)英语试卷
- 2024年湖北省初中学业水平考试地理试卷含答案
- 2024年认证行业法律法规及认证基础知识 CCAA年度确认 试题与答案
- GB/T 2423.65-2024环境试验第2部分:试验方法试验:盐雾/温度/湿度/太阳辐射综合
- 房产证英文翻译件模板
- 板形与板形控制基础知识
- 过敏性休克ppt课件
- 热血传奇架设及参数设置修改
- 金矿堆浸初步设计
- 打印复印明细清单(报销用)
- (完整版)空白五线谱(大格子)
评论
0/150
提交评论