野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 15734|回复: 1

STM32时钟库函数RCC_DeInit介绍

[复制链接]
发表于 2014-11-1 15:14:56 | 显示全部楼层 |阅读模式
我只是转载http://blog.sina.com.cn/s/blog_5c9c2a050101nhy0.html
一片博文
void RCC_DeInit(void)

{

RCC->CR |= (uint32_t)0x00000001; //开启内部8MHz时钟

#ifndef STM32F10X_CL //STM32F10X_CL指的是STM32互联系列微处理器

  RCC->CFGR &= (uint32_t)0xF8FF0000; //其它类型处理器的CFGR寄存器中27-31位是保留位,24-26为MCO位

#else //而互联型处理器的CFGR寄存器中,28-31位是保留位,24-27位属MCO

  RCC->CFGR &= (uint32_t)0xF0FF0000; //初始化CFGR寄存器,详见注释第1条

#endif   

  

   RCC->CR &= (uint32_t)0xFEF6FFFF; //初始化CR寄存器,详见注释第2条

RCC->CR &= (uint32_t)0xFFFBFFFF; //位18=0,HSE没有旁路,只有在HSE关闭时才可以设置


   RCC->CFGR &= (uint32_t)0xFF80FFFF; //设置CFGR寄存器,详见注释第3条


#ifdef STM32F10X_CL //互联型微控制器的设置

  RCC->CR &= (uint32_t)0xEBFFFFFF;

RCC->CIR = 0x00FF0000;

RCC->CFGR2 = 0x00000000;

#elif defined (STM32F10X_LD_VL) || defined (STM32F10X_MD_VL) || defined (STM32F10X_HD_VL)

RCC->CIR = 0x009F0000; //初始化CIR时钟中断寄存器,详见注释第4条

RCC->CFGR2 = 0x00000000;      

#else

RCC->CIR = 0x009F0000;

#endif

}

注释:

1、位26(27)-24=000: 微控制器没有时钟输出;

   位15-14=00: PCLK2(APB2时钟)二分频后作为ADC时钟;

   位13-11=000: HCLK不分频,即APB2高速时钟PCLK2等于AHB时钟;

   位10-8=000: 低速APB1时钟(PCLK1)不分频;

   位7-4=0000: AHB时钟不分频,等于系统时钟SYSCLK;

   位3-2=00: HSI(内部高速时钟)作为系统时钟;

   位1-0=00: HSI(内部高速时钟)作为系统时钟。

2、位24=0: PLL关闭;

   位19=0: 时钟检测器关闭,当外部时钟就绪后开启;

   位16=0: 外部时钟HSE关闭。

3、位22=0:PLL时钟1.5倍分频作为USB时钟;

   位21-18=0000: PLL二倍频输出,只有PLL关闭时才可以设置;

   位17=0: HSE不分频,只有PLL关闭时才可以设置;

   位16=0:HSI时钟2分频后作为PLL输入时钟,只有PLL关闭时才可以设置;

4、位23=1:清除时钟安全系统中断标志位;

   位20=1: 清除PLL就绪中断标志位;

   位19=1: 清除HSE就绪中断标志位;

   位18=1: 清除HSI就绪中断标志位;

   位17=1: 清除LSE就绪中断标志位;

   位16=1: 清除LSI就绪中断标志位。



才明白了,书里面的历程为什么是定时器2-7的时钟频率是72MHz


回复

使用道具 举报

发表于 2014-11-1 16:19:34 | 显示全部楼层
讲解底层的寄存器操作,理解了就好

有这个细究的决心不错
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-24 19:36 , Processed in 0.026067 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表