作业帮 > 综合 > 作业

stm32的时钟好复杂啊?我快不行了.

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/06 08:13:59
stm32的时钟好复杂啊?我快不行了.
程序要怎么配置啊?
AHB (HCLK) 时钟 =\x09SYSCLK\x09\x09=\x0972MHz
APB2(PCLK2)时钟\x09=\x09AHB时钟\x09\x09=\x0936MHz
APB1(PCLK1)时钟\x09=\x09AHB 1/2时钟\x09=\x0972MHz
ADC时钟\x09 =\x09PCLK2 1/4\x09=\x09 9MHz
PLL时钟 = \x09HSE*9\x09\x09=\x0972MHz
\x09ErrorStatus HSEStartUpStatus;
\x09//初始化RCC外部设备寄存器
\x09RCC_DeInit();
\x09//打开外部高速晶振
\x09RCC_HSEConfig( RCC_HSE_ON );
\x09//等待外部高速设备准备好
\x09HSEStartUpStatus = RCC_WaitForHSEStartUp();
\x09//外部高速设备已准备好
\x09if( HSEStartUpStatus == SUCCESS )
\x09{
\x09\x09//启动FLASH预取值
\x09\x09FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
\x09\x09//设置FLASH_Lacency延时2周期
\x09\x09FLASH_SetLatency(FLASH_Latency_2);
\x09\x09//配置AHB(HCLK)时钟=SYSCLK
\x09\x09RCC_HCLKConfig(RCC_SYSCLK_Div1);
\x09//配置APB2(PCLK2)钟=AHB时钟
\x09\x09RCC_PCLK1Config(RCC_HCLK_Div2);
\x09//配置APB1(PCLK1)钟=AHB 1/2时钟
\x09\x09RCC_PCLK2Config(RCC_HCLK_Div1);
\x09\x09//配置ADC时钟=PCLK2 1/4
\x09\x09RCC_ADCCLKConfig(RCC_PCLK2_Div4);
\x09\x09//配置PLL时钟 == 外部高速晶体时钟*9
\x09\x09RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_9);
\x09\x09//使能PLL
\x09\x09RCC_PLLCmd(ENABLE);
\x09\x09//等待PLL时钟就绪
\x09\x09while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY)==RESET)
\x09\x09{
\x09\x09}
\x09\x09//SYSCLK = PLL
\x09\x09RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
\x09\x09//检查PLL时钟是否为SYSCLK
\x09\x09while(RCC_GetSYSCLKSource() != 0x08)
\x09\x09{
\x09\x09}
\x09}