1、背景

最近,做移植,因此对目标平台做一些了解。

STM32L051C6T6资源为32K Flash; 2K EEPROM;8K RAM;37 GPIOs;1ADC(10 Channels)

2、系统刚起来时的时钟配置

时钟配置是嵌入式程序中比较重要且基础的部分。

有四种不同的时钟源,可用于驱动系统时钟(SYSCLK)。

时钟源:HSI16、HSE、PLL、MSI

AHB、APB1和APB2域的最大时钟为32MHz。

2.1 调用开始

从startup_stm32l051xx.s文件中,调用SystemInit函数

   IMPORT  __mainIMPORT  SystemInit  LDR     R0, =SystemInitBLX     R0

2.2 查看SystemInit(void)源码内容

/*** @brief  Setup the microcontroller system.* @param  None* @retval None*/
void SystemInit (void)
{
/*!< Set MSION bit 使能MS时钟晶振*/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) 0x88FF400C;/*!< Reset HSION, HSIDIVEN, HSEON, CSSON and PLLON bits 清零*/RCC->CR &= (uint32_t)0xFEF6FFF6;/*!< Reset HSI48ON  bit  清零*/RCC->CRRCR &= (uint32_t)0xFFFFFFFE;/*!< 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终端*/RCC->CIER = 0x00000000;/* Configure the Vector Table location add offset address ------------------*/
#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
}

主要是使能MS晶振,对于其他时钟源进行除能、RCC中断除能、向量表重置。

2.3 起来的系统时钟频率是多少

MSI(内部多速率)振荡器时钟

微处理器以上电复位/System or RTC 域复位和从待机模式复位启动之后,用处于2.1MHz的MSI作为系统时钟。

HSI16(16MHz) 或HSI16的4分频(4MHz)或处于任何频率的MSI作为从停止模式醒来的时钟。

因此

在Main函数中,常看见一下代码来配置TICK中断的间隔

 SysTick_Config(2000); /* 1ms config */

3、常见时钟配置

3.1 内部HSI配置为系统时钟

3.2 外部HSE配置为系统时钟

3.3 外部HSE,PLL配置为系统时钟

RCC->APB1ENR |= (RCC_APB1ENR_PWREN); /* (1) */
 PWR->CR = (PWR->CR & ~(PWR_CR_VOS)) | PWR_CR_VOS_0; /* (2) */

RCC->CR |= RCC_CR_HSEON;

while(RCC->CR & (RCC_CR_HSERDY)  !=  RCC_CR_HSERDY)

{}

RCC->CFGR |= RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLMUL8 | RCC_CFGR_PLLDIV2;  /* (5) */

RCC->CR |= RCC_CR_PLLON;  /* (6) */

while((RCC->CR & RCC_CR_PLLRDY) == 0)   /* (7) */

{}

STM32L051xx的时钟配置相关推荐

  1. STM32的时钟配置随笔

    以前使用STM32都是使用库函数开发,最近心血来潮想要使用寄存器来试试手感,于是乎便在工作之余研究了一下STM32F4的时钟配置,在此将经历过程写下来作为锻炼,同时也供和我一样的新手参考,如有错误或者 ...

  2. 华大单片机HC32L136J8TA读取DS18B20温度(源码+时钟配置)

    免费的C语言和linuxPDF文档:传送门 有一点C语言基础和华大单片机开发经验,应该就能看得懂就不多介绍了,有疑问可以留言,看到就回了; 关于协议具体解析:传送门@不脱发的程序猿 注(2021-05 ...

  3. STM32的时钟配置——时钟树解析

    此文章由于讲得较详细因此篇幅较长,请带着一点耐心去读,相信会有收获! 目录 STM32为什么要有复杂的时钟系统 详解STM32时钟系统 STM32有几个时钟源 关于时钟输出 软件配置时钟 STM32为 ...

  4. NXP(I.MX6uLL)DDR3实验——DDR3重要时间参数、时钟配置与原理图简析

    目录 DDR3 内存时间参数 传输速率 tRCD 参数 CL 参数 AL 参数 tRC 参数 tRAS 参数 I.MX6U MMDC内存控制器简介 MMDC内存控制器简介 MMDC内存控制器信号引脚 ...

  5. STM32 RCC时钟配置

    STM32 RCC时钟配置 时钟源 外部高速晶振HSE,通常是8MHz. 内部高速晶振HSI,8MHz. 外部低速晶振LSE,32.768KHz. 内部低速晶振LSI,40KHz. 时钟源选择 通常使 ...

  6. stm32时钟配置总结

    stm32时钟配置时钟源: 1,HSE(高速外部时钟)即常见的外接8M晶振方案: 2,HSI(高速内部时钟) 即8M内部振荡时钟方案: 3,LSE(低速外部时钟)即常见的32.768Khz晶振方案: ...

  7. 火牛单片机rtc时钟配置_怎么用STM32F103RTC进行时钟的配置

    #include "sys.h" #include "delay.h" #include "usart.h" #include " ...

  8. DSP28377s系统时钟配置注意事项

    DSP28377s系统时钟配置注意事项 问题一脸嫣然的向我们走来... 近日,一个兄弟在配置基于28377s芯片的主控系统时钟时,遇到点困难. 具体是这样的,原来的主控板使用的是20MHz外部晶振,为 ...

  9. 如何修改IMX6UL开发板时钟配置?

    启扬i.MX6UL开发板时钟由24Mhz与32.768Khz晶振提供,这里不具体介绍NXP公司整体的时钟规划,只从软件API接口方面去分析如何去修改一个外设的时钟. 接下来的讲解将以CAN总线的时钟为 ...

最新文章

  1. 自己制作 SPx N合1 自动安装盘(x86)
  2. LINUX 上的 Shebang 符号(#!)
  3. 简简单单日赚200元,当日结算
  4. 【实验】华为静态路由基础配置
  5. 【转】老邹说Magento的前世今生
  6. JavaScript 面向对象编程(三) —— 函数进阶 / 严格模式 / 高阶函数 / 闭包 / 浅拷贝和深拷贝
  7. jQuery各种选择器总结
  8. 【Python】32 个常用入门 Python 实现
  9. 3801.最佳连续子数组-AcWing题库
  10. Matlab多种群遗传算法
  11. 测试图片真假软件,如何找出照片的PS痕迹__如何检测一张图片是否被PS过_飞翔教程...
  12. 2014版C 语言程序设计基础,清华大学出版社-图书详情-《C/C++程序设计基础与实践教程》...
  13. PS动作怎么做爆炸火焰效果特效
  14. CppCheck的使用
  15. U盘格式化后容量变小问题修复方案
  16. 2112731-59-4,N-(Azido-PEG2)-N-Biotin-PEG3-acid末端羧酸可在活化剂(例如EDC或HATU)存在下与伯氨基反应
  17. 用ADC0809实现八通道采集
  18. 备份android分区,安卓手机手动【备份+还原】分区
  19. Collaborative Spatiotemporal Feature Learning for Video Action Recognition 论文笔记
  20. Excel批量删除空行的几种方法

热门文章

  1. Java学习路线·入门
  2. OracleTechnologyNetwork
  3. web3.js的provider
  4. EasyUI DataGrid DetailView(数据表格详细展示带子表格)
  5. uint与int区别
  6. CentOS7 好日子到头了,如何优雅的抛弃 CentOS7?
  7. centos7配置ip地址(centos7配置ip地址)
  8. 【Python学习】transpose函数
  9. EXCEL的查找:如何按 行号+列号 进行查询, 可用indirect() + match() 或 index() + match()
  10. 树莓派开箱+上手python小游戏