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

stm32L152芯片使用RTC制作万年历

[复制链接]
Imody 提问时间:2017-7-5 19:49 /
大家好,小弟在这里有个疑问,看了正点原子FI的RTC实时时钟试验后,想自己写一个STM32L152的实时时钟(万年历),但不知道如何配置,网上的资源大都是用Cube来写的,但小弟我想不用Cube来写。求大神们指点一下。
收藏 1 评论25 发布时间:2017-7-5 19:49

举报

25个回答
Imody 回答时间:2017-7-5 19:52:23
希望能得到大神的指点,我QQ是1253414972
zhao.zhao 回答时间:2017-7-6 08:56:30
直接读出RTC内的秒数,然后就一样了
回答时间:2017-7-6 09:31:26
stm32L152可以直接设置日期、时间、星期。设置以后会自动进行更新。
Imody 回答时间:2017-7-6 12:49:45
zhao.zhao 发表于 2017-7-6 08:56
直接读出RTC内的秒数,然后就一样了

在STM32L152中 好像没有秒中断函数的吧,看了好久都没找到,只有图片里面的这些函数。还有清除中断位函数中的秒中断和溢出中断函数也没找到
微信截图_20170706124554.png
TIM截图20170706124817.png
Imody 回答时间:2017-7-6 12:52:34
安 发表于 2017-7-6 09:31
stm32L152可以直接设置日期、时间、星期。设置以后会自动进行更新。

版主。在L152板子上配置的时候时钟分频的配置函数跟F1的板子好像不一样,但没找到具体是什么函数
zhao.zhao 回答时间:2017-7-6 13:25:34
使用HAL库,也不用动什么脑筋,很好使
回答时间:2017-7-6 13:46:21
都差不多,L152系列的例程里面都有了。如下代码:
  1. RTC_InitTypeDef RTC_InitStructure;
  2.   RTC_TimeTypeDef RTC_TimeStruct;
  3.         RTC_DateTypeDef RTC_DateStruct;
  4.         uint32_t t;
  5.         bool scc = FALSE;
  6.   
  7.   /* Enable the PWR clock */
  8.   RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);

  9.   /* Allow access to RTC */
  10.   PWR_RTCAccessCmd(ENABLE);

  11.   /* Reset RTC Domain */
  12.   RCC_RTCResetCmd(ENABLE);
  13.   RCC_RTCResetCmd(DISABLE);

  14.         /* Enable the LSE OSC */
  15.   RCC_LSEConfig(RCC_LSE_ON);
  16.         t = Fun_GetTicks();
  17.   /* Wait till LSE is ready */  
  18.   while(Fun_GetTicks()-t<2000)
  19.   {
  20.                 if(RCC_GetFlagStatus(RCC_FLAG_LSERDY) == SET)
  21.                 {
  22.                         /* Select the RTC Clock Source */
  23.                         RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE);
  24.                         scc = TRUE;
  25.                         printf("LSE OK\n");
  26.                         break;
  27.                 }
  28.   }
  29.         if(scc == FALSE)
  30.         {
  31.                 /* Enable the LSI OSC */
  32.                 RCC_LSICmd(ENABLE);
  33.                 t = Fun_GetTicks();
  34.                 /* Wait till LSI is ready */  
  35.                 while(Fun_GetTicks()-t<2000)
  36.                 {
  37.                         if(RCC_GetFlagStatus(RCC_FLAG_LSIRDY) == SET)
  38.                         {                       
  39.                                 /* Select the RTC Clock Source */
  40.                                 RCC_RTCCLKConfig(RCC_RTCCLKSource_LSI);
  41.                                 scc = TRUE;
  42.                                 printf("LSI OK\n");
  43.                                 break;
  44.                         }
  45.                 }
  46.         }
  47.        
  48.   /* Enable the RTC Clock */
  49.   RCC_RTCCLKCmd(ENABLE);
  50.        
  51.   /* Configure the RTC data register and RTC prescaler */
  52.   RTC_InitStructure.RTC_AsynchPrediv = 0x7F;
  53.   RTC_InitStructure.RTC_SynchPrediv  = 0xFF;
  54.   RTC_InitStructure.RTC_HourFormat   = RTC_HourFormat_24;
  55.   RTC_Init(&RTC_InitStructure);
  56.        
  57.   /* Set the time to 00h 00mn 00s AM */
  58.   RTC_TimeStruct.RTC_H12     = RTC_H12_AM;
  59.   RTC_TimeStruct.RTC_Hours   = hh;
  60.   RTC_TimeStruct.RTC_Minutes = mm;
  61.   RTC_TimeStruct.RTC_Seconds = ss;
  62.   RTC_SetTime(RTC_Format_BIN, &RTC_TimeStruct);       
  63.        
  64.   /* Set the date */
  65.   RTC_DateStruct.RTC_WeekDay = RTC_Weekday_Monday;
  66.         RTC_DateStruct.RTC_Year    = year;
  67.         RTC_DateStruct.RTC_Month   = m;
  68.         RTC_DateStruct.RTC_Date    = day;
  69.   RTC_SetDate(RTC_Format_BIN, &RTC_DateStruct);

  70.        
  71.   /* Wait for RTC APB registers synchronisation */
  72.   RTC_WaitForSynchro();
复制代码


Imody 回答时间:2017-7-6 14:05:34
zhao.zhao 发表于 2017-7-6 13:25
使用HAL库,也不用动什么脑筋,很好使

恩恩。是的。直接用stm32cube来配置的话很容易就弄好了。但主要是想不用cube然后自己弄一个写一个万年历的。谢谢提醒啦
Imody 回答时间:2017-7-6 14:23:42
安 发表于 2017-7-6 13:46
都差不多,L152系列的例程里面都有了。如下代码:

版主,我想问下时钟分频那里为什么是0X7F  0XFF。查了一下是同步的跟异步的,到时候用的是32.768K的外部晶振吧,原子是直接用的这个函数RTC_SetPrescaler()。那为什么要设置同步跟异步的那两个数呢。 L系列开发板没有秒中断函数,我查了一下用时间戳中断函数好像也行的,那我该怎么配置呢
123下一页

所属标签

相似问题

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