欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

stm32 L0 +433(sx1212模块)低功耗

程序员文章站 2022-06-15 21:36:25
参考链接:https://blog.csdn.net/nyp_1988/article/details/100523701 stop低功耗模式stm32单片机的3种模式https://www.sohu.com/a/338305750_467791mcu io 配置参考https://blog.csdn.net/jiangjunjie_2005/article/details/50628279https://blog.csdn.net/u013184273/article/detai......

1. 为什么选择stop模式?

. 停止模式唤醒是从进入睡眠的那个地方开始的,或直接进入中断,SRAM和寄存器内容被保留

standby 待机模式 ,唤醒后会复位,相当于重新上电

2. stm32 的gpio复位后是什么状态?

stm32单片机是一个低功耗的处理器,当复位以后,gpio默认是高阻状态,也就是浮空输入

 

参考链接: https://blog.csdn.net/nyp_1988/article/details/100523701  stop低功耗模式

stm32单片机的3种模式  https://www.sohu.com/a/338305750_467791

 mcu  io 配置参考 https://blog.csdn.net/jiangjunjie_2005/article/details/50628279

https://blog.csdn.net/u013184273/article/details/80051263  这个文章 只参考了  当有下拉电阻的时候,改为输出下拉低电平

MCU输入:输入,浮动

Input floating, no external interrupt

 

MCU输出:输入,上拉

Input pull-up, no external interrupt

 

3.3V引脚:输出,上拉,高电平

Output push-pull, high level, 2MHz

 

未接引脚:输出,上拉,低电平

Output push-pull, low level,2MHz

 

MCU电源与地引脚

/

 

void SystemPower_Config(void)
{
  GPIO_InitTypeDef GPIO_InitStructure = {0};

  /* Enable Power Control clock */
  __HAL_RCC_PWR_CLK_ENABLE();

  /* Enable Ultra low power mode */
  HAL_PWREx_EnableUltraLowPower();

  /* Enable the fast wake up from Ultra low power mode */
  HAL_PWREx_EnableFastWakeUp();

    #if   1
    //spi     
    HAL_SPI_DeInit(&SpiHandle);   必须这样 先deinit设备
    __HAL_RCC_SPI1_CLK_DISABLE();    
    //uart
    HAL_UART_DeInit(&UartHandle);
    __HAL_RCC_USART2_CLK_DISABLE() ;
    //dma1      
        HAL_DMA_DeInit(&hdma_adc);
    __HAL_RCC_DMA1_CLK_DISABLE();
    //adc     
            HAL_ADC_DeInit(&hadc);
    __HAL_RCC_ADC1_CLK_DISABLE();

    #endif
    //pb -----------
  GPIO_InitStructure.Pin = GPIO_PIN_0;         //floating  浮空
  GPIO_InitStructure.Mode = GPIO_MODE_OUTPUT_PP; 
  GPIO_InitStructure.Pull = GPIO_PULLDOWN;
    HAL_GPIO_Init(GPIOB, &GPIO_InitStructure);
    HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,GPIO_PIN_RESET); 
    
    
  GPIO_InitStructure.Pin = GPIO_PIN_1 |GPIO_PIN_9;         // has pulldown  resistance
  GPIO_InitStructure.Mode = GPIO_MODE_OUTPUT_PP;  //GPIO_MODE_ANALOG;
  GPIO_InitStructure.Pull = GPIO_PULLDOWN;
    HAL_GPIO_Init(GPIOB, &GPIO_InitStructure);
    HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,GPIO_PIN_RESET); 
    HAL_GPIO_WritePin(GPIOB,GPIO_PIN_9,GPIO_PIN_RESET); 
    
   GPIO_InitStructure.Pin = GPIO_PIN_3 |GPIO_PIN_5 ;         //mcu  output
  GPIO_InitStructure.Mode = GPIO_MODE_INPUT;  
  GPIO_InitStructure.Pull = GPIO_PULLUP;
    HAL_GPIO_Init(GPIOB, &GPIO_InitStructure);
    
   GPIO_InitStructure.Pin = GPIO_PIN_4 |GPIO_PIN_6 |GPIO_PIN_7;         //mcu input
  GPIO_InitStructure.Mode = GPIO_MODE_ANALOG;  
  GPIO_InitStructure.Pull = GPIO_NOPULL;
    HAL_GPIO_Init(GPIOB, &GPIO_InitStructure);

    
 
    //pc -------------
  GPIO_InitStructure.Pin = GPIO_PIN_All;
  GPIO_InitStructure.Mode = GPIO_MODE_ANALOG;  
  GPIO_InitStructure.Pull = GPIO_NOPULL;
    HAL_GPIO_Init(GPIOC, &GPIO_InitStructure);    

  /* Disable GPIOs clock */
  __HAL_RCC_GPIOA_CLK_DISABLE();
  __HAL_RCC_GPIOB_CLK_DISABLE();
  __HAL_RCC_GPIOC_CLK_DISABLE();
          
}

rtc 时钟

https://bbs.21ic.com/icview-2825108-1-8.html  rtc 时钟设置 
37k的来历

在进行低功耗设计时,使用外部中断唤醒CPU是一个非常有用而且有效的方法,但是在某些特定的应用中,我们还希望
CPU能够自己醒来去完成一些特定的操作,这就需要用到RTC模块,因为RTC模块在CPU进入低功耗状态后,是还可以工
作的。使用RTC,也需要得到一个最小时间间隔,一般我们将其设置为1秒,本文介绍如何设置RTC的这个最小时间间
隔。

    先来看一下时钟图,RTC可以采用两个时钟模块,1个是外部的低频晶振,一般我们选择32.768KHz,这个比较精
准;另一个则是内部的RC振荡器,是37KHz。

    STM32L0的预分频器被分成两个预分频器。一个7位的异步预分频器(AsynchPrediv),一个13位同步预分频器
(SynchPrediv)。

    RTC频率的计算公式:RTCclk=(LSE或LSI)/[(AsynchPrediv+1)*(SynchPrediv+1)]。

    给出2组经典值:    LSE    RTCclk = 32768/(127+1)*(255+1)=1Hz    AsynchPrediv = 127    
SynchPrediv = 255

                                  LSI     RTCclk = 37000/(124+1)*(295+1)=1Hz    AsynchPrediv = 124
   SynchPrediv = 295

 

 

本文地址:https://blog.csdn.net/weixin_29898767/article/details/109643995

相关标签: stm32