STM32F030K6外部晶振不工作,查不出原因

2019-07-14 16:58发布

void STM32_Clock_Init(uint8_t PLL)
{
            uint8_t temp=0;   
            MYRCC_DeInit();                     复位并配置向量表
              RCC->CR|=0x00010000;              选用外部晶振
            while(!(RCC->CR &=0X00020000));     等待外部时钟就绪
            RCC->CFGR=0X00000400;            
            PLL-=2;                        
            RCC->CFGR|=PLL<<18;                 倍频到48MHZ        
            RCC->CFGR|=1<<16;                   PLLSRC ON
            FLASH->ACR|=0x32;                     
            RCC->CR|=0x01000000;                PLLON(Bit24)   
            while(!(RCC->CR &=0X02000000));     等待 PLLPLLPLL锁
            RCC->CFGR|=0x00000002;              PLL作为系统时钟
            while(temp!=0x02)                   等待 PLLPLLPLL作为系统时钟设置成功
            {   
                       temp=RCC->CFGR>>2;         
                       temp&=0x03;                 
            }                 
           RCC->APB2ENR|=1<<0;                   使能SYSCFG时钟
                           
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
18条回答
TOPCB
2019-07-17 04:49
现重贴MYRCC_DeInit函数,我把配置向量表屏蔽了,见下
void MYRCC_DeInit(void)
{       
        RCC->APB1RSTR = 0x00000000;//复位结束                         
        RCC->APB2RSTR = 0x00000000;
          
          RCC->AHBENR = 0x00000014;  //睡眠模式闪存和SRAM时钟使能.其他关闭.          
          RCC->APB2ENR = 0x00000000; //外设时钟关闭.                          
          RCC->APB1ENR = 0x00000000;   
        RCC->CR |= 0x00000001;     //使能内部高速时钟HSION                                                                                                                                  
        RCC->CFGR &= 0xF8FF0000;   //复位SW[1:0],HPRE[3:0],PPRE1[2:0],PPRE2[2:0],ADCPRE[1:0],MCO[2:0]                                         
        RCC->CR &= 0xFEF6FFFF;     //复位HSEON,CSSON,PLLON
        RCC->CR &= 0xFFFBFFFF;     //复位HSEBYP                     
        RCC->CFGR &= 0xFF80FFFF;   //复位PLLSRC, PLLXTPRE, PLLMUL[3:0] and USBPRE
        RCC->CIR = 0x00000000;     //关闭所有中断                 
        //配置向量表       
/*                          
#ifdef  VECT_TAB_RAM
        MY_NVIC_SetVectorTable(0x20000000, 0x0);
#else   
        MY_NVIC_SetVectorTable(0x08000000,0x0);
#endif*/
}

一周热门 更多>