HSI配置
2020-07-21 04:14
549 查看
概述
HSI是内部高速时钟,由内部8MHZ的RC振荡器产生,可倍频,最高为64MHZ,可以直接作为系统时钟或者2分频后作为PLL输入。
HSI可以不需要外部晶振的条件下作为系统时钟,然而缺点是精度较差,随着CPU温度升高而精度变差,所以一般不会用到。
软件
1.初始化RCC外设
2.使能RCC
3.等待RCC就绪
4.等待RCC就绪完成
5.使能FLash预取值缓冲区
6.设置systick与闪存访问时间比例(设置频率)
7.设置AHB预分频因子
8.设置APB2预分频因子
9.设置时钟来源为HSI,倍频因子
10开启PLL
11.等待PLL稳定
12.等PLL稳定之后,把PLL时钟切换为systick时钟
13.读取时钟状态位,确保时钟为systick时钟
void HSI_SetSysClock(uint32_t pllmul) { __IO uint32_t HSIStartUpStatus = 0; // 把RCC外设初始化成复位状态,这句是必须的 RCC_DeInit(); //使能HSI RCC_HSICmd(ENABLE); // 等待 HSI 就绪 HSIStartUpStatus = RCC->CR & RCC_CR_HSIRDY; // 只有 HSI就绪之后则继续往下执行 if (HSIStartUpStatus == RCC_CR_HSIRDY) { //----------------------------------------------------------------------// // 使能FLASH 预存取缓冲区 FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable); // SYSCLK周期与闪存访问时间的比例设置,这里统一设置成2 // 设置成2的时候,SYSCLK低于48M也可以工作,如果设置成0或者1的时候, // 如果配置的SYSCLK超出了范围的话,则会进入硬件错误,程序就死了 // 0:0 < SYSCLK <= 24M // 1:24< SYSCLK <= 48M // 2:48< SYSCLK <= 72M FLASH_SetLatency(FLASH_Latency_2); //----------------------------------------------------------------------// // AHB预分频因子设置为1分频,HCLK = SYSCLK RCC_HCLKConfig(RCC_SYSCLK_Div1); // APB2预分频因子设置为1分频,PCLK2 = HCLK RCC_PCLK2Config(RCC_HCLK_Div1); // APB1预分频因子设置为1分频,PCLK1 = HCLK/2 RCC_PCLK1Config(RCC_HCLK_Div2); //-----------------设置各种频率主要就是在这里设置-------------------// // 设置PLL时钟来源为HSE,设置PLL倍频因子 // PLLCLK = 4MHz * pllmul RCC_PLLConfig(RCC_PLLSource_HSI_Div2, pllmul); //------------------------------------------------------------------// // 开启PLL RCC_PLLCmd(ENABLE); // 等待 PLL稳定 while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET) { } // 当PLL稳定之后,把PLL时钟切换为系统时钟SYSCLK RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); // 读取时钟切换状态位,确保PLLCLK被选为系统时钟 while (RCC_GetSYSCLKSource() != 0x08) { } } else { // 如果HSI开启失败,那么程序就会来到这里,用户可在这里添加出错的代码处理 // 当HSE开启失败或者故障的时候,单片机会自动把HSI设置为系统时钟, // HSI是内部的高速时钟,8MHZ while (1) { } } }
相关文章推荐
- RCC学习笔记-使用HSE与HSI配置系统时钟并使用MCO输出监控系统时钟
- STM8S时钟配置CLK_HSIPrescalerConfig与CLK_SYSCLKConfig区别
- 学习下stm32 配置 HSI作为系统时钟,但意义不大,一般不这样做!
- 第15章 RCC—使用HSE/HSI配置时钟—零死角玩转STM32-F429系列
- STM32系统学习——RCC(使用HSE/HSI配置时钟)
- 第15章 RCC—使用HSE/HSI配置时钟
- 第15章 RCC—使用HSE/HSI配置时钟—零死角玩转STM32-F429系列
- RCC学习笔记—使用HSE或HSI配置时钟
- stm32变更外部晶振时如何配置时钟、以及HSI的使用
- RCC—使用 HSE/HSI 配置时钟 ---时钟树
- STM32F103 使用HSI配置系统时钟为64MHZ
- android开发游记:通过xml配置快速实现点击热点效果和渐变动画(不用java代码)
- storm配置参数详解
- 高性能Mysql主从架构的复制原理及配置详解
- Smarty 配置文件的读取
- hudson配置教程
- vs2010 boost_1_61_0 win7 配置
- STM32时钟配置,不同晶振时需要配置的程序
- log4j.properties配置详解
- caffe及faster-rcnn详细配置安装过程