defined STM32F10X_XL) || (defined STM32F10X_HD_VL) #ifdef DATA_IN_ExtSRAM SystemInit_ExtMemCtl(); #endif /* DATA_IN_ExtSRAM */#endif /* 配置系统时钟频率、HCLK、PCLK2和PCLK1分频器 */ /* 配置Flash延迟周期并使能预取缓冲区 */ SetSysClock();#ifdef VECT_TAB_SRAM SC...
2 编写主函数获取系统时钟频率。RCC_ClocksTypeDef RCC_CLK;int main(void){vSystem_Init();RCC_GetClocksFreq(&RCC_CLK);//Get chip frequencies#if ( USE_SEGGER_RTT_ENABLE > 0 )//Use segger rtt enableSEGGER_RTT_printf(0, "System Clock Source : %d\r\n", RCC_GetSYSCLKSource());SEGGER_...
IMPORT SystemInit LDR R0, =SystemInit BLX R0 LDR R0, =__main BX R0 ENDP 通过这段汇编代码可以看出,程序在执行main函数之前,会先执行SystemInit函数。 2.2 SystemInit函数详解 void SystemInit (void) { /* Reset the RCC clock configuration to the default reset state(for debug purpose) */ /* Se...
37行:设置HCLK时钟(AHB Clock)为1分频(不能超过最大72MHz); 38行:设置PCLK1时钟(APB1 Clock)为2分频(不能超过最大36MHz); 39行:设置PCLK2时钟(APB2 Clock)为1分频(不能超过最大72MHz); 41行:用“HAL_RCC_ClockConfig()”函数设置RCC_ClkInitStruct; 将代码和时钟树进行对照,如图 9.3.2 所示,红色...
SetSysClock(); } 从上面的代码可以看出,和库函数中的RCC_DeInit所执行的代码一下,所以在用户程序中需要从新配置系统时钟的话,不需要通过上面的代码将时钟配置为默认状态,只要调用RCC_DeInit函数即可。如下图所示: 有不明白的地方只需要和相应的寄存器对应一下即可,相关的寄存说明请看“STM32时钟系统的配置寄存器和...
voidSystemCoreClockUpdate(void){uint32_t tmp=0,pllvco=0,pllp=2,pllsource=0,pllm=2;/* Get SYSCLK source ---*/tmp=RCC->CFGR&RCC_CFGR_SWS;switch(tmp){case0x00:/* HSI used as system clock source */SystemCoreClock=HSI_VALUE;break;case0x04:/* HSE used as system clock source */...
/* Configure the System clock source, PLL Multiplier and Divider factors, AHB/APBx prescalers and Flash settings ---*/ SetSysClock(); /* Configure the Vector Table location add offset address ---*/ #ifdef VECT_TAB_SRAM SCB->VTOR = SRAM_BASE | VECT_TAB_OFFSET; /...
voidSystemCoreClockUpdate(void){uint32_ttmp=0,pllvco=0,pllp=2,pllsource=0,pllm=2;/* Get SYSCLK source ---*/tmp=RCC->CFGR&RCC_CFGR_SWS;switch(tmp){case0x00:/* HSI used as system clock source */SystemCoreClock=HSI_VALUE;break;case0x04:/* HSE used as system clock source */...
1intmain(void)2{3u32 fre1;4fre1 =2;5fre1 =HAL_RCC_GetSysClockFreq();67/*选择时钟源为HSE*/8RCC->CR |=0X1<<16; //开启HSE时钟9while((RCC->CR & 0X1<<16) == 1); //等待HSERDY就绪1011RCC->CFGR |=0X1; //时钟源选择为HSE1213fre1 =HAL_RCC_GetSysClockFreq();14} ...
*/SystemClock_Config();// 调用库函数来检验自己的配置是否成功配置为系统频率64MHzsys_clk=HAL_RCC_GetSysClockFreq();while(1);} 3)使用外部时钟源HSE作为PLL的时钟源,然后将PLL作为系统时钟源 与前面类似,这里设置外部高速时钟HSE作为系统时钟,仍是设置两个结构体。