stm32:外部晶振时钟配置-凯发旗舰

×
单片机 > 单片机程序设计 > 详情

stm32:外部晶振时钟配置

发布时间:2024-08-27 发布时间:
|

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  

    }  

}  



『本文转载自网络,凯发旗舰的版权归原作者所有,如有侵权请联系删除』

热门文章 更多
stm32问题记录:这回keil编译器背锅
网站地图