PCF8563转STM32 RTC避坑指南

这篇具有很好参考价值的文章主要介绍了PCF8563转STM32 RTC避坑指南。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

问题一,时间读取错误

原因,读写时间必须Time在前,Date在后

HAL_RTC_GetTime(&hrtc, &time, RTC_FORMAT_BCD);
HAL_RTC_GetDate(&hrtc, &date, RTC_FORMAT_BCD);

HAL_RTC_SetTime(&hrtc, &time, RTC_FORMAT_BCD);
HAL_RTC_SetDate(&hrtc, &date, RTC_FORMAT_BCD);

问题二,rtc时间超过24小时且日期不变

原因,time一开始声明时没有初始化={0};并且没有给DayLightSaving和StoreOperation赋值,下面的函数是修改后的读写函数

问题三,如果问题二已经发生,需要设备断电或者HAL_RTC_DeInit(&hrtc); 重置RTC,否则异常不会清除。

void PCF8563_Read(void)
{
    RTC_DateTypeDef date;
    RTC_TimeTypeDef time;
    HAL_RTC_GetTime(&hrtc, &time, RTC_FORMAT_BCD);
    HAL_RTC_GetDate(&hrtc, &date, RTC_FORMAT_BCD);
    systemclock.year = date.Year;
    systemclock.month = date.Month;
    systemclock.day = date.Date;
    systemclock.week = date.WeekDay;
    systemclock.hour = time.Hours;
    systemclock.min = time.Minutes;
    systemclock.sec = time.Seconds;

}

void ZPCF8563_Write()
{
    RTC_DateTypeDef date={0};
    RTC_TimeTypeDef time={0};

    HAL_RTC_DeInit(&hrtc);
    MX_RTC_Init();
    date.Year=systemclock.year;
    date.Month=systemclock.month;
    date.Date=systemclock.day;
    date.WeekDay=systemclock.week;
    
    time.Hours=systemclock.hour;
    time.Minutes=systemclock.min;
    time.Seconds=systemclock.sec;
    time.DayLightSaving = RTC_DAYLIGHTSAVING_NONE;
    time.StoreOperation = RTC_STOREOPERATION_RESET;
    HAL_RTC_SetTime(&hrtc, &time, RTC_FORMAT_BCD);
    HAL_RTC_SetDate(&hrtc, &date, RTC_FORMAT_BCD);
}文章来源地址https://www.toymoban.com/news/detail-813889.html

到了这里,关于PCF8563转STM32 RTC避坑指南的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 32单片机RTC时间接续,掉电时间保存

    前提:首先要实现RTC掉电之后时间还能继续走,RTC电池是必要的 说明:设备第一次启动需要初始化配置RTC,但当二次启动再重新配置RTC会导致RTC计数器置零,所以传统的程序流程是不行的,我们需要知道设备是第一次启动还是二次启动,来判断是否需要重新初始化配置RTC。另

    2024年01月17日
    浏览(47)
  • 蓝桥杯单片机(十二)PCF8591(D/A转换)

    接上一篇 蓝桥杯单片机(十一)PCF8591(A/D转换) 首先看蓝桥杯单片机开发板的原理图 AOUT是模拟输出端,AGND为模拟信号地。 模拟参考电压为Vref两端的电压。 由于Vref接到了VCC(5V),所以模拟输出就是以5V为参考电压。 由于PCF8591是8位数模转换,所以 比如0000 00001就是5/255伏。 由于进

    2023年04月09日
    浏览(44)
  • 蓝桥杯单片机(十一)PCF8591(A/D转换)

    PCF8591是一个单片集成、单独供电、低功耗、8-bit CMOS数据获取器件。PCF8591具有4个模拟输入、1个模拟输出和1个串行IIC总线接口。 首先蓝桥杯单片机开发板上的原理图部分 其中A0-A2为地址线,主要功能是当有多个PCF8591时,可将A0-A2按不同的最小项来区分不同PCF8591,比如第一个

    2023年04月08日
    浏览(42)
  • GD32单片机和STM32单片机的对比分析

    GD32单片机和STM32单片机都是基于Arm Cortex-M3/M4内核的32位通用微控制器,广泛应用于各种嵌入式系统和物联网领域。两者之间有很多相似之处,但也有一些不同之处,本文将从以下几个方面对比分析两者的特点、优势和开发成本。 GD32单片机采用的是二代的M3/M4内核,而STM32单片

    2024年02月16日
    浏览(63)
  • APM32F072单片机进入STOP模式,并通过RTC Wakeup Timer和USART1串口接收事件唤醒

    串口初始化(注意USART1时钟源要选择HSI): 使用power_init函数初始化RTC,然后调用power_enter_stop_mode(n)函数进入STOP模式,n秒后自动唤醒,或由USART1接收唤醒:

    2024年02月13日
    浏览(52)
  • STM32单片机(一)STM32简介

    ❤️ 专栏简介:本专栏记录了从零学习单片机的过程,其中包括51单片机和STM32单片机两部分;建议先学习51单片机,其是STM32等高级单片机的基础;这样再学习STM32时才能融会贯通。 ☀️ 专栏适用人群 :适用于想要从零基础开始学习入门单片机,且有一定C语言基础的的童鞋

    2024年02月10日
    浏览(60)
  • STM32单片机(二)STM32环境搭建

    ❤️ 专栏简介:本专栏记录了从零学习单片机的过程,其中包括51单片机和STM32单片机两部分;建议先学习51单片机,其是STM32等高级单片机的基础;这样再学习STM32时才能融会贯通。 ☀️ 专栏适用人群 :适用于想要从零基础开始学习入门单片机,且有一定C语言基础的的童鞋

    2024年02月10日
    浏览(63)
  • STM32单片机开发-01 STM32介绍

    通过野火开发板学习单片机 从内核上分有Cortex-M0、M3、M4 和M7 F1 代表了基础型,基于Cortex-M3 内核,主频为72MHZ F4 代表了高性能,基于Cortex-M4 内核,主频180M。 数据手册:用于芯片选型和设计原理图 参考手册:用于编程时查阅 Icode总线 – 该总线讲M3内核的指令总线与闪存指令

    2024年01月21日
    浏览(63)
  • PCF8591芯片的AD/DA转换(适用于蓝桥杯单片机)

    目录 1、PCF8591的引脚介绍  2、用IIC发送或接收字节              发送的第一个字节         发送的第二个字节   发送第三个字节     3.发送和接收的字节转换  4.全部代码 IIC部分 接收电压数据 发送电压数据                      在和单片机实际应用中它的

    2024年02月05日
    浏览(49)
  • 基于51单片机的数字电压表(PCF8591)(Proteus仿真+程序)

            本设计由51单片机最小系统+PCF8591模块+四路模拟量输入模块+一路DA输出+液晶1602显示模块 1、主控制器是89C82单片机。 2、PCF8591模数转换器进行A/D转换,读取四路电压数据,电压检测范围0-5V 精度(8位);实现一路数模转换(D/A)输出电压范围0-5V(8位)。 3、利用四个

    2024年02月05日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包