|
F1xx的RTC只是一个简单的32位计数器,其他系列的则是比较正统的RTC了; 在使用STM32CubeMX配置RTC过程中遇到几个问题。 1、自动配置后,每次上电都会重新初始化时间,所以这里需要自己修改一下初始化配置函数,使用BKP_REG_DR*设置标志位; 2、使用自动配置,初始化时间必须使用RTC_FORMAT_BCD,原因是库函数存在bug,如果使用RTC_FORMAT_BIN,月份配置会出错,比如说11月,配置时会赋值为RTC_MONTH_NOVEMBER,而此宏定义值为0x11,也就是说其十进制值为17,使用HAL_RTC_SetDate时,如果使用RTC_FORMAT_BIN模式会直接赋值而没有转换,导致出现月份配置错误。 3、使用F1的RTC,只能实时记录time,而不能实时记录date,date是在获取时间时(HAL_RTC_GetTime)通过函数RTC_DateUpdate自动更新在ram中的,掉电之后date就没了,所以需要间隔性的去记录当前的date。下次上电时根据BKP_REG的值,决定是否读取记录的date值,赋值给hrtc结构体DateToUpdate成员,这样日期也就不会丢失了。 |
STM32
超强工具——STM32CubeMX 你会用吗?
集结出发! STM32全国研讨会系列之一:ST智能门铃中国首秀
关于STM32启动文件的几个小问题
【银杏科技ARM+FPGA双核心应用】STM32H7系列35——USB_VCP_FS
【银杏科技ARM+FPGA双核心应用】STM32H7系列28——USB_HID
粉丝分享 | 图说CRC原理应用及STM32硬件CRC外设
STM32L151进入低功耗,并由RTC唤醒的故事
[转]stm32控制NFC模块(PN532)源码(P2P,模拟卡,读写卡等
STM32G070RB+LVGL移植
微信公众号
手机版
如果不增加硬件成本添加RTC芯片的话,只能按照楼主说的第3点那个方法,自己在备份寄存器中存过了多少秒,然后换算成过了几天,依此类推,再自己规定一个开始的日期就可以换算了。
比如说我规定开始日期是2017年2月25日上午8点整,每过一秒往备份寄存器中加一,如果累计读取备份寄存器出来过了 86400秒,那么现在的时间不就是2017年2月26日上午8点整了吗
谢谢!我后来换了一种方法,直接采用原子例程中的设置和获取时间函数,不采用cubeMX生成的相关时间函数,其余不做变化!