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

查看: 3346|回复: 14

[STM32L496] 【NUCLEO-L496ZG评测】基于STM32L496的RTC计时器

[复制链接]

59

主题

1666

回帖

17

蝴蝶豆

论坛元老

最后登录
2020-12-9
发表于 2017-5-12 08:53:33 | 显示全部楼层 |阅读模式
    STM32L496内置了RTC,完成只需为其配置一个合适的显示器即可实现计时功能。本打算为它配置一个TFT显示屏,然而耗费了大段时间也为如愿,甚是感到奇怪。因为就频率来讲L432与它同为80MHZ,在L432上能实现似乎在L496上应该也可以。此外,F769F413等主频也都比它高,且也均能驱动,独独L496却难实现。
随后也测试了以LCD5110OLED屏显示,L496F767F413等均能驱动显示。从节省GPIO口的角度出发,这里就为其配置一个IIC接口的OLED屏来实现RTC计时功能。
经实际测试,使用NUCLEO系列的Arduino接口即可直接实现连接,故使用起来十分方便。
OLED屏与L496的连接关系为:

SCLK  -- PA.5     SDIN  -- PA.6
为达到图1和图2的工作效果,主要涉及的OLED函数是初始化函数、字符显示函数、数值显示函数及字符串显示函数。此外,还需对RTC显示函数加以修改,修改后的程序内容如下:
  1. static void RTC_CalendarShow(void)
  2. {
  3.     RTC_DateTypeDef sdatestructureget;
  4.     RTC_TimeTypeDef stimestructureget;
  5.     uint8_t p;
  6.     /* Get the RTC current Time */
  7.     HAL_RTC_GetTime(&RtcHandle, &stimestructureget, RTC_FORMAT_BIN);
  8.     /* Get the RTC current Date */
  9.     HAL_RTC_GetDate(&RtcHandle, &sdatestructureget, RTC_FORMAT_BIN);
  10.     p=stimestructureget.Seconds;
  11.         OLED_ShowNum(88,2,p,2,16);
  12.         OLED_ShowChar(56,2,':',16);
  13.         p=stimestructureget.Minutes;
  14.         OLED_ShowNum(64,2,p,2,16);
  15.         OLED_ShowChar(80,2,':',16);
  16.     p=stimestructureget.Hours;
  17.         OLED_ShowNum(40,2,p,2,16);
  18.         p=sdatestructureget.Date;
  19.         OLED_ShowNum(88,4,p,2,16);
  20.         OLED_ShowChar(56,4,'-',16);
  21.         p=sdatestructureget.Month;
  22.         OLED_ShowNum(64,4,p,2,16);
  23.         OLED_ShowChar(80,4,'-',16);
  24.     p=sdatestructureget.Year;
  25.         OLED_ShowNum(24,4,2000+p,4,16);
  26.         OLED_ShowString(24,6,"week:",16);
  27.         p=sdatestructureget.WeekDay;
  28.         OLED_ShowNum(64,6,p,2,16);
  29.        
  30. }
复制代码
对应的主函数为:
  1. int main(void)
  2. {

  3.   HAL_Init();
  4.   /* Configure the system clock to 80 MHz */
  5.   SystemClock_Config();
  6.   BSP_LED_Init(LED3);
  7.   __HAL_RTC_RESET_HANDLE_STATE(&RtcHandle);
  8.   RtcHandle.Instance           = RTC;
  9.   RtcHandle.Init.HourFormat     = RTC_HOURFORMAT_12;
  10.   RtcHandle.Init.AsynchPrediv    = RTC_ASYNCH_PREDIV;
  11.   RtcHandle.Init.SynchPrediv     = RTC_SYNCH_PREDIV;
  12.   RtcHandle.Init.OutPut         = RTC_OUTPUT_DISABLE;
  13.   RtcHandle.Init.OutPutPolarity   = RTC_OUTPUT_POLARITY_HIGH;
  14.   RtcHandle.Init.OutPutType     = RTC_OUTPUT_TYPE_OPENDRAIN;

  15.   if(HAL_RTC_Init(&RtcHandle) != HAL_OK)
  16.   {
  17.     /* Initialization Error */
  18.     Error_Handler();
  19.   }

  20.   /*##-2-  Configure RTC Timestamp ############################################*/
  21.   RTC_TimeStampConfig();
  22.   OLED_Init();                         
  23.   OLED_Clear();
  24.   OLED_ShowString(58,0,"RTC",16);       
  25.   OLED_ShowString(18,2,"jinglixixi",16);
  26.   OLED_ShowString(18,4,"2017.5.10",16);
  27.   HAL_Delay(1000);
  28.   HAL_Delay(1000);
  29.   OLED_Clear();
  30.   OLED_ShowString(58,0,"RTC",16);       
  31.   /* Infinite loop */  
  32.   while (1)
  33.   {
  34.         RTC_CalendarShow();
  35.         HAL_Delay(100);
  36.   }
  37. }
复制代码
图片2.png
图1 主界面

图片1.png
图2 工作界面

评分

参与人数 2ST金币 +22 收起 理由
zero99 + 20
MrJiu + 2 赞一个!

查看全部评分

<
回复

使用道具 举报

3

主题

999

回帖

363

蝴蝶豆

版主

最后登录
2020-11-26
发表于 2017-5-12 09:25:51 | 显示全部楼层
支持一个!!!!!!!!!
回复 支持 反对

使用道具 举报

60

主题

2051

回帖

31

蝴蝶豆

版主

最后登录
2020-12-9
发表于 2017-5-12 09:53:42 | 显示全部楼层
感谢分享!!!
回复 支持 反对

使用道具 举报

59

主题

1666

回帖

17

蝴蝶豆

论坛元老

最后登录
2020-12-9
 楼主| 发表于 2017-5-12 10:41:41 | 显示全部楼层
多谢支持!
回复 支持 反对

使用道具 举报

47

主题

3404

回帖

30

蝴蝶豆

版主

最后登录
2020-12-7
发表于 2017-5-12 11:45:30 | 显示全部楼层
支持
回复 支持 反对

使用道具 举报

64

主题

744

回帖

23

蝴蝶豆

实习版主

最后登录
2020-12-8
发表于 2017-5-12 18:30:59 | 显示全部楼层
你这咋接线的啊,小液晶
回复 支持 反对

使用道具 举报

19

主题

1714

回帖

7

蝴蝶豆

论坛元老

最后登录
2020-10-25
发表于 2017-5-13 10:21:12 | 显示全部楼层
如果掉电了,如何把时间调整成正确的?
回复 支持 反对

使用道具 举报

59

主题

1666

回帖

17

蝴蝶豆

论坛元老

最后登录
2020-12-9
 楼主| 发表于 2017-5-15 01:18:33 | 显示全部楼层
五哥1 发表于 2017-5-13 10:21
如果掉电了,如何把时间调整成正确的?

最好是配个2个小按键,1个键用长短按来设置时间太费事。此外,就是像一般RTC模块一样为它配一个纽扣电池做后备电源供电。
回复 支持 反对

使用道具 举报

59

主题

1666

回帖

17

蝴蝶豆

论坛元老

最后登录
2020-12-9
 楼主| 发表于 2017-5-15 01:19:30 | 显示全部楼层
哈佛祖安智 发表于 2017-5-12 18:30
你这咋接线的啊,小液晶

直接插上没连线呀!
回复 支持 反对

使用道具 举报

0

主题

2175

回帖

3

蝴蝶豆

论坛元老

最后登录
2020-12-9
发表于 2017-5-15 07:09:21 | 显示全部楼层
谢谢分享!!!
回复 支持 反对

使用道具 举报

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