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

【STM32C0评测】低功耗时钟

[复制链接]
lugl 发布时间:2025-5-3 21:21

【前言】

前面我使用TM1637作为时间显示,他的休眠电流还是有700微安的,所以还是不是很好做为的时钟来使用,后面想找个LCD断码屏来,但是没有合适的,翻了一下仓库,找到了一个NOKIA5110显示屏。查了一下参数,他的休眠参数与显示的电流是非常小的。想当年诺基来的手机可以充满电用好几个星期的。所以用这款显示屏来制作一个时钟。

【移植驱动】

NOKIA5110的stm32在网上的驱动非常好找,我在http://stm32f4-discovery.com/pcd8544-nokia-33105110-lcd-stm32f429-discovery-library/找到一个现成的驱动。

把他移植到工程中,先配置好接口如下:

CLK PA5
DIN PA7
RST PB3
CE  PA15
DC  PA9

*/

  LCD_setRST(GPIOB, GPIO_PIN_3);  
  LCD_setCE(GPIOA, GPIO_PIN_15);  
  LCD_setDC(GPIOA, GPIO_PIN_9);  
  LCD_setDIN(GPIOA, GPIO_PIN_7);  
  LCD_setCLK(GPIOA, GPIO_PIN_5);  
    LCD_init();

【配置RTC】

我这里使用每一秒RTC唤醒一次:

  /** Enable the Alarm A
  */
  sAlarm.AlarmTime.Hours = 0x0;
  sAlarm.AlarmTime.Minutes = 0x0;
  sAlarm.AlarmTime.Seconds = 0x1;
  sAlarm.AlarmTime.SubSeconds = 0x0;
  sAlarm.AlarmTime.DayLightSaving = RTC_DAYLIGHTSAVING_NONE;
  sAlarm.AlarmTime.StoreOperation = RTC_STOREOPERATION_RESET;
  sAlarm.AlarmMask = RTC_ALARMMASK_ALL;
  sAlarm.AlarmSubSecondMask = RTC_ALARMSUBSECONDMASK_ALL;
  sAlarm.AlarmDateWeekDaySel = RTC_ALARMDATEWEEKDAYSEL_DATE;
  sAlarm.AlarmDateWeekDay = 0x1;
  sAlarm.Alarm = RTC_ALARM_A;
  if (HAL_RTC_SetAlarm_IT(&hrtc, &sAlarm, RTC_FORMAT_BCD) != HAL_OK)
  {
    Error_Handler();
  }

【主程序】

为了实现更低的休眠电流,我设计了一个计数器,如果连继10秒没有动作,就把NOKIA5110显示关闭。当按键按下时,再初始化一下NOKIA5110。

  while (1)
  {
        cnt++;
        if(cnt>10){
            NOKIA5110_CloseDisplay();
            HAL_PWR_EnterSTOPMode(PWR_MAINREGULATOR_ON, PWR_STOPENTRY_WFI);
        }
        else {
            HAL_RTC_GetTime(&hrtc, &sTime, RTC_FORMAT_BIN);
            /* Get the RTC current Date */
            HAL_RTC_GetDate(&hrtc, &sDate, RTC_FORMAT_BIN);
            sprintf(buff,"%02d:%02d:%02d",sTime.Hours,sTime.Minutes,sTime.Seconds);
            LCD_print(buff, 2, 2);
            HAL_PWR_EnterSTOPMode(PWR_MAINREGULATOR_ON, PWR_STOPENTRY_WFI);
        }
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */
}

【实验效果】

显示时间:

c88498e1598c39e5bd082db5a677839.jpg

工作电流:

80fe4e53ad81daec95968b8f3d0a67c.jpg

关闭显示:

27f1280dd78458ba221c4e6898b5ab8.jpg

【总结】

休眠电流为87微安,非常理想了。stm32C0x进和HAL_PWR_EnterSTANDBYMode

由于不能保存RTC的时钟,要不然可以下降到20微安左右。

收藏 评论0 发布时间:2025-5-3 21:21

举报

0个回答

所属标签

ST中文论坛活动

即日起开启活动话题入口,之后的活动统一都放在此处,欢迎大家的加入!


最新内容

相似分享

官网相关资源

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