【STM32CubeMX】F103&RTC时钟

前言

  本文记录了我学习STM32CubeMX的过程,方便以后回忆。我们使用的开发板是基于STM32F103C6T6的。本章记录了RTC时钟的基础配置。下文调试时用到的串口来查看,不过串口的配置省略了。

步骤

实验目标:基于RTC时钟,查看它的秒计时是否能用。

  1. 外部时钟的使能配置和生成文件配置,串口打印配置,其它文章讲过了,这里就不重复了。下面讲的是外部低速时钟。

    在这里插入图片描述

  2. RTC配置

    在这里插入图片描述

  3. keil中打开,生成的工程。以及结果。

    关键函数

    unsigned char TimeDataStr[8];	//暂存字符串
    RTC_TimeTypeDef TimeData;		//RTC时间结构定义
    //RTC_DateTypeDef DateData;		//RTC日期结构定义
    
    __HAL_RCC_PWR_CLK_ENABLE();//使能时钟才能开始计时
    
    //BCD码转10进制码
    uint8_t bcd_to_dec(uint8_t bcd_value)
    {
        uint8_t dec_value = 0;
        uint8_t high_nibble = (uint8_t)(bcd_value >> 4);
        uint8_t low_nibble = (uint8_t)(bcd_value & 0x0F);
        
        dec_value = (high_nibble * 10) + low_nibble;
        
        return dec_value;
    }
    
    //主循环中的
    HAL_RTC_GetTime(&hrtc, &TimeData, RTC_FORMAT_BCD);
    sprintf(TimeDataStr,"%02d\r\n",bcd_to_dec(TimeData.Seconds));
    HAL_UART_Transmit(&huart1,TimeDataStr,sizeof(TimeDataStr),10);
    

    在这里插入图片描述

  4. 基础输出如上。但是上面不具备掉电恢复,就要使用到BKU(备份寄存器)来配合RTC完成上电,判断是否重置。而且当主电源掉电时,但是VBAT引脚还存在供电的话,RTC也还会继续走时,和BKU(备份寄存器)数据还有保留。

    HAL_PWR_EnableBkUpAccess();//取消备份区域写保护
    
    //基于BKU判断是否为首次启动
    if(HAL_RTCEx_BKUPRead(&hrtc,RTC_BKP_DR1)!=0x6655)
    {
      HAL_RTCEx_BKUPWrite(&hrtc,RTC_BKP_DR1,0x6655);
    }
    

    以上就是BKU(备份寄存器)的操作,就不加入代码演示了。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值