void systemclock_config(void)
{
rcc_deinit();
rcc_hseconfig(rcc_hse_on); //input hse = 24m
errorstatus hsestartupstatus = rcc_waitforhsestartup();
if(hsestartupstatus == success)
{
flash_prefetchbuffercmd(enable); //m0 defined
flash_setlatency(flash_latency_1); //m0 defined
rcc_prediv1config(rcc_prediv1_div1);
rcc_pllconfig(rcc_pllsource_prediv1, rcc_pllmul_2); //pll clk = hse *rcc_pllsource_prediv1*2 = 48m
rcc_pllcmd(enable); //enable pll clk
while(rcc_getflagstatus(rcc_flag_pllrdy) == reset) //wait pll clk ready
{
}
rcc_sysclkconfig(rcc_sysclksource_pllclk); //select sysclk = pllclk =48m
// * - 0x00: hsi used as system clock
// * - 0x04: hse used as system clock
// * - 0x08: pll used as system clock
// * - 0x0c: hsi48 used as system clock, applicable only for stm32f072 devices
while(rcc_getsysclksource()!=0x08)
{
}
rcc_hclkconfig(rcc_sysclk_div1); //ahb clk(hclk) = sys clk = 48m
rcc_pclkconfig(rcc_hclk_div1); //apb clk(pclk) = hclk = 48m
rcc_usartclkconfig(rcc_usart1clk_pclk); // uart2 clk = 48m
rcc_usartclkconfig(rcc_usart2clk_pclk); // uart2 clk = 48m
rcc_i2cclkconfig(rcc_i2c1clk_sysclk); // i2c clk =48m
rcc_usbclkconfig(rcc_usbclk_pllclk); // usb clk = 48m
}
}
『本文转载自网络,64体育的版权归原作者所有,如有侵权请联系删除』