你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

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

[复制链接]
huangjiayin 提问时间:2014-11-13 14:53 /
阅读主题, 点击返回1楼
收藏 评论25 发布时间:2014-11-13 14:53
25个回答
huangjiayin 回答时间:2014-11-13 17:45:19
换了另一块板,测试结过还是一样,是不是哪里设置出了问题?
duanks 回答时间:2014-11-13 18:21:38
为何非要用寄存器,改库函数试试,不行就换晶振,以前焊电路板时就把晶振烫坏过一次
Veiko 回答时间:2014-11-13 21:18:37
huangjiayin 发表于 2014-11-13 15:40
多谢3位的回答,我是操作寄存器的。现逻辑分析仪测出OSC-IN和OSC-OUT没波形,电压为零 ...

仔细阅读一下时钟部份的资料,看看有没有什么关键配置没有打开,同时更换晶振和起振电容(一般除了容值相差很大的情况才会不起振),检测电路连接
Veiko 回答时间:2014-11-13 21:20:34
huangjiayin 发表于 2014-11-13 15:44
烧写程序成功,用J-LINK仿真器设置断点,连第1条指令不执行,这进一步说明晶振没起振了
...

这种情况有可能是工程(软件部份,IDE处理时的问题)复制代码重新建立一个工程试,我遇到过这种情况,但比较少一般,我在使用5.12版本做STM32F103时遇到过仿真不动的情况
arm8686 回答时间:2014-11-14 11:39:53
huangjiayin 发表于 2014-11-13 15:40
多谢3位的回答,我是操作寄存器的。现逻辑分析仪测出OSC-IN和OSC-OUT没波形,电压为零 ...

我觉得还是使用示波器看吧。逻辑分析仪未必能够看到峰峰值较小的正弦波。
huangjiayin 回答时间:2014-11-14 17:34:38
多谢各位的回答,我查了原子网上的资料,说是那2个匹配电容太大,去掉试一下,结果是晶振2脚还是高电平(逻辑分析仪测出),但数字万用表是显示0.也重建了工程,结过还是一样.我是抄原子的,只是配置向量表那几条语句屏蔽了,不会因为这里吧?---因为刚接触STM32,不熟它。打开配置向量表那几条语句会报警的,配置向量表那几条语句内容如下:
#ifdef  VECT_TAB_RAM
                  MY_NVIC_SetVectorTable(0x20000000, 0x0);
#else   
                  MY_NVIC_SetVectorTable(0x08000000,0x0);
#endif*
huangjiayin 回答时间:2014-11-14 17:44:39
我的程序内容很少,如下:
int main(void)  
{  
         Stm32_Clock_Init(6);            
         while(1)  
         {  
            
         }  
}
huangjiayin 回答时间:2014-11-14 17:54:56
现重贴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*/
}

huangjiayin 回答时间:2014-11-14 17:57:15
duanks,我对库函数很陌生,现也没有现成的STM32F030K6函函数例子来测试
huangjiayin 回答时间:2014-11-14 17:58:18
现跳到while(!(RCC->CR>>17)); 这条指令就不往下走了。

void Stm32_Clock_Init(uint8_t PLL)  
{   
            uint8_t temp=0;     
            MYRCC_DeInit();                               复位并配置向量表  
             RCC->CR|=0x00010000;                   选用外部晶振  
            while(!(RCC->CR>>17));                   等待外部时钟就绪  
            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时钟  
                              
}

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版