Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
RTC
关于STM32F4的RTC疑问
发布于 2019-11-16 11:00:00 浏览:2003
订阅该版
* 本帖最后由 kuailedeluojie 于 2019-11-16 11:32 编辑 * > /******************************************************************************* * Function Name : RTC_Configuration * Description : Configures the RTC. * Input : None * Output : None * Return : 0 reday,-1 error. *******************************************************************************/ int RTC_Configuration(void) { RTC_InitTypeDef RTC_InitStructure; /* Enable the PWR clock */ RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE); /* Allow access to RTC */ PWR_BackupAccessCmd(ENABLE); #if defined (RTC_CLOCK_SOURCE_LSI) /* LSI used as RTC source clock*/ /* The RTC Clock may varies due to LSI frequency dispersion */ /* Enable the LSI OSC */ RCC_LSICmd(ENABLE); /* Wait till LSI is ready */ while(RCC_GetFlagStatus(RCC_FLAG_LSIRDY) == RESET) { } /* Select the RTC Clock Source */ RCC_RTCCLKConfig(RCC_RTCCLKSource_LSI); /* ck_spre(1Hz) = RTCCLK(LSI) /(uwAsynchPrediv + 1)*(uwSynchPrediv + 1)*/ //uwSynchPrediv = 0xFF; //uwAsynchPrediv = 0x7F; #elif defined (RTC_CLOCK_SOURCE_LSE) /* LSE used as RTC source clock */ /* Enable the LSE OSC */ RCC_LSEConfig(RCC_LSE_ON); /* Wait till LSE is ready */ while(RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET) { } /* Select the RTC Clock Source */ RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE); #else #error Please select the RTC Clock source inside the main.c file #endif /* RTC_CLOCK_SOURCE_LSI */ /* Enable the RTC Clock */ RCC_RTCCLKCmd(ENABLE); /* Wait for RTC APB registers synchronisation */ RTC_WaitForSynchro(); z这是RTC的配置代码,用的是RTC_CLOCK_SOURCE_LSE,之前能正常运行的,设置了一次之后,重启一下,就获取不了正常时间了。 > void RTC_TimeAndDate_Set(void) { RTC_TimeTypeDef RTC_TimeStructure; RTC_DateTypeDef RTC_DateStructure; // 初始化时间 RTC_TimeStructure.RTC_H12 = RTC_H12_AMorPM; RTC_TimeStructure.RTC_Hours = HOURS; RTC_TimeStructure.RTC_Minutes = MINUTES; RTC_TimeStructure.RTC_Seconds = SECONDS; RTC_SetTime(RTC_Format_BINorBCD, &RTC_TimeStructure); RTC_WriteBackupRegister(RTC_BKP_DRX, RTC_BKP_DATA); // 初始化日期 RTC_DateStructure.RTC_WeekDay = WEEKDAY; RTC_DateStructure.RTC_Date = DATE; RTC_DateStructure.RTC_Month = MONTH; RTC_DateStructure.RTC_Year = YEAR; RTC_SetDate(RTC_Format_BINorBCD, &RTC_DateStructure); RTC_WriteBackupRegister(RTC_BKP_DRX, RTC_BKP_DATA); } 以上是时间设置函数 > void show_time(void) { RTC_TimeTypeDef t; RTC_DateTypeDef d; /* Get the current Date */ RTC_GetDate(RTC_Format_BIN,&d); /* Get the current Time */ RTC_GetTime(RTC_Format_BIN, &t); /* Display time Format : hh:mm:ss */ rt_kprintf("Now Time = 20%02d %02d %02d[%02d]-%0.2d:%0.2d:%0.2d
", \ d.RTC_Year,d.RTC_Month,d.RTC_Date,d.RTC_WeekDay,t.RTC_Hours, t.RTC_Minutes, t.RTC_Seconds); } 这是获取时间函数 以下是RTC配置相关函数 > void rt_hw_rtc_init(void) { rtc.type = RT_Device_Class_RTC; if (RTC_ReadBackupRegister(RTC_BKP_DR0) != 0x32F2) { rt_kprintf("rtc is not configured
"); rt_kprintf("please configure with set_date and set_time
"); if ( RTC_Configuration() != 0) { rt_kprintf("rtc configure fail...
"); return ; } } else { /* Wait for RTC registers synchronization */ RTC_WaitForSynchro(); } /* register rtc device */ rtc.init = RT_NULL; rtc.open = rt_rtc_open; rtc.close = RT_NULL; rtc.read = rt_rtc_read; rtc.write = RT_NULL; rtc.control = rt_rtc_control; /* no private */ rtc.user_data = RT_NULL; rt_device_register(&rtc, "rtc", RT_DEVICE_FLAG_RDWR); show_time(); return; } 每次都打印一样的结果,请大神指点一下 Now Time = 2000 01 01[01]-00:00:00
查看更多
7
个回答
默认排序
按发布时间排序
aozima
2019-11-16
调网络不抓包,调I2C等时序不上逻辑分析仪,就像电工不用万用表!多用整理的好的文字,比截图更省流量,还能在整理过程中思考。
[i=s] 本帖最后由 aozima 于 2019-11-16 11:28 编辑 [/i] RTC的32K晶振起振了没?
aozima
2019-11-16
调网络不抓包,调I2C等时序不上逻辑分析仪,就像电工不用万用表!多用整理的好的文字,比截图更省流量,还能在整理过程中思考。
[i=s] 本帖最后由 aozima 于 2019-11-16 11:29 编辑 [/i] 楼主从来不管乱码的吗?别人会认真看?
kuailedeluojie
2019-11-16
这家伙很懒,什么也没写!
>RTC要32K晶振起振了没? --- 我看一下
kuailedeluojie
2019-11-16
这家伙很懒,什么也没写!
[i=s] 本帖最后由 kuailedeluojie 于 2019-11-16 11:33 编辑 [/i] >楼主重来不管乱码的吗?别人会认真看? --- 乱码的改好了
kuailedeluojie
2019-11-16
这家伙很懒,什么也没写!
>我看一下 --- 晶振是起来了的
MikeCai
2019-11-16
这家伙很懒,什么也没写!
实在不行,您要不用cubeMX 自行设置 RTC,生成 RTC 代码试试。 参考这篇文章 STM32Cube 学习之十二:RTC
kuailedeluojie
2019-11-16
这家伙很懒,什么也没写!
>实在不行,您要不用cubeMX 自行设置 RTC,生成 RTC 代码试试。 >参考这篇文章 >STM32Cube 学习之十二:RTC ... --- 晚点吧,先把这个问题解决啊
撰写答案
登录
注册新账号
关注者
0
被浏览
2k
关于作者
kuailedeluojie
这家伙很懒,什么也没写!
提问
44
回答
135
被采纳
0
关注TA
发私信
相关问题
1
RTC驱动框架几点建议
2
求助:RTT在STM32F407上使用内置的RTC设置日期需重启生效,设置时间即时生效,有遇到同样问题的吗?
3
[新人试水] LPC1768 Nano3_9 添加RTC
4
STM32 关于RTC的问题
5
stm32f4xx-HAL BSP的RTC设置不对
6
关于STM32的RTC设置年份不正确的问题
7
RTT的RTC驱动调试
8
rtc驱动中的bkp模块起不到防止时间的重新设置
9
rtc时钟跑十几个小时后,比实际时间快几秒怎么解决
10
stm32如何断电之后开发板rtc时间继续往前跑
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
开源共生 商业共赢 | RT-Thread 2024开发者大会议程正式发布!
2
【24嵌入式设计大赛】基于RT-Thread星火一号的智慧家居系统
3
RT-Thread EtherKit开源以太网硬件正式发布
4
如何在master上的BSP中添加配置yml文件
5
使用百度AI助手辅助编写一个rt-thread下的ONVIF设备发现功能的功能代码
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
WIZnet_W5500
UART
ota在线升级
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
msh
SFUD
rt_mq_消息队列_msg_queue
keil_MDK
ulog
MicroPython
C++_cpp
本月问答贡献
a1012112796
20
个答案
3
次被采纳
张世争
11
个答案
3
次被采纳
踩姑娘的小蘑菇
7
个答案
3
次被采纳
rv666
9
个答案
2
次被采纳
用户名由3_15位
13
个答案
1
次被采纳
本月文章贡献
程序员阿伟
9
篇文章
2
次点赞
hhart
3
篇文章
4
次点赞
RTT_逍遥
1
篇文章
6
次点赞
大龄码农
1
篇文章
5
次点赞
ThinkCode
1
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部