stm32f103ve的模拟看门狗可以用来做掉电检测吗
[复制链接]
供电电压通过两个10K的电阻分压 然后接到AD0
然后通过模拟看门狗来监视电源电压,让电源电压电压掉到3.2V以下时,把数据存到Flash中
代码如下:
ADC_DeInit(ADC1);
ADC_InitStructure.ADC_Mode=ADC_Mode_Independent;
ADC_InitStructure.ADC_ScanConvMode=DISABLE;
ADC_InitStructure.ADC_ContinuousConvMode=ENABLE; //Á¬Ðøģʽ
ADC_InitStructure.ADC_ExternalTrigConv=ADC_ExternalTrigConv_None; //Èí¼þ´¥·¢
ADC_InitStructure.ADC_DataAlign=ADC_DataAlign_Right;//Êý¾ÝÓÒ¶ÔÆë
ADC_InitStructure.ADC_NbrOfChannel=1;
ADC_Init(ADC1, &ADC_InitStructure);
ADC_RegularChannelConfig(ADC1,ADC_Channel_0,1,ADC_SampleTime_1Cycles5);
ADC_AnalogWatchdogSingleChannelConfig(ADC1, ADC_Channel_0);
ADC_AnalogWatchdogThresholdsConfig(ADC1, 0xfff, 0x700);//744
ADC_AnalogWatchdogCmd(ADC1,ADC_AnalogWatchdog_AllRegEnable);
ADC_ITConfig(ADC1, ADC_IT_AWD, ENABLE);//使能模拟看门狗中断
ADC_Cmd(ADC1, ENABLE);
ADC_ResetCalibration(ADC1);
while(ADC_GetResetCalibrationStatus(ADC1));
ADC_StartCalibration(ADC1);
while(ADC_GetCalibrationStatus(ADC1));
ADC_SoftwareStartConvCmd(ADC1, ENABLE);
代码执行正常的。在正常工作的时候通过改变AD0的电压,高低阀值都进入中断(在中断里面有串口发送数据和点灯)
但是在电源掉电的时候就不会进入中断,这是就不能实现掉电存储数据的目的
请问这是什么原因呢?
STM32也有PVD功能但是最高检测电压只有2.9V
用模拟看门狗的目的就是想给存储数据多点时间。
|