以前几次生产时,都是先烧写程序(使用离线烧写器,不是烧片)后安装纽扣电池,然后生产测试,设置时间,没问题。 最近临近春节,工厂缺人,修改了生产流程,先安装纽扣电池后烧写程序,然后设置时间就百分百出错。出错的原因是Enter_RTC_InitMode返回超时。扣掉纽扣电池再装回去,上电就好了。这是什么原因? 时间设置函数: /*##-1- Disable RTC registers write protection ############################*/ LL_RTC_DisableWriteProtection(RTC); /*##-2- Enter in initialization mode ######################################*/ if (Enter_RTC_InitMode() != RTC_ERROR_NONE) { _say_("Enter_RTC_InitMode Error\r\n"); Voice_Play(VOICE_FAIL_SOUND, 0); } /*##-3- Configure the Date ################################################*/ /* Set Date: Monday March 31th 2015 */ LL_RTC_DATE_Config(RTC, Settime.tm_wday, __LL_RTC_CONVERT_BIN2BCD(Settime.tm_mday), __LL_RTC_CONVERT_BIN2BCD(Settime.tm_mon), __LL_RTC_CONVERT_BIN2BCD(Settime.tm_year)); /*##-4- Configure the Time ################################################*/ /* Set Time: 11:59:55 PM*/ LL_RTC_TIME_Config(RTC, LL_RTC_TIME_FORMAT_AM_OR_24, __LL_RTC_CONVERT_BIN2BCD(Settime.tm_hour), __LL_RTC_CONVERT_BIN2BCD(Settime.tm_min), __LL_RTC_CONVERT_BIN2BCD(Settime.tm_sec)); /*##-5- Exit of initialization mode #######################################*/ if (Exit_RTC_InitMode() != RTC_ERROR_NONE) { _say_("Exit_RTC_InitMode Error\r\n"); Voice_Play(VOICE_FAIL_SOUND, 0); } /*##-6- Enable RTC registers write protection #############################*/ LL_RTC_EnableWriteProtection(RTC); Enter_RTC_InitMode函数如下: uint32_t Enter_RTC_InitMode(void) { /* Set Initialization mode */ LL_RTC_EnableInitMode(RTC); RTC_Timeout = RTC_TIMEOUT_VALUE; /* Check if the Initialization mode is set */ while (LL_RTC_IsActiveFlag_INIT(RTC) != 1) { if (LL_SYSTICK_IsActiveCounterFlag()) { RTC_Timeout --; } if (RTC_Timeout == 0) { return RTC_ERROR_TIMEOUT; } } return RTC_ERROR_NONE; } |
求教,STM32 LCD驱动段码屏,SEG1-SEG8,可以不连续配置吗?
DMA发送函数只能被调用一次
STM32L431进入STOP1模式后ADC产生多余功耗
STM32L431在去掉注释memcpy后会不断重启
STM32L431在STOP2模式下能否将串口的RX配置成EXTI唤醒呢?为什么我的唤醒不了呢?并且空闲中断也不能用
怎么将HAL库转为LL库。
STM32L4R9OSPI接口测试
ST25R3916有快速读取吗?
VDD下电后使用VBAT引脚供电时LSE停振?
STM32L4出现Warning:L6989W怎么解决
另外,RTC时钟设置跟这个纽扣也没有多少关系,它毕竟只是个备份电源。
难道是这个纽扣的 先上和 后上动作 对外围其它电路造成了影响?
目前我只是怀疑到LSE这块是否受到了影响。
因为工厂使用离线烧写器,不是烧片。我觉得是离线烧写的时候,片内固件开始起作用,芯片已经开始工作,此时芯片内部RTC的某些东西可能有改变。做这个推测基于两点:1、拿掉纽扣电池再装上去再开机就正常;2、加入测试代码,当出现这个错误时,对RTC部分重新进行初始化,再写时间也就正常了