stm32f103的HSI设置
HSI基本知识
HSI是8MRC震荡电路,精度1%。
PLL的设置必须在其被激活前完成,输出必须被设置温48M或者72M
LSE:通过在备份域控制寄存器(RCC_BDCR)里的LSEON位启动和关闭。
如果相应的APB预分频系数是1,定时器的时钟频率与所在APB总线频率一致。
否则,定时器的时钟频率被设为与其相连的APB总线频率的2倍
HSI + PLL 最高为64M(HSI / 2 * 16)。
寄存器的作用
时钟控制寄存器RCC_CR:HSI/HSE/PLL使能和就绪,HSI时钟校准。
时钟配置寄存器(RCC_CFGR):时钟切换和切换状态标志,各种分频器
时钟中断寄存器 (RCC_CIR):各种时钟中断和时钟中断标志。
APB2 外设复位寄存器 (RCC_APB2RSTR);APB1 外设复位寄存器 (RCC_APB1RSTR):各个外设接口的复位
AHB外设时钟使能寄存器 (RCC_AHBENR);APB2 外设时钟使能寄存器(RCC_APB2ENR);APB1 外设时钟使能寄存器(RCC_APB1ENR):各个外设的使能。
HSI的配置,我这里用的是原库,直接将 system_stm32f10x.c 中的 void SystemInit (void) 函数改成下边的就可以了
void SystemInit (void){
RCC_DeInit();//将外设 RCC寄存器重设为缺省值
RCC_HSICmd(ENABLE);//使能HSI
while(RCC_GetFlagStatus(RCC_FLAG_HSIRDY) == RESET);//等待HSI使能成功
FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable); //使能或者失能预取指缓存(参数里是使能) -----加上这两句才能到64M
FLASH_SetLatency(FLASH_Latency_2); //设置代码延时值(参数里的是指2延时周期)
RCC_HCLKConfig(RCC_SYSCLK_Div1); //设置AHB时钟 HCLK = SYSCLK/1
RCC_PCLK1Config(RCC_HCLK_Div4); //设置低速速AHB时钟 -----这里频率是48/4 = 12M 定时器2~7频率是24M
RCC_PCLK2Config(RCC_HCLK_Div1); //设置高速AHB时钟 -----这里频率是48/1 = 48M
//设置 PLL 时钟源及倍频系数
RCC_PLLConfig(RCC_PLLSource_HSI_Div2, RCC_PLLMul_12);//使能或者失能 PLL,这个参数可以取:ENABLE或者DISABLE
RCC_PLLCmd(ENABLE);//如果PLL被用于系统时钟,那么它不能被失能
//等待指定的 RCC 标志位设置成功 等待PLL初始化成功
while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);
//设置系统时钟(SYSCLK) 设置PLL为系统时钟源
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);//选择想要的系统时钟
//等待PLL成功用作于系统时钟的时钟源
// 0x00:HSI 作为系统时钟
// 0x04:HSE作为系统时钟
// 0x08:PLL作为系统时钟
while(RCC_GetSYSCLKSource() != 0x08);//需与被选择的系统时钟对应起来,RCC_SYSCLKSource_PLL
}
配置之后,不确定是否配置成功,可以只用库函数中的时钟频率结构体,来查看系统各个时钟频率,在主函数中使用
int main( void ){
RCC_ClocksTypeDef RCC_Clocks; //时钟频率结构体
RCC_GetClocksFreq(&RCC_Clocks); //获取各个时钟频率
printf("SYSCLK_Frequency is %d \r\n",RCC_Clocks.SYSCLK_Frequency); //SYSCLK_Frequency is 48000000
printf("HCLK_Frequency is %d \r\n",RCC_Clocks.HCLK_Frequency); //HCLK_Frequency is 48000000
printf("PCLK1_Frequency is %d \r\n",RCC_Clocks.PCLK1_Frequency); //PCLK1_Frequency is 12000000
printf("PCLK2_Frequency is %d \r\n",RCC_Clocks.PCLK2_Frequency); //PCLK2_Frequency is 48000000
printf("ADCCLK_Frequency is %d \r\n",RCC_Clocks.ADCCLK_Frequency); //ADCCLK_Frequency is 24000000
}
stm32f103的HSI设置的更多相关文章
- 第15章 RCC—使用HSE/HSI配置时钟
第15章 RCC—使用HSE/HSI配置时钟 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku. ...
- 第15章 RCC—使用HSE/HSI配置时钟—零死角玩转STM32-F429系列
第15章 RCC—使用HSE/HSI配置时钟 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku. ...
- 嵌入式单片机STM32应用技术(课本)
目录SAIU R20 1 6 第1页第1 章. 初识STM32..................................................................... ...
- STM时钟
一.在STM32中,有五个时钟源,为HSI.HSE.LSI.LSE.PLL. ①HSI是高速内部时钟,RC振荡器,频率为8MHz. ②HSE是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率 ...
- STM32—时钟树(结合系统时钟函数理解)
时钟树的概念: 我们可以把MCU的运行比作人体的运行一样,人最重要的是什么?是心跳! 心脏的周期性收缩将血液泵向身体各处.心脏对于人体好比时钟对于MCU,微控制器(MCU)的运行要靠周期性的时钟脉冲来 ...
- stm32F429启动时钟配置
STM32f429在启动时会在startup_stm32f429_439xx.s中调用static void SetSysClock(void)函数.默认使用的是25M晶振,把系统时钟设置为180M. ...
- STM32 晶振 系统时钟8MHZ和72Mhz的原因
首先问题描述: 1.自己画的板子和淘宝买的最小系统板 系统时钟不一致,自己画的是8Mhz,HSE失败:最小系统板72Mhz 2.最小系统板在程序1运行仿真的时候,查看peripherals->P ...
- Linux命令总结大全,包含所有linux命令
使用说明:此文档包含所有的Linux命令,只有你想不到的没有你看不到的,此文档共计10万余字,有8400多行,预计阅读时间差不多需要3个小时左右,所以要给大家说一说如何阅读此文档 为了方便大家阅读,我 ...
- 关于STM32F103+ESP8266+阿里云过程之环境搭建和阿里云数据格式设置及注意点(一)
计划实现功能:将STM32F103采集到的温湿度,PM2.5等数值,通过UART与ESP8266通讯,使得ESP8266对外仅充当串口功能的黑盒.ESP8266通过MTQQ发布订阅数据,设备上传.接收 ...
随机推荐
- arcpy SearchCursor sql_clause
import arcpy fc = 'c:/data/base.gdb/well' fields = ['WELL_ID', 'WELL_TYPE'] # Use ORDER BY sql claus ...
- C# ffmpeg 视频处理
ffmpeg的官网:https://ffmpeg.org/ ffmpeg是一个强大的视频处理软件(控制台程序),可以通过C# 调用ffmpeg,并传入指令参数,即可实现视频的编辑. /// <s ...
- HttpWebRequest Timeout
随着REST风格的流行,直接通过 HttpWebRequest 进行服务调用的客户端应用越来越多.这里总结一些可能需要费时调查的经验,希望能帮助大家. 1. 用完的HttpWebRequest要Abo ...
- Flutter AspectRatio、Card 卡片组件
Flutter AspectRatio 组件 AspectRatio 的作用是根据设置调整子元素 child 的宽高比. AspectRatio 首先会在布局限制条件允许的范围内尽可能的扩展,widg ...
- 阿里重磅开源在线分析诊断工具Arthas(阿尔萨斯)
github地址: Arthas English version goes here. Arthas 是Alibaba开源的Java诊断工具,深受开发者喜爱. 当你遇到以下类似问题而束手无策时,Art ...
- mac中matplotlib不支持中文的解决办法
参考:https://blog.csdn.net/kaizei_pao/article/details/80795377 首先查看matplotlib已加载的字体: import matplotlib ...
- 【Python】使用POST方式抓取有道翻译结果
1.安装requests库 2.打开有道翻译,按下F12,进入开发者模式,输入我爱青青,点击Network,再点击XHR 3.撰写爬虫 import requestsimport json # 使用有 ...
- rs-enumerate-devices data
realsense rs2::context ctx; auto devicelist = ctx.query_devices(); if (devicelist.size() > 0) { r ...
- linux 大量time_wait的解决方法
通过调整内核参数解决vi /etc/sysctl.conf 编辑文件,加入以下内容:net.ipv4.tcp_syncookies = 1net.ipv4.tcp_tw_reuse = 1net.ip ...
- AWS 监控服务(六)
AWS CloudWatch 概念 基于确定的内容监控基础设施组件 基于指定的指标发送通知并触发各种操作 分布式统计数据和收集系统,用于收集并跟踪指标 默认情况下,在管理程序级别无缝收集指标,如CPU ...