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

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管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版