各位前辈,本人初学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" 请求前辈指导,感谢!
此帖出自
小平头技术问答
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时钟选择就绪
一周热门 更多>