初级会员

- 积分
- 102
- 金钱
- 102
- 注册时间
- 2015-4-18
- 在线时间
- 8 小时
|
5金钱
时钟寄存器复位源代码如下:
void MYRCC_DeInit(void)
{
RCC->APB1RSTR=0x00000000; /*复位结束*/
RCC->APB2RSTR=0x00000000;
RCC->AHBENR=0x00000014; /*睡眠模式闪存和SRAM时钟使能,其他关闭*/
RCC->APB2ENR=0x00000000; /*外设时钟关闭*/
RCC->APB1ENR=0x00000000;
RCC->CR|=0x00000001; /*使能内部高速时钟HISON*/
RCC->CFGR&=0xF8FF0000; /*复位SW[1:0],HPRE[3:0],PPRE1[2:0]*/
/*PPRE2[2:0],ADCPRE[1:0],MCO[2:0]*/
RCC->CR&=0xFFF6FFFF; /*复位HESON,CSSON,PLLON*/
RCC->CR&=0xFFFBFFFF; /*复位HSEBYP*/
RCC->CFGR&=0xFF80FFFF; /*复位PLLSRC,PLLXTPRE,PLLMUL[3:0]*/
/*和USBPRE */
RCC->CIR=0x00000000; /*关闭所有中断*/
}
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;APB1=DIV1;AHB=DIV*/
PLL-=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;
}
}
有什么问题?
|
最佳答案
查看完整内容[请看2#楼]
RCC->CR&=0xFFF6FFFF; /*复位HESON,CSSON,PLLON*/
你这里面没有复位 LLON
|