
MCU型号是STM32H7B0VBT6。我们的产品使用了MCU的RTC功能,采用外置 32.768K 6PF晶振,匹配的电容为6PF,并配置了纽扣电池用于掉电计时。在使用过程中,我们遇到了如下几个问题: 1类、产品正常上电,程序开启RTC时钟和寄存器写使能,但无法正常写入RTC寄存器, 导致程序卡死在RTC初始化函数里,产品掉电或者去掉电池皆不起作用。 2类、产品正常上电无法启动,如果焊接下芯片的RTC晶振管脚或者拔掉RTC的纽扣电池, 才可以正常启动,此后不会再出现卡死现象。 在此想咨询下,有后备电池时,怎样初始化时钟?是否需要检测下后备电池?这种问题 有什么解决方案。 以上问题出现概率约为2%,对我们产品生产和销售造成了很大影响。 其他客户是否遇到过此类问题,帮忙协助解决该问题。 在此表示感谢! 附: 下面是我们当前RTC初始化相关函数 //系统时钟初始化函数,使用LSE和HSI static void SystemClock_Config(void) { RCC_OscInitTypeDef RCC_OscInitStruct = {0}; RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; /* Supply configuration update enable / HAL_PWREx_ConfigSupply(PWR_LDO_SUPPLY); /* Configure the main internal regulator output voltage / __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE0); while(!__HAL_PWR_GET_FLAG(PWR_FLAG_VOSRDY)) {} /* Configure LSE Drive Capability / HAL_PWR_EnableBkUpAccess(); __HAL_RCC_LSEDRIVE_CONFIG(RCC_LSEDRIVE_LOW); /** Initializes the RCC Oscillators according to the specified parameters
if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_7) != HAL_OK) { Error_Handler(); } } //RTC初始化函数 // // 功 能: RTC初始化 // 输 入: 无 // 返 回: 无 // void Rtc_Init(void) { RTC_TimeTypeDef sTime = {0}; RTC_DateTypeDef sDate = {0}; RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0}; PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_RTC; PeriphClkInitStruct.RTCClockSelection = RCC_RTCCLKSOURCE_LSE; HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct); __HAL_RCC_RTC_ENABLE(); hrtc.Instance = RTC; hrtc.Init.HourFormat = RTC_HOURFORMAT_24; hrtc.Init.AsynchPrediv = 127; hrtc.Init.SynchPrediv = 255; hrtc.Init.OutPut = RTC_OUTPUT_DISABLE; hrtc.Init.OutPutPolarity = RTC_OUTPUT_POLARITY_HIGH; hrtc.Init.OutPutType = RTC_OUTPUT_TYPE_OPENDRAIN; hrtc.Init.OutPutRemap = RTC_OUTPUT_REMAP_NONE; HAL_RTC_Init(&hrtc); if( HAL_RTCEx_BKUPRead(&hrtc, RTC_BKP_DR1) != 0x5051 ) { /* Initialize RTC and set the Time and Date / sTime.Hours = 0x0; sTime.Minutes = 0x0; sTime.Seconds = 0x0; sTime.DayLightSaving = RTC_DAYLIGHTSAVING_NONE; sTime.StoreOperation = RTC_STOREOPERATION_RESET; HAL_RTC_SetTime(&hrtc, &sTime, RTC_FORMAT_BIN); sDate.WeekDay = RTC_WEEKDAY_SATURDAY; sDate.Month = RTC_MONTH_JANUARY; sDate.Date = 0x1; sDate.Year = 0x00; HAL_RTC_SetDate(&hrtc, &sDate, RTC_FORMAT_BIN); HAL_RTCEx_BKUPWrite(&hrtc, RTC_BKP_DR1, 0X5051); } } |
板载STLinkV3无法使用
STM32H7开启单脉冲模式 PWM波脉冲宽度不受CCR控制
有提供 stm32h747 系列的 驱动 ek79007 mipi 的例程吗 ?
如何STM32H7的hal库,做SPI主从机通讯?
MotorControl Workbench_6.3.2配置单片机时找不到STM32H743VIT6E
STM32H743IIT6同时配置ADC3通道中的温度及内部参考电压,扫描单次转换,怎样读出这二个数据?
TouchGFX Designer下载工程到STM32H7S7-DK报错
Demo 例程
关于STM32H743VIT6 在用QSPI的接口,想换个CS的管脚,但芯片内置是绑死的,这个要怎么处理,用个其他的IO口做片选
定时器使用DMA突发传输功能时,传入指针从常量数组改为变量数组后,传输功能异常。测试官方用例一样,是何原因?
感觉你的RTC相关初始化代码可能有问题。具体要看你的实现代码,最好是现场调试。