首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

STM32 时钟主频配置

STM32 时钟主频配置

STM32时钟配置主要是通过两个寄存器PCC-CR(时钟控制寄存器)和RCC-CFGR(时钟配置寄存器)完成的。           系统主频配置思路:1  选择PLL 分支的输入时钟 ;2 设置外部晶振的分频数 ;3 选择PLL倍频时钟源; 4 设置PLL倍频数 ;5 选择系统时钟 ;6  对 AHB 总线分频(继续 APB1/APB2  总线分频)
        int main(void)

{


   unsigned char sws = 0;

   RCC->CR |= 0X00010000;

   while(!(RCC->CR>>17));  



   RCC->CFGR = 0x00000400;   


  /* 寄存器CFGR的18-21四个bit位配置成以下值,则PLL就会设置成对应的值:

0000:PLL 2倍频输出
  1000:PLL 10倍频输出

0001:PLL 3倍频输出
  1001:PLL 11倍频输出

0010:PLL 4倍频输出
  1010:PLL 12倍频输出

0011:PLL 5倍频输出
  1011:PLL 13倍频输出

0100:PLL 6倍频输出
  1100:PLL 14倍频输出

0101:PLL 7倍频输出
  1101:PLL 15倍频输出

0110:PLL 8倍频输出
  1110:PLL 16倍频输出

0111:PLL 9倍频输出
  1111:PLL 16倍频输出

*/



RCC->CFGR |= 2<<18;

RCC->CFGR |= 1<<16;

RCC->CR |= 1<<24;


while(!(RCC->CR>>25));


RCC->CFGR |= 1<<1;  

   
while(sws != 0x2)


{

sws = RCC->CFGR>>2;


sws &= 0x3;


}
       其中PLL的输入时钟配置由 RCC->CR |=0x00010000 完成,将RCC-CR寄存器第16位置1,选择外部晶振时钟输入;外部晶振分频则由RCC-CFGR 的第17位决定,默认状态为0,不分频,1为2分频;选择PLL倍频时钟源 RCC->CFGR |=1<<16 ,选择外部晶振为时钟源;配置PLL倍频数 RCC->CFGR |=2<<18 ,得到4倍频 ,选择系统时钟 RCC--CFGR | 1>>1 选择PLL为系统时钟。若是对GPIO操作可继续选择对APB2进行分频。
     上面的程序假设外部晶振8M,经过4倍频得到32M的主频,想要得到其他频率的主频,修改倍频倍数就可以了。
继承事业,薪火相传
返回列表