金牌会员
 
- 积分
- 1073
- 金钱
- 1073
- 注册时间
- 2017-6-10
- 在线时间
- 279 小时
|

楼主 |
发表于 2017-8-2 14:04:35
|
显示全部楼层
本帖最后由 rjx007 于 2017-8-2 14:12 编辑
终于搞定了!根本不用这么复杂,用简单的查询方式就可以了,几条语句就行了,与大家分享:思路非常务实:
1、开PWR时钟-----必须的。
2、使能PVD
3、设置监控电压的阈值,这里设为2.9V.
4、再判断到阈值后,标志位是否置位,如置位,就保存数值到EEPROM.
至于为什么用中断方式失败,原因不清。
int main()
{
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR,ENABLE); //打开PWR时钟
PWR_PVDCmd(ENABLE); //使能PVD
PWR_PVDLevelConfig(PWR_PVDLevel_2V9); //设置PVD的探测电压阀值为2.9V。可设置范围:2.2-2.9
while(1)
{
if(PWR_GetFlagStatus(PWR_FLAG_PVDO)==SET)
{
AT24CXX_WriteOneByte(0x02,VOLUME_1); //write_eep(0x02,VOLUME_1);
delay_ms(4);
}
}
}
|
|