STM32CubeMX学习笔记2——RTC实时时钟

1.新建工程

STM32CubeMX学习笔记2——RTC实时时钟_第1张图片

 2.选择外部晶振(LSE也选成外部晶振)

    RCC->Crystal/Ceramic Resonator

STM32CubeMX学习笔记2——RTC实时时钟_第2张图片

 3.选择烧录方式

    SYS->Serial Wire

STM32CubeMX学习笔记2——RTC实时时钟_第3张图片

 4.选择串口通信方式

   USART1->Asynchronous

STM32CubeMX学习笔记2——RTC实时时钟_第4张图片

 5.编辑实时时钟

STM32CubeMX学习笔记2——RTC实时时钟_第5张图片

 STM32CubeMX学习笔记2——RTC实时时钟_第6张图片

 6.编辑时钟树

STM32CubeMX学习笔记2——RTC实时时钟_第7张图片

 

 7.命名工程、选择编译器并点击生成代码

STM32CubeMX学习笔记2——RTC实时时钟_第8张图片

 8.先编写一个串口测试代码

   在usart.c中输入如下代码,注意代码写的位置

#include "stdio.h"

#ifdef __GNUC__
#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
#define PUTCHAR_PROTOTYPE int fputc(int ch,FILE *f)
#endif
PUTCHAR_PROTOTYPE
{
  while((USART1->SR & 0x40) == 0);
  USART1->DR = (uint8_t) ch;
  return ch;
}

STM32CubeMX学习笔记2——RTC实时时钟_第9张图片

加入头文件

STM32CubeMX学习笔记2——RTC实时时钟_第10张图片

 在main.c中写测试代码

 

 运行结果如下

STM32CubeMX学习笔记2——RTC实时时钟_第11张图片

 9.魔术棒调试(不知道你们的keil5是不是这样的,我的keil必须要如下设置才能烧入代码)

STM32CubeMX学习笔记2——RTC实时时钟_第12张图片

 STM32CubeMX学习笔记2——RTC实时时钟_第13张图片

 STM32CubeMX学习笔记2——RTC实时时钟_第14张图片

 STM32CubeMX学习笔记2——RTC实时时钟_第15张图片

 STM32CubeMX学习笔记2——RTC实时时钟_第16张图片

10.经过上面的串口过程,没问题的话就可以写实时时钟的代码了

 

RTC_TimeTypeDef RtcTime;//RTC的时间

STM32CubeMX学习笔记2——RTC实时时钟_第17张图片

 

 HAL_RTC_GetTime(&hrtc,&RtcTime,RTC_FORMAT_BIN);//获取时间

  printf("%2d:%2d:%2d\t",RtcTime.Hours,RtcTime.Minutes,RtcTime.Seconds);

  HAL_Delay(1000);

STM32CubeMX学习笔记2——RTC实时时钟_第18张图片

 结果可以看到的确时间出来了,但并没有变化,接下来我们试试加入日期STM32CubeMX学习笔记2——RTC实时时钟_第19张图片

 11.加入日期

RTC_DateTypeDef RtcData;//RTC日期

STM32CubeMX学习笔记2——RTC实时时钟_第20张图片

 

 HAL_RTC_GetDate(&hrtc,&RtcData,RTC_FORMAT_BIN);//获取日期

STM32CubeMX学习笔记2——RTC实时时钟_第21张图片

 STM32CubeMX学习笔记2——RTC实时时钟_第22张图片

加入日期后,时间跑起来了

12. 修改一下代码

HAL_RTC_GetTime(&hrtc,&RtcTime,RTC_FORMAT_BIN);//获取时间
  HAL_RTC_GetDate(&hrtc,&RtcData,RTC_FORMAT_BIN);//获取日期
 
  printf("time:%2d:%2d:%2d\t",RtcTime.Hours,RtcTime.Minutes,RtcTime.Seconds);
  printf("data:%4d.%2d.%2d",2000+RtcData.Year,RtcData.Month,RtcData.Date);
  HAL_Delay(1000);

STM32CubeMX学习笔记2——RTC实时时钟_第23张图片

STM32CubeMX学习笔记2——RTC实时时钟_第24张图片

 要想复位不影响实时时钟,把rtc.c里的这段代码注释掉就可以了STM32CubeMX学习笔记2——RTC实时时钟_第25张图片

 

你可能感兴趣的:(STM32CubeMX学习笔记,stm32,单片机,arm)