STM32菜鸟之初始化函数以及延时函数

1、STM32时钟配置初始化函数:

void Stm32_Clock_Init(){
unsigned char temp = 0;   	 //定义一个无符号型的char类型的变量,变量名为temp
MYRCC_DeInit();		//复位并配置向量表,此函数是keil自动写好的,可以不用去管他
RCC->CR |= 0x00010000;	//把stm32的时钟控制寄存器的第16位置1来使能外部时钟(HSE),具体说明见STM32参考手册第85页对RCC_CR寄存器的说明
while(! (RCC->CR>>17));	//判断RCC_CR寄存器的第17位,即判断外部高速时钟是否就绪
RCC->CFGR = 0x00000400;	//通过设置时钟配置寄存器的第10-8为来是APB1的时钟不超过36MHz,以防止当APB1时钟超过36MHz而带来的系统紊乱
PLL-=2;				//将PLL值减2来配置系统的锁相环倍频系数,具体要求见RCC_CFGR寄存器的21-18位。
RCC_CFGR |=(PLL<<18);		//将减去2后的PLL值左移18位后与原RCC_CFGR值进行或运算,即将配置PLL值
RCC_CFGR|=(1<<16);		//将外部时钟作为系统时钟
FLASH_ACR |= 0x32;		//将FLASH延时两个周期 具体参考ST文档PM0042  programming manual《STM32F10XXX Flash Programming》

RCC_CR |=0x01000000;	//使能PLL
while(!(RCC->CR>>25));	//判断使能PLL是否成功
RCC_CFGR |= 0x0000002;//将PLL输出作为系统时钟
while(temp!=0x02)	{	//等待PLL输出作为系统时钟设置成功
	temp=RCC-CFGR>>2;
	temp&=0x03;
	}


}

你可能感兴趣的:(嵌入式,stm32)