|
最近在使用STM32L476的RTC功能时, 发现在重新设置日期和时间后, 虽然时间已经更新为设置的时间, 但是日期没有改变为最新的日期。 只有重新复位后,RTC_DR的内容才被刷新。 阅读手册才发现,
默认设置下,读取RTC_TR和RTC_DR都是读的shadow registers中的值。 虽然按照理论说,这两个寄存器会在两个RTCCLK周期内被刷新, 但是不知何故,在自己的应用中RTC_TR刷新了,RTC_DR一直没有刷新。 除非复位重启。 所以,需要设置RTC_CR中的BYPSHAD标志,直接读取calendar registers的内容。 避免设置后,RTC_DR的内容没有被更新。 那么这里有一个疑问, 实际应用中如果访问shadow registers是否存在隐患(或者确实是在初始化的时候,漏掉了某些设置,参考附注), 相比于direct access访问shadow registers的优点在哪里? 附: 在访问shadow registers的初始化设置如下: hrtc.Init.HourFormat = RTC_HOURFORMAT_24; hrtc.Init.AsynchPrediv = RTC_ASYNCH_PREDIV; hrtc.Init.SynchPrediv = RTC_SYNCH_PREDIV; hrtc.Init.OutPut = RTC_OUTPUT_DISABLE; hrtc.Init.OutPutPolarity = RTC_OUTPUT_POLARITY_HIGH; hrtc.Init.OutPutType = RTC_OUTPUT_TYPE_OPENDRAIN; direct access的初始化设置如下: hrtc.Init.HourFormat = RTC_HOURFORMAT_24 | RTC_CR_BYPSHAD; hrtc.Init.AsynchPrediv = RTC_ASYNCH_PREDIV; hrtc.Init.SynchPrediv = RTC_SYNCH_PREDIV; hrtc.Init.OutPut = RTC_OUTPUT_DISABLE; hrtc.Init.OutPutPolarity = RTC_OUTPUT_POLARITY_HIGH; hrtc.Init.OutPutType = RTC_OUTPUT_TYPE_OPENDRAIN; |
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的HAL库中没有找到相关的Enable操作,
你是指这里缺少了哪一个Enable操作呢?
当前的初始化确实只进行了这些操作。
if (HAL_RTC_Init(&hrtc) != HAL_OK) {
return VC_ER_FATIL;
}
没有额外调用其他的操作。
在COMP中设置好之后需要调用HAL_COMP_Start,
才能使能COMP,
这个在HAL库中找到了。