STM32 while(temp!=0x02) //等待 PLL作为系统时钟设置成功 { temp=RCC-->CFGR>>2; temp&=0x03;
时间: 2023-07-30 15:11:41 浏览: 99
这段代码的作用是等待系统时钟源被设置为 PLL。
在STM32中,时钟源可以选择内部RC振荡器、外部晶振或PLL。其中,PLL是一种锁相环技术,可以将输入的时钟信号倍频或分频,从而得到高精度的时钟信号。
在这段代码中,首先读取RCC寄存器的CFGR位,该寄存器用于配置系统时钟源。然后将CFGR右移2位,得到PLL作为系统时钟源的配置。最后将其与0x03按位与,得到PLL作为系统时钟源的状态值。
接着,使用一个while循环来等待PLL作为系统时钟源已经配置成功。循环条件为temp!=0x02,即当PLL作为系统时钟源配置成功时,temp的值为0x02。在每次循环中,再次读取CFGR中PLL作为系统时钟源的配置状态,并与0x03按位与,得到当前的状态值。如果当前状态值与0x02相等,则说明PLL作为系统时钟源已经成功配置,退出循环。否则继续等待,直到PLL配置成功。
相关问题
STM32 RCC->CFGR|=0x00000002;//PLL作为系统时钟 while(temp!=0x02) //等待PLL作为系统时钟设置成功 { temp=RCC->CFGR>>2; temp&=0x03; }
这是STM32的代码,主要是设置PLL作为系统时钟,并等待PLL设置成功。具体来说,这段代码将PLL作为系统时钟,并通过循环等待确认PLL设置成功。
首先,`RCC->CFGR` 是RCC寄存器的配置寄存器,用于配置系统时钟。`CFGR|=0x00000002` 表示将PLL作为系统时钟源。
接着,进入一个循环,条件是 `temp!=0x02`。在循环体内,先读取 `RCC->CFGR`,然后将其右移两位(因为PLL的时钟源位于CFGR的位2和位3)。接着,使用位掩码操作将`temp`设置为CFGR中的PLL时钟源位,并检查其是否等于0x02。如果不是,则继续循环等待。如果是,则说明PLL已成功设置为系统时钟源,退出循环。
总的来说,这段代码的作用是确保系统时钟源已经切换到PLL,并等待PLL设置成功。
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个单位(因为是从2开始的,设置0就是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; } }
这是一段 STM32 的初始化代码,它主要的功能是初始化系统时钟。其中,PLL 表示的是锁相环倍频器的倍数,通过设置 PLL 值来调整系统时钟频率。代码中还包括了外部高速时钟使能、等待外部时钟就绪、设置 APB1、APB2 和 AHB 总线的分频系数、等待 PLL 锁定等操作。最后,将 PLL 作为系统时钟并等待 PLL 作为系统时钟设置成功。