用LSI配置rtc的时候,发现配置不成功,配置失败后直接定时读rtc,发现时间没有增加,怀疑是时钟相关的问题。 我找到了ST官方1.0.0版本的STM32F2xx_StdPeriph_Lib,目前的配置基本和官方一样。常见的外设未配时钟的问题,我应该也避免了吧。 求各位大神看看问题在哪呢? 下面是首次配置部分的代码: (失败在RCC_RTCCLKCmd(ENABLE); if (ERROR == RTC_WaitForSynchro()) return 88; 如果注销掉这句同步,会继续失败在if(ERROR == RTC_Init(&RTC_InitTypeDef_Data)) return 233; 查看这个RTC_Init的代码实现,是在进入RTC_EnterInitMode中,查询出现超时) 代码如下: #define RTC_MAGIC 0xA5A5 #define RTCClockSource_LSI uint32_t rtc_config(void) { RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_AHB1Periph_BKPSRAM, ENABLE); PWR_BackupAccessCmd(ENABLE); if (RTC_ReadBackupRegister(RTC_BKP_DR0) != RTC_MAGIC) { LOG(DEBUG_LOG, "RTC not yet configured...."); return rtc_config_firsttime(); } else { LOG(DEBUG_LOG, "RTC have configured...."); return rtc_config_othertime(); } } static uint32_t rtc_config_firsttime(void) { RTC_InitTypeDef RTC_InitTypeDef_Data; RTC_TimeTypeDef default_time; RTC_DateTypeDef default_data; RCC_BackupResetCmd(ENABLE); RCC_LSICmd(ENABLE); while(RCC_GetFlagStatus(RCC_FLAG_LSIRDY) == RESET) { } RCC_RTCCLKConfig(RCC_RTCCLKSource_LSI); // E. Enable RTC Clock RCC_RTCCLKCmd(ENABLE); if (ERROR == RTC_WaitForSynchro()) return 88; // F. enable second interrupt //RTC_ITConfig(RTC_IT_TS, ENABLE); // G. Set RTC prescaler: set RTC period to 1sec RTC_InitTypeDef_Data.RTC_HourFormat = RTC_HourFormat_24; RTC_InitTypeDef_Data.RTC_AsynchPrediv = 99; RTC_InitTypeDef_Data.RTC_SynchPrediv = 319; if(ERROR == RTC_Init(&RTC_InitTypeDef_Data)) return 233; if (ERROR == RTC_WaitForSynchro()) return 100; // I. set default time default_time.RTC_Hours = DEFAULT_HOURS; default_time.RTC_Minutes = DEFAULT_MINUTES; default_time.RTC_Seconds = DEFAULT_SECONDS; default_time.RTC_H12 = RTC_H12_PM; if (ERROR == RTC_SetTime(RTC_Format_BIN, &default_time)) return 333; if (ERROR == RTC_WaitForSynchro()) return 101; default_data.RTC_WeekDay = DEFAULT_WEEKDAY; default_data.RTC_Month = DEFAULT_MONTH; default_data.RTC_Date = DEFAULT_DATE; default_data.RTC_Year = DEFAULT_YEAR; if (ERROR == RTC_SetDate(RTC_Format_BIN, &default_data)) return 334; if (ERROR == RTC_WaitForSynchro()) return 102; RTC_WriteBackupRegister(RTC_BKP_DR0, RTC_MAGIC); PWR_BackupAccessCmd(DISABLE); RCC_ClearFlag(); LOG(DEBUG_LOG, "RTC configured...."); return 0; } |
STM32F207+LWIP的网络丢包问题! 【悬赏问答】
STM32F207+DP83848+RTL8019可不可以实现双网口设计
深圳市旺宝电子STM32F207开发板例程集
STM32F2 器件 -25° 上电正常 复位就挂了
STM32F229 TIMER CNT问题
哪位工程师有STM32F2xx的寄存器手册?
STM32F2外部按键触发中断问题
STM32F205 低功耗模式有BUG?
STM32F207 两个ADC同时采样问题
STM32F205 的HS USB 做device使用是否要接PHY?
RE:STM32F2xx RTC启动不了,求助!!!!
回复:STM32F2xx RTC启动不了,求助!!!!
查查看晶振有没有起振。
多谢多谢!
我就是怕不起振,换成了内部振荡器HSI,代码里检查时钟是否ok的地方过去了,死在了后面一步。。。。
RE:STM32F2xx RTC启动不了,求助!!!!
RE:STM32F2xx RTC启动不了,求助!!!!
RE:STM32F2xx RTC启动不了,求助!!!!
RE:STM32F2xx RTC启动不了,求助!!!!
RE:STM32F2xx RTC启动不了,求助!!!!
RE:STM32F2xx RTC启动不了,求助!!!!
/* Wait till RTC is in INIT state and if Time out is reached exit */
do
{
initstatus = RTC->ISR & RTC_ISR_INITF;
initcounter++;
} while((initcounter != INITMODE_TIMEOUT) && (initstatus == 0x00));
Run运行后,会出现,
0x20017724 FFF9FFFF DCD 0xFFF9FFFF ; ? Undefined
10楼,你最后解决了吗?