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

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扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版