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

查看: 3299|回复: 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管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版