STM32L151系列标准库时钟晶振修改
STM32L151 标准库时钟晶振修改
此文档主要介绍如何修改STM32L151系列的标准库的时钟晶振
1.背景介绍
因为STM32的标准库函数中默认使用的外部8M的高速晶振,但是在实际的开发阶段,可以使用的不是8M的外部晶振。所以此时需要对标准库函数做出相应的修改,外部晶振才可以起振。本文档将使用12M的外部高速晶振为例,来大致的了解如何修改标准库函数,使其调用外部的12M高速晶振。
2.主要步骤
第一步:需要了解时钟函数是在什么地方调用的,打开startup_stm32l1xx_md.s
Reset handler routine
Reset_Handler PROCEXPORT Reset_Handler [WEAK]IMPORT __mainIMPORT SystemInit LDR R0, =SystemInit //***在stm32的其实代码中SystemInit为系统调用的时钟函数***BLX R0 LDR R0, =__mainBX R0ENDP
第二步:了解初始化函数具体在哪里调用外部高速晶振的,打开system_stm32l1xx.c的SystemInit函数
void SystemInit (void)
{/*!< Set MSION bit */RCC->CR |= (uint32_t)0x00000100;/*!< Reset SW[1:0], HPRE[3:0], PPRE1[2:0], PPRE2[2:0], MCOSEL[2:0] and MCOPRE[2:0] bits */RCC->CFGR &= (uint32_t)0x88FFC00C;/*!< Reset HSION, HSEON, CSSON and PLLON bits */RCC->CR &= (uint32_t)0xEEFEFFFE;/*!< Reset HSEBYP bit */RCC->CR &= (uint32_t)0xFFFBFFFF;/*!< Reset PLLSRC, PLLMUL[3:0] and PLLDIV[1:0] bits */RCC->CFGR &= (uint32_t)0xFF02FFFF;/*!< Disable all interrupts */RCC->CIR = 0x00000000;#ifdef DATA_IN_ExtSRAMSystemInit_ExtMemCtl();
#endif /* DATA_IN_ExtSRAM *//* Configure the System clock frequency, AHB/APBx prescalers and Flash settings */SetSysClock(); //***此函数的作用初始化外部高速晶振,如果注释此函数,此系统会默认使用STM32内部8M的高速晶振***#ifdef VECT_TAB_SRAMSCB->VTOR = SRAM_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM. */
#elseSCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH. */
#endif
}
第三步 修改外部8M的高速晶振------->12M,打开 stm32l1xx.h
/*** @brief In the following line adjust the value of External High Speed oscillator (HSE)used in your application Tip: To avoid modifying this file each time you need to use different HSE, youcan define the HSE value in your toolchain compiler preprocessor.*/
#if !defined (HSE_VALUE)
//***此行代码是8M的外部高速晶振,所以注释掉此行代码***
//#define HSE_VALUE ((uint32_t)8000000) /*!< Value of the External oscillator in Hz */
//***将原来的8M外部高速晶振换为12M的外部高速晶振***
#define HSE_VALUE ((uint32_t)12000000) /*!< Value of the External oscillator in Hz */
#endif
第四步 修改时钟的倍频与分频系数,打开system_stm32l1xx.c的SetSysClock函数
/* PLL configuration */ //***为PLL的配置***
#if 0/*default HSE 8M*///因为STM32l151的最大时钟频率为32M,外部的采用的8M的高速晶振,所以经过2分频,8倍频。//8M / 2 * 8 == 32MRCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLMUL |RCC_CFGR_PLLDIV));RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLMUL8 | RCC_CFGR_PLLDIV2);
#else /*HSE 12M*///因为实际情况使用的12M的外部高速晶振,所以采用3分频,8倍频。故为12M / 3 * 8 == 32MRCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLMUL |RCC_CFGR_PLLDIV));RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLMUL8 | RCC_CFGR_PLLDIV3);
#endif
经过这四步之后,标准库函数已经改为了默认使用外部12M高速晶振工作。具体情况可以使用示波器进行验证,在此不多余介绍。
STM32L151系列标准库时钟晶振修改相关推荐
- STM32 F103C8T6 标准库换晶振 硬件8MHZ 换12MHZ实测方法
手头有一块12MHZ外部硬件开发板,型号是STM32F103c8t6.准备实验一个项目. 可网上大部分源码程序都是8MHZ晶振的源码.由于是初学查了好久很困惑. 虽然使用CUBEMX的HAL库很容易改 ...
- 开博尔Q50要采用XMOS解码芯片与双时钟晶振的意义何在?
开博尔Q50音质方面大升级,它不仅是一台蓝光播放器,也是一台HiFi播放器.此次音频解码采用XMOS无损音频解码芯片,很多人对于此次音频解码升级有些不理解,我这里给大家解释一下. 首先来科普一下什么是 ...
- 时钟晶振在电子日历上的作用!
电子日历在生活中日益普遍,该设计主要利用时钟芯片.表晶32.768KHZ,石英晶体谐振器.温度传感器DS18B20 和液晶屏LCD1602 构建了一个可测温式万年历装置,电路结构简单,具有语音报时功能 ...
- 计算机主板上实时时钟晶振频率为,电脑主板晶振的识别及测量方法介绍
一. 单位:赫兹"Hz" 1MHz=1000kHz=1000000Hz 符号: "X.Y" 二. 晶振的分类: 主板上晶振主要分为: 1.时钟晶振: 与时钟芯相 ...
- 计算机主板上实时时钟晶振频率为,你知道你的笔记本电脑主板中的晶振好不好吗?...
晶振是石英晶体振荡器的简称.晶振是一种用于稳定频率和选择频率的电子元器件.晶振是高精度和高稳定的振荡器,广泛应用于各种电路中,为数据处理设备产生时钟信号和为特定系统提供基准信号. 晶振的识别 笔记本电 ...
- 计算机主板上实时时钟晶振频率为,电脑主板上的四大类晶振
电脑主板上的四大类晶振 晶振和时钟芯片共同组成主板的时钟发生器,主板上的多数部件额时钟信号,由时钟发生器提供,时钟发生器是主板时钟电路的核心,如同主板的心脏.那么,你可知道电脑主板上都有哪些晶振呢?这 ...
- STM32F407修改程序将外部25M晶振修改为8M(标准库、HAL库)
前言:由于自己设计的STM32F407的板子外部晶振使用的是8M,如果想用例如野火F407等外部晶振为25M的例程还需要修改外部晶振才能使用. 程序中修改只需要修改两处地方即可,根据自身所用的是标准库 ...
- HC32F460之时钟(晶振)设置
简介 以配置16M晶振为例,具体操作配置如下: 代码如下(修改点1) void clock_init(void) {stc_clk_xtal_cfg_t stcXtalCfg; //高速外部震荡器st ...
- 计算机主板上实时时钟晶振频率为,电脑主板里的晶振才是网络时代发展的根源...
原标题:电脑主板里的晶振才是网络时代发展的根源 文章来源于,转载请注明! 匆匆一年又一年,转眼间我已经度过了20个严寒酷暑,长大是件很有意思的事儿,不经意间就发生了,本来是这样一个人,然后突然间变成另 ...
最新文章
- 全新 DOCKER PALS 计划上线,带给您不一样的参会体验!...
- hive -f 传递参数
- 4 款 MySQL Binlog 日志处理工具对比,谁才是王者?
- mysql 释放空间_07_MySQL delete后释放存储空间
- pc端vnc连接android 端
- android volley 上传图片 和参数,android Volley 上传文件上传图片
- 疯狂java学习笔记1023---线程的同步
- c语言猜四位数游戏猜10次,C语言猜数字游戏--随机生成4个不相同的数字从小到大排序,用户开始游戏,如果用户猜对数字和数字对应的位置,界面回馈A,如果数字正确位置不正确,则回馈B...
- 让你瞬间提高工作效率的常用js函数汇总
- linux怎么在ETC文件夹内新建,教你如何手动新建Linux用户
- WIN7获取管理员权限
- 项目是如何完成的(一)
- 一个可以在Linux环境下找到,杀死,并重启Tomcat的脚本
- mysql 隐秘后门_Phpstudy被暴存在隐藏后门-检查方法
- python基于情感词典的情感分析
- cad四级计算机考试,国家CAD等级考试介绍
- Hilbert变换C语言实现学习
- 遥感图像空间分辨率获取
- PS学习-曝光与色彩处理(二)--纯净自然的高调照片
- 系统提供人民币(CNY)美元(USD)英镑(GBP)价值转换