STM32系统时钟初始化程序。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STM32系统时钟初始化程序。相关的知识,希望对你有一定的参考价值。
void Stm32_Clock_Init(u8 PLL)
unsigned char temp=0;
MYRCC_DeInit(); //复位并配置向量表
RCC->CR|=0x00010000; //外部高速时钟使能HSEON
while(!(RCC->CR>>17));//等待外部时钟就绪
RCC->CFGR=0X00000400; //APB1=DIV2;APB2=DIV1;AHB=DIV1;
PLL-=2;//抵消2个单位
RCC->CFGR|=PLL<<18; //设置PLL值 2~16
RCC->CFGR|=1<<16; //PLLSRC ON
FLASH->ACR|=0x32; //FLASH 2个延时周期
RCC->CR|=0x01000000; //PLLON
while(!(RCC->CR>>25));//等待PLL锁定
RCC->CFGR|=0x00000002;//PLL作为系统时钟
while(temp!=0x02) //等待PLL作为系统时钟设置成功
temp=RCC->CFGR>>2;
temp&=0x03;
RCC->CFGR|=PLL<<18; //设置PLL值 2~16
RCC->CFGR|=1<<16; //PLLSRC ON
这两句都对配置寄存器赋值,后面一句不会把前面赋的值覆盖了么?
这句执行的结果是 影响 CFGR 的第 19位以上,因为 2<<18 相当于 1<<19,所以影响的最小位是19位,后面那句 1<<16,只影响到CFGR的第16位, 两者不在同一区域,所以互不影响.
而且,后面的 1<<16位,只能第16位是1,其他位全是 0,跟前面的位或,不会影响其他位. 参考技术A 看一个软件工程的时候,首先要从这个工程的启动文件开始看起,建议你看看stm32工程中的startup_stm32f10x_hd.s文件,在其中除了stm32内存堆栈的设置和中断向量入口之外,还包含了stm32启动的整个过程,在3.5的库中,你会发现这个启动文件中包含.
stm8时钟
为使系统快速启动,复位后时钟控制器自动使用HSI的8分频(HSI/8)做为主时钟(2M)。其原因为HSI的稳定时间短,而8分频可保证系统在较差的VDD条件下安全启动。
一旦主时钟源稳定,用户程序可将主时钟切换到另外的时钟源 。
以上是关于STM32系统时钟初始化程序。的主要内容,如果未能解决你的问题,请参考以下文章