打印
[STM32L1]

STM32L152VBT6进入低功耗问题

[复制链接]
1028|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
1057265189|  楼主 | 2017-4-19 10:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
STM32L152VBT6不接8M晶振可以正常工作吗?我们现在不接8M晶振时出现2个问题,1:有时会启动不起来,2
:影响低功耗,发生中断时退不出低功耗。还有不接8M晶振时引脚需要怎样处理
沙发
MOn51| | 2017-4-23 08:58 | 只看该作者
我是焊了8MHz 的晶振,但用内部的RC。采用MSI。
//*************************************************************************************
//#define HSE_8MHZ_EN                                        1                        //=0 使用内部时钟HSI;=1使用外部时钟,=2 MSI使用
#define USE_PLL                                                                0                        //=0 不倍频;=1 倍频!!
//*************************************************************************
void SET_RRC(void){

        /* Enable Prefetch Buffer */
        FLASH_PrefetchBufferCmd(DISABLE);//DISABLE
        /* Flash 2 wait state */
        FLASH_SetLatency(FLASH_Latency_0);
  /* Disable 64-bit access */
  FLASH_ReadAccess64Cmd(DISABLE);
        /* GPIOA clock enable */
        //RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);
        //RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB, ENABLE);
        //RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOD, ENABLE);
        /* DAC Periph clock enable */
        //RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC, ENABLE);
  /* Enable TIM2 clock */
        //RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
  //RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
  /* System resumed from STANDBY mode */
        /* Clear StandBy flag */
        //RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR,ENABLE);
        //PWR_ClearFlag(PWR_FLAG_SB);
        //RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2  , ENABLE);// RCC_APB2Periph_USART1

}
//******************************************************************
//设置震荡源HsE  HSI   
//*******************************************************************
void Set_HSI_HSE(void){
        /* Enable the HSI oscillator */
        //RCC_HSICmd(ENABLE);    //必须打开,ADC使用的!
  /* Check that HSI oscillator is ready */
  //while(RCC_GetFlagStatus(RCC_FLAG_HSIRDY) == RESET);
        if(HSE_8MHZ_EN==0){
                                RCC_HSEConfig(RCC_HSE_OFF); //关闭外部晶振
                                RCC_HSICmd(ENABLE);    //,ADC使用的!
                                if(USE_PLL==1){
                                        RCC_PLLConfig(RCC_PLLSource_HSI,RCC_PLLMul_3,RCC_PLLDiv_4);//16*3=48;48/3=16mhz
                                        RCC_PLLCmd(ENABLE);
                                        RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
                                }else{
                                        RCC_SYSCLKConfig(RCC_SYSCLKSource_HSI);// 使用PLL频率
                                }
                                /********设置分频 ****************/
                                RCC_HCLKConfig(RCC_SYSCLK_Div1);        //6MHZ
                                RCC_PCLK1Config(RCC_HCLK_Div1);
                                RCC_PCLK2Config(RCC_HCLK_Div1);
                                if (USE_PLL==0){
                                        while(RCC_GetFlagStatus(RCC_FLAG_HSIRDY ) == RESET);//等待稳定!RCC_SYSCLKConfig RCC_FLAG_PLLRDY
                                }else{
                                        while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY ) == RESET);//等待稳定!
                                }
                                RCC_MSICmd(DISABLE);
        }
        if(HSE_8MHZ_EN==1){
                                RCC_HSEConfig(RCC_HSE_ON);        //打开外部晶振
                                RCC_PLLCmd(DISABLE);
                                if(USE_PLL==1) RCC_PLLConfig(RCC_PLLSource_HSE,RCC_PLLMul_3,RCC_PLLDiv_3);//8*3/3  8mhz
                                /********设置分频 ****************/
                                //RCC_HCLKConfig(RCC_SYSCLK_Div1);        //4MHZ /1 =4M  直接使用4M晶振!!
                                RCC_HCLKConfig(RCC_SYSCLK_Div2);        //8MHZ/2=4MHz    2016-3-10 改成4  工作频率是8/4=2M
                                RCC_PCLK1Config(RCC_HCLK_Div1);
                                RCC_PCLK2Config(RCC_HCLK_Div1);
                                //------------------------------------------------------------------
                                if(USE_PLL==1){
                                        RCC_PLLCmd(ENABLE);
                                        RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
                                        while(RCC_WaitForHSEStartUp()==ERROR);
                                        while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY ) == RESET);//等待稳定!
                                }else{
                                        RCC_SYSCLKConfig(RCC_SYSCLKSource_HSE);
                                        while(RCC_WaitForHSEStartUp()==ERROR);
                                        while(RCC_GetFlagStatus(RCC_FLAG_HSERDY ) == RESET);//等待稳定!RCC_SYSCLKConfig
                                }
                                //RCC_HSEConfig(RCC_HSE_ON);        //打开外部晶振
                                RCC_HSICmd(DISABLE);    //ADC使用的!
                                RCC_MSICmd(DISABLE);
        }
        if(HSE_8MHZ_EN==2){
                                RCC_HSEConfig(RCC_HSE_OFF); //关闭外部晶振
                                RCC_MSICmd(ENABLE);
                                RCC_MSIRangeConfig(RCC_MSIRange_6);// 65K  2--ok
                                RCC_SYSCLKConfig(RCC_SYSCLKSource_MSI);
                                /********设置分频 ****************/
                                RCC_HCLKConfig(RCC_SYSCLK_Div1);        //
                                RCC_PCLK1Config(RCC_HCLK_Div1);
                                RCC_PCLK2Config(RCC_HCLK_Div1);
                                while(RCC_GetFlagStatus(RCC_FLAG_MSIRDY) == RESET);//等待稳定!RCC_SYSCLKConfig
                                RCC_HSICmd(DISABLE);    //,ADC使用的!
        }
        //**********************************************************************************
        SET_RRC();
//******************************************************************************************
}

       

使用特权

评论回复
板凳
1057265189|  楼主 | 2017-4-24 09:17 | 只看该作者
经过反复测试,只有加了8M晶振才可以进入低功耗,目前只能这样了,有不加晶振可以进入低功耗的方法吗

使用特权

评论回复
地板
1057265189|  楼主 | 2017-4-24 09:17 | 只看该作者
MOn51 发表于 2017-4-23 08:58
我是焊了8MHz 的晶振,但用内部的RC。采用MSI。
//***************************************************** ...

经过反复测试,只有加了8M晶振才可以进入低功耗,目前只能这样了,有不加晶振可以进入低功耗的方法吗

使用特权

评论回复
5
MOn51| | 2017-4-24 09:23 | 只看该作者
要进入低功耗前,肯定要先切换到RC,然后在禁止HSE。外部焊了8MHZ的晶振,并不等于就是启动了HSE.

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

33

主题

115

帖子

2

粉丝