|
1、楼主处理程序
楼主说ms_100_cntdbu和ms_100_cn这两个变量的值不等,则说明有其他中断发生,但是不是楼主进行处理的中断。楼主可以这样测试一下:
void TIM6_IRQHandler(void) //1ms
{
ms_100_cntdbu++;
if ((TIM6->SR & 0x0001) != 0) // check interrupt source
{
ms_100_cnt++;
TIM6->SR &= ~(1<<0); // clear UIF flag
}
else {
Other_CNT ++;
}
}
再看看是什么问题。
2、楼主的电路图
楼主的设计的备用电路用在其他公司的MCU上没有问题,但是这样用法在STM32上是不对的。
当Vdd掉电时,系统会自动切换到Vbat引脚上,而用户的电路上也会做一次切换,由于你使用的电池电压与3.3V的压差、二极管反应速度和外围电路上的电容值大小的问题,这些会影响到Vbat引脚在内部切换和外部切换的同步性,一旦外部的切换比内部的慢,就会导致Vbat未能及时给内部的Backup区域供电,导致数据丢失。
至于你所说的电压只有1.5V,你可以再检测一下,先将电路从Vbat上断开测试一下,然后再连接上去。 |
|