• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

STM32f103 如何使用库函数设置内部晶振工作

周宝生 2021-02-20 浏览量:1357
STM32f103 如何使用库函数设置内部晶振工作?
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 1.你用的是哪个库,建议你用cubemx生成代码,省去你配置库的烦恼。

    2.给你一段参考代码看看,用的是3.5的库

    void HSI_sysclock_config( uint32_t  RCC_PLLMul_x )
    {
        __IO uint32_t HSIStatus = 0;
        //先复位RCC寄存器
        RCC_DeInit();
        //使能HSI
        RCC_HSICmd(ENABLE);
        //检测HSE是否启动成功
        HSIStatus = RCC->CR & RCC_CR_HSIRDY;
        if ( RCC_CR_HSIRDY == HSIStatus )
        {
            //使能预取指,这是FLASH固件中的函数
            FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
    
            //设置FLASH等待周期。  因为倍频成72M 所以等待两个周期。
            FLASH_SetLatency(FLASH_Latency_2);  
    		// 8M/2*16=64M RCC_PLLMul_x = RCC_PLLMul_16
    		RCC_PLLConfig(RCC_PLLSource_HSI_Div2 RCC_PLLMul_x); //先配置锁相环 PLLCLK = HSI * 倍频因子
    		//配置三个总线的倍频因子
    		// HCLK = SYSCLK AHB 36M
    		RCC_HCLKConfig(RCC_SYSCLK_Div1);//HCLK --> AHB 最大为72M,所以只需要1分频
    		RCC_PCLK1Config(RCC_HCLK_Div2); //PCLK1 --> APB1 最大为36M,所以要2分频	
    		RCC_PCLK2Config(RCC_HCLK_Div1); //PCLK2 --> APB2 最大为72M,所以只需要1分频
    		RCC_PLLCmd(ENABLE); //使能PLL
    		// Wait till PLL is ready
    		while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET); //等待PLL稳定
    		RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); //选择系统时钟(选择锁相环输出)
    		// Wait till PLL is used as system clock source
    		while (RCC_GetSYSCLKSource() != 0x08); //等待选择稳定
    		RCC_GetClocksFreq(&RCC_ClockFreq);//查看频率值
    		}
    		else
    		{
    			//HSI启动失败
    		}
    }
    

    • 发布于 2021-02-20
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:1
  • 库函数可以支持用Cubemx配置的,直接就是用的HAL库的。
    • 发布于2021-02-20
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

STM32f103 如何使用库函数设置内部晶振工作