huangjiayin 发表于 2014-11-13 14:53:00

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

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时钟
                           
}

xulay 发表于 2014-11-13 15:04:35

死在这里了?:
while(!(RCC->CR &=0X00020000));

l854166013 发表于 2014-11-13 15:06:09

会不会是因为和板子的原因啊,你换块板子测试一下呢

那片清茶 发表于 2014-11-13 15:38:00

死在哪里,把问题描述清楚,不然别人怎么回答你的问题。

huangjiayin 发表于 2014-11-13 15:40:38

多谢3位的回答,我是操作寄存器的。现逻辑分析仪测出OSC-IN和OSC-OUT没波形,电压为零

huangjiayin 发表于 2014-11-13 15:44:06

烧写程序成功,用J-LINK仿真器设置断点,连第1条指令不执行,这进一步说明晶振没起振了

huangjiayin 发表于 2014-11-13 15:47:10

我初学STM32,看700多页参考手册头都大了.

huangjiayin 发表于 2014-11-13 16:08:16

xulay:这句是while(!(RCC->CR &=0X00020000));是对的,判断HSE 振荡器就绪.我改成原子的while(!(RCC->CR>>17));结过还是一样

说不定 发表于 2014-11-13 16:17:32

晶振没波形是硬件问题你去检查晶振电路 电容什么的

huangjiayin 发表于 2014-11-13 16:28:12

外部晶振是8MHZ,那2个起振电容是22PF
页: [1] 2 3
查看完整版本: STM32F030K6外部晶振不工作,查不出原因