[求助] 关于CFGR2设置

tonxim   2012-7-15 16:45 楼主

各位前辈,本人初学STM32,实验室有块板子,上面是stm32f107芯片的,时钟是25M,我根据手册说明,想通过设置寄存器得到72M系统时钟,以下是我的程序:

 

void MYRCC_Init(void)
{
 MYRCC_DeInit();
  
 RCC->CR|=1<<16; //外部高速时钟使能 HSION
 while(!RCC->CR>>17);//等待外部时钟就绪

 

 RCC->CFGR2 |=4<<4;//预分频2进行5分频
 RCC->CFGR2 |=0x0E<<8;//PLL2倍频16倍
 RCC->CR|=1<<26;//PLL2倍频开
 while(!(RCC->CR>>27));//等待PLL2锁定

 

 RCC->CFGR2 |=1<<16;//PLL2作为预分频1的时钟源
 RCC->CFGR2 |=9;//预分频1进行10倍分频
 RCC->CFGR|=1<<16;//预分频11输出作为PLL输入时钟

 

 RCC->CFGR|=7<<18;//PLL1倍频9倍
 RCC->CR|=1<<24;//PLL1倍频开
 while(!(RCC->CR>>25));//等待PLL1锁定
 RCC->CFGR|=2<<1;//选择PLL输出作为系统时钟源 
}

 

具体步骤:

HSE(25MHZ)->PREDIV2(5分频)——5MHZ——>PLL2MUL(16倍频)——80MHZ——>PREDIV1SCR(选择PLL2)——80MHZ——>PREDIV1(10分频)——8MHZ——>PLLSCR(PREDIV1输入)——8MHZ——>PLLMUL(9倍频)——72MHZ——>SW(选择PLL)——SYSCLK(72MHZ).

 

 

但在程序编译的时候出现错误编译不过,错误提示如下:

struct "<unnamed>" has no field "CFGR2"

 

请求前辈指导,感谢!

回复评论 (3)

急~坐等回复,感谢!
点赞  2012-7-15 16:47
以上问题我自己已经解决,程序代码如下,经过测试能够实现功能
                        MYRCC_DeInit();                               
                        RCC->CR|=1<<16;        //外部高速时钟使能 HSION
                        while(!RCC->CR>>17);//等待外部时钟就绪               
                        RCC->CR&=~(1<<26);//PLL2倍频关
                        RCC->CFGR2&=~(0X0F<<4);//预分频2进行5分频
                        RCC->CFGR2|=4<<4;//预分频2进行5分频
                        RCC->CFGR2&=~(0X0F<<8);
                        RCC->CFGR2|=6<<8;//PLL2倍频8倍
                        RCC->CR|=1<<26;//PLL2倍频开
                        while(!(RCC->CR>>27));//等待PLL2锁定               
                        RCC->CR&=~(1<<24);//PLL1倍频关
                        RCC->CFGR2|=1<<16;//PLL2作为预分频1的时钟源
                        RCC->CFGR2|=1<<2;//预分频1进行5倍分频
                        RCC->CFGR|=1<<16;//预分频1输出作为PLL输入时钟
                        RCC->CFGR&=~(0X0F<<18);
                        RCC->CFGR|=7<<18;//PLL1倍频9倍
                        FLASH->ACR|=0x02;   //FLASH 2个延时周期
                        RCC->CR|=1<<24;//PLL1倍频开
                        while(!(RCC->CR>>25));//等待PLL1锁定
                        RCC->CFGR|=1<<1;//PLL作为系统时钟
                        while(!RCC->CFGR>>3);//等待PLL时钟选择就绪
点赞  2012-7-18 16:18
注意头文件使用#include "stm32f10x.h"
点赞  2012-7-18 16:23
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复