欢迎来到天天文库
浏览记录
ID:8147887
大小:71.50 KB
页数:2页
时间:2018-03-07
《先看一张stm32时钟系统框图》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、先看一张STM32时钟系统框图在STM32中,有五个时钟源,分别是为HSI、HSE、LSI、LSE、PLL。HSI内部高速RC振荡时钟,8MHz;HSE,外部高速时钟,4M__16MHZ;LSI,内部低速RC时钟,40KHZ;LSE外部低速时钟,32.768KHz;PLL锁相环倍频,由图可知,可以选择HSE/2、HSI/2、HSE,倍频系数可以是2——16,但是不要超过72MHz。SYSCLK系统时钟,由图可知可以选择HSE、HSI、PLLCLK的一种,最高72MHz,通过AHB分频器后送给各个模块,AHB分频可以选择1、2、4、8、16、64、128、
2、256、512,AHB分频后送给5大模块使用。 1 HCLK,也就是AHB总线、内核、内存和DMA使用的HCLK时钟2通过8分频后送给Cortex的系统定时器时钟3直接送给Cortex的空闲运行时钟FCLK4送给APB1分频器。APB1分频器可选择1、2、4、8、16分频,其输出一路供APB1外设使用(PCLK1,最大频率36MHz),另一路定时器(Timer)2、3、4倍频器使用。该倍频器可选择1或者2倍频,时钟输出供定时器2、3、4使用5送给APB2分频器。APB2分频器可选择1、2、4、8、16分频,其输出一路供APB2外设使用(PCLK2,最
3、大频率72MHz),另一路送给定时器(Timer)1倍频器使用。该倍频器可选择1或者2倍频,时钟输出供定时器1使用。另外,APB2分频器还有一路输出供ADC分频器使用,分频后送给ADC模块使用。ADC分频器可选择为2、4、6、8分频。注意定时器的倍频器,当APB的分频为1时,它的倍频值为1,否则它的倍频值就为2。连接在APB1(低速外设)上的设备有:电源接口、备份接口、CAN、USB、I2C1、I2C2、UART2、UART3、SPI2、窗口看门狗、Timer2、Timer3、Timer4。注意USB模块虽然需要一个单独的48MHz时钟信号,但它应该不是
4、供USB模块工作的时钟,而只是提供给串行接口引擎(SIE)使用的时钟。USB模块工作的时钟应该是由APB1提供的。连接在APB2(高速外设)上的设备有:UART1、SPI1、Timer1、ADC1、ADC2、所有普通IO口(PA~PE)、第二功能IO口。配上一个简单的自己的时钟配置程序,使用库函数。voidRCC_Configuration(void)//时钟配置{ErrorStatusHSEStartUpStatus;//判断标志变量RCC_HSEConfig(RCC_HSE_ON);//使用外部时钟HSEStartUpStatus=RCC_WaitF
5、orHSEStartUp();//等待外部时钟稳定if(HSEStartUpStatus==SUCCESS)//如果外部晶振启动成功{RCC_HCLKConfig(RCC_SYSCLK_Div1);//HCLK(AHB时钟)值等于系统时钟RCC_PCLK1Config(RCC_HCLK_Div2);//PCLK1(APB1时钟)值等于HCLK的一半,最高不超过36MHzRCC_PCLK2Config(RCC_HCLK_Div1);//PCLK2(APB2时钟)值等于HCLK,最高可是72MHzFLASH_SetLatency(FLASH_Latency_
6、2);//FLASH时序控制,SYSCLK0~24MHzLatency=0.SYSCLK25~48MHzLatency=1.SYSCLk//48~72MHzLatency=2FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);//开启FLASH预取指功能RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_9);//HSE提供系统时钟,9倍频,也就是72MHzRCC_PLLCmd(ENABLE);//启动PLLwhile(RCC_GetFlagStatus(R
7、CC_FLAG_PLLRDY)==RESET);//等待PLL稳定RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);//系统时钟来自PLL输出while(RCC_GetSYSCLKSource()!=0x08);//等待系统时钟稳定}}
此文档下载收益归作者所有