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

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

[复制链接]
huangjiayin 提问时间:2014-11-13 14:53 /
阅读主题, 点击返回1楼
收藏 评论25 发布时间:2014-11-13 14:53
25个回答
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时钟  
                              
}
无限幻想 回答时间:2014-11-16 11:12:26
是不是晶振坏的,换个晶振试试
小贾-370388 回答时间:2014-11-17 15:33:08
你先接一个有源晶振试一下,看看能工作不,如果能工作,可能就是你的外围电路有问题了电容大小 或者是走线方式
Eagleson 回答时间:2014-11-19 08:48:41
晶振不工作 换一个试试,程序里面需要做好相应的外部晶振配置选择,keil软件里面也是
huangjiayin 回答时间:2014-11-19 17:24:10
多谢各位,是软件问题,下面是我从网上找来的,现系统正常了,没有用到原子的void Stm32_Clock_Init(uint8_t PLL)函数,而用到下面的:
     while((RCC->CR&(1<<1))<=1)       //HSIRDY: HSI clock ready flag
      {
           RCC->CR|= 0X00000001;       //Bit 0 HSION: HSI clock enable
      }
      while((RCC->CR&(1<<25))<=1)
      {
           RCC->CR |=0<<24;
      }
      while((RCC->CR&(1<<25))!=(1<<25))
      {
          //学入改变PLL CF的程序
          RCC->CFGR|=0X0028059A;          // 0000 0000  0010 1000     0000 0101  1001 1010  
          RCC->CR |=1<<24;
      }
      //Bits 16:15 PLLSRC[1:0]: PLL input clock source   11: HSI48/PREDIV selected as PLL input clock
      RCC -> APB2RSTR|=0X00000001;
      RCC -> AHBENR |= 0x00080000;//Bit 19 IOPCEN: I/O port C clock enable
      //Bit 19 IOPCRST: I/O port C reset}^
atlas-389767 回答时间:2014-11-26 13:20:57
huangjiayin 发表于 2014-11-13 15:47
我初学STM32,看700多页参考手册头都大了.

700页并不算多。。
jason_shi 回答时间:2015-9-2 14:23:49
huangjiayin 发表于 2014-11-19 17:24
多谢各位,是软件问题,下面是我从网上找来的,现系统正常了,没有用到原子的void Stm32_Clock_Init(uint8_t  ...

我也遇到了stm32晶振不起振的情况,重新焊接了一块板子仍是这样的问题。执行 RCC_HSEConfig(RCC_HSE_ON);之后仿真器观察寄存器hserdy位一直不能置1,示波器观察osc out输出持续为高电平而没有振荡波
12

所属标签

相似问题

官网相关资源

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