初级会员

- 积分
- 124
- 金钱
- 124
- 注册时间
- 2019-10-14
- 在线时间
- 24 小时
|
学习stm32f429的RTC功能的时候,跟着原子哥的视频学习,但是发现做时钟日历的时候,我的rtc掉电并不跑,后来自己研究好久终于发现问题的原因,但是遗憾的事还有几个小的问题没有解决,希望看到此贴的朋友大家一起分享下经验,谢谢。
此程序使用hal库开发。rtc是后备寄存器区,对于那些相关寄存器的配置我就不多废话了,下面直接说我发现的问题
我们配置RTC的时候需要配置RTC的时钟,但是我印象中有一讲视频讲过配置时钟的时候需要先将时钟关闭,再配置时钟才能起作用,具体我也记不清楚 了,找了好久也没找到,
所以我把RTC的初始化函数丢在系统时钟配置之前,这样时钟还没开我也就先把rtc的时钟给配置好了,也就变相的关了是时钟再配置,最后便成功了,大家不妨可以验证下,下面是我的主函数
- #include "sys.h"
- #include "delay.h"
- #include "usart.h"
- #include "./KEY/key.h"
- #include "./LED/led.h"
- #include "./RTC/rtc.h"
- int main(void)
RTC.zip
(1003.25 KB, 下载次数: 4)
接下来,我再补充几个我所剩下的几个问题,
1、我记得配置其他时钟的时候是需要关闭时钟,配置完之后再打开,但是我找了很久都没找到这个函数,请问有哪位大佬知道可以分享下吗,或者我记混淆了
2、HAL_RTC_GetDate() 和 HAL_RTC_GetTime() 必须同时被调用,否则时钟不会跑,我粗略的看了下HAL_RTC_GetTime()函数内部,感觉也没什么影响呀,但是不调用HAL_RTC_GetTime函数时钟就是不跑(正常供电的情况下),但是我按复位,时钟在跑!!
3、这个原子哥在讲rtc的时候并没有讲到这一点,但是我实践发现只有这样时钟才能在掉电之后也正常跑,但是我看了开发板配套的源码,源码里面rtc并没有放到系统时钟前面,但是那个程序参杂了usmart的液晶屏的程序,我在源码的主函数把参杂的usmart的和液晶屏的程序删掉之后,也是有同样的问题,因此我目前想的是可能那两个程序里面是不是包含了关时钟的操作。
希望看到此贴的江湖朋友一起分享下
我把我写的rtc的代码和原子哥的源码都附带上
|
|