ZKX's LAB

stm32为什么要配置系统时钟 stm32时钟配置 系统时钟

2020-10-05知识4

STM32的系统默认时钟是多少 AHB(HCLK)时钟=SYSCLK=72MHzAPB2(PCLK2)时钟=AHB 1/2时钟=36MHzAPB1(PCLK1)时钟=AHB时钟=72MHzADC时钟=PCLK2 1/4=9MHzPLL时钟=HSE*9=72MHz

stm32系统时钟配置问题 上面所给的程序是使用内部晶振的,而通常开发板都会使用外部晶振通过倍频使用。内部晶振最高只能倍频到64MHz,而使用外部晶振能够倍频到72MHz。如果板子上确实有外部晶振,请使用外部晶振!使用外部晶振配置实例如下:使用HSE时钟,程序设置时钟参数流程:1、将RCC寄存器重新设置为默认值 RCC_DeInit;2、打开外部高速时钟晶振HSE RCC_HSEConfig(RCC_HSE_ON);3、等待外部高速时钟晶振工作 HSEStartUpStatus=RCC_WaitForHSEStartUp();4、设置AHB时钟 RCC_HCLKConfig;5、设置高速AHB时钟 RCC_PCLK2Config;6、设置低速速AHB时钟 RCC_PCLK1Config;7、设置PLL RCC_PLLConfig;8、打开PLL RCC_PLLCmd(ENABLE);9、等待PLL工作 while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY)=RESET)10、设置系统时钟 RCC_SYSCLKConfig;11、判断是否PLL是系统时钟 while(RCC_GetSYSCLKSource()。0x08)12、打开要使用的外设时钟 RCC_APB2PeriphClockCmd()/RCC_APB1PeriphClockCmd()

STM32为什么先设置AHB时钟再设置系统时钟 AHB是高级高性能总线,再快也只能跟系统时钟一样快,这时候系统时钟还没有倍频,那就等于外部时钟,如果你的晶振是8M,那你AHB时钟也是8M。

STM32的时钟到底如何配置? 时钟配置的话,你可以先想好自己的程序里面需要用到哪些外设,然后根据时钟树打开相应的外设时钟就行了。我这里给你一个一般的时钟配置的子程序吧:void rcc_configuration(void){ErrorStatus HSEStartUpStatus;定义变量HSEStartUpStatusRCC_DeInit();RCC重新配置RCC_HSEConfig(RCC_HSE_ON);打开HSE时钟HSEStartUpStatus=RCC_WaitForHSEStartUp();读入RCC状态if(HSEStartUpStatus=SUCCESS)/HSE时钟稳定{FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);Flash预取缓冲使能;FLASH_SetLatency(FLASH_Latency_2);72MHz运行时,Flash需要等到2个周期;RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_9);使用外部时钟的9倍作为PLL时钟;RCC_PLLCmd(ENABLE);使能PLL;while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY)=RESET)/等待PLL时钟稳定;{}RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);把系统时钟切换到PLL时钟;while(RCC_GetSYSCLKSource()。0x08)/判断PLL是否是系统时钟{}}下面这个是总线上的时钟配置:RCC_HCLKConfig(RCC_SYSCLK_Div1);主时钟为72MHzRCC_PCLK2Config(RCC_HCLK_Div1);APB2时钟为72MHzRCC_PCLK1Config(RCC_HCLK_Div2);APB1。

STM32F103想用内部时钟HSI做为系统时钟,怎么配置成36M void RCC_Configuration(void){RCC_DeInit();将外设 RCC寄存器重设为缺省值RCC_HSICmd(ENABLE);使能HSIwhile(RCC_GetFlagStatus(RCC_FLAG_HSIRDY)=RESET);等待HSI使能成功FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);FLASH_SetLatency(FLASH_Latency_2);RCC_HCLKConfig(RCC_SYSCLK_Div1);RCC_PCLK1Config(RCC_HCLK_Div2);RCC_PCLK2Config(RCC_HCLK_Div1);PLL 时钟源及倍频系数RCC_PLLConfig(RCC_PLLSource_HSI_Div2,RCC_PLLMul_9);使能或者失能 PLL,这个参数可以取:ENABLE或者DISABLERCC_PLLCmd(ENABLE);如果PLL被用于系统时钟,那么它不能被失能等待指定的 RCC 标志位设置成功 等待PLL初始化成功while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY)=RESET);设置系统时钟(SYSCLK)设置PLL为系统时钟源RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);选择想要的系统时钟等待PLL成功用作于系统时钟的时钟源0x00:HSI 作为系统时钟0x04:HSE作为系统时钟0x08:PLL作为系统时钟while(RCC_GetSYSCLKSource()。0x08);需与被选择的系统时钟对应起来,RCC_SYSCLKSource_PLL}

#倍频#stm32#单片机#pll

随机阅读

qrcode
访问手机版