|
本帖最后由 andeyqi 于 2018-5-10 22:51 编辑 试验硬件平台:STM32F0系列探索套件STM32F0DISCOVERY
官方的开发板没有外界HSE时钟,以下试验使用的时钟源为内部HSI时钟(8MHZ)。 case1:选取HSI作为系统的时钟输出配置如下:
RCC相关的寄存器如下:本实验我们只需关心1,2两个寄存器 1,Clock control register (RCC_CR) 时钟控制寄存器 2,Clock configuration register (RCC_CFGR) 时钟配置寄存器 3,Clock interrupt register (RCC_CIR) 中断使能状态清除寄存器,本实验未开中断,无需关心它的值。 4,APB peripheral reset register 2 (RCC_APB2RSTR) 5,APB peripheral reset register 1 (RCC_APB1RSTR) 外设reset控制寄存器,本实验未控制外设,无需关心其值。 6,AHB peripheral clock enable register (RCC_AHBENR) 7,APB peripheral clock enable register 2 (RCC_APB2ENR) 8,APB peripheral clock enable register 1 (RCC_APB1ENR) 外设时钟使能控制器,未使用外设,无需关心其值。 9,RTC domain control register (RCC_BDCR) RTC相关时钟设置寄存器,未使用无需关心。 10,Control/status register (RCC_CSR) 11,AHB peripheral reset register (RCC_AHBRSTR) 12,Clock configuration register 2 (RCC_CFGR2) 13,Clock configuration register 3 (RCC_CFGR3) USB,ADC,USART1,IIC外设的时钟设置,本实验未使用无需关心。 14, Clock control register 2 (RCC_CR2)内部14M时钟设置,未使用无需关注。 从头文件中可知RCC_相关的寄存器基地址如下: #define RCC_BASE (AHBPERIPH_BASE + 0x00001000) #define AHBPERIPH_BASE (PERIPH_BASE + 0x00020000) #define PERIPH_BASE ((uint32_t)0x40000000U) RCC_BASE = 0x40021000 寄存器的值配置期待如下: 寄存器RCC_CFGR:
SW[1:0] 为 00: HSI selected as system clock SWS[1:0]: System clock switch status 00: HSI oscillator used as system clockHPRE[3:0]: HCLK prescaler 0xxx: SYSCLK not divided HPRE[3:0]: HCLK prescaler 0xxx: SYSCLK not divided PPRE[2:0]: PCLK prescaler 0xx: HCLK not divided PLL和MCO功能未使用,默认的0值即为关闭未使用状态,DEBUG 的 RCC_CFGR值跟预期的结果一致。 接下来查看下RCC_CR寄存器的值是否和预期的一致 Bit 0 HSION: HSI clock enable 期望为1,开启了HSI内部时钟 Bit 1 HSIRDY: HSI clock ready flag 期望为1,HSI内部时钟振荡器已经稳定
DEBUG时观测RCC_BASE开始的寄存器的内容和上述的保持一致,验证了上述的猜测。
使用PLL的时候和HSI情况相似。 |
| 学习一下 |
STM32
超强工具——STM32CubeMX 你会用吗?
集结出发! STM32全国研讨会系列之一:ST智能门铃中国首秀
关于STM32启动文件的几个小问题
【银杏科技ARM+FPGA双核心应用】STM32H7系列35——USB_VCP_FS
【银杏科技ARM+FPGA双核心应用】STM32H7系列28——USB_HID
粉丝分享 | 图说CRC原理应用及STM32硬件CRC外设
STM32L151进入低功耗,并由RTC唤醒的故事
[转]stm32控制NFC模块(PN532)源码(P2P,模拟卡,读写卡等
STM32G070RB+LVGL移植
微信公众号
手机版