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条回答
60user54
1楼-- · 2019-07-16 16:26
TOPCB 发表于 2018-10-12 17:59
烧写程序成功,用J-LINK仿真器设置断点,连第1条指令不执行,这进一步说明晶振没起振了

这种情况有可能是工程(软件部份,IDE处理时的问题)复制代码重新建立一个工程试,我遇到过这种情况,但比较少一般,我在使用5.12版本做STM32F103时遇到过仿真不动的情况
ji5687
2楼-- · 2019-07-16 16:38
TOPCB 发表于 2018-10-12 17:47
多谢3位的回答,我是操作寄存器的。现逻辑分析仪测出OSC-IN和OSC-OUT没波形,电压为零

我觉得还是使用示波器看吧。逻辑分析仪未必能够看到峰峰值较小的正弦波。
TOPCB
3楼-- · 2019-07-16 21:22
 精彩回答 2  元偷偷看……
TOPCB
4楼-- · 2019-07-16 23:16
我的程序内容很少,如下:
int main(void)  
{  
         Stm32_Clock_Init(6);            
         while(1)  
         {  
            
         }  
}
TOPCB
5楼-- · 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*/
}
TOPCB
6楼-- · 2019-07-17 06:16
duanks,我对库函数很陌生,现也没有现成的STM32F030K6函函数例子来测试

一周热门 更多>