STM32时钟库函数RCC_DeInit介绍

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
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值