[STM32F1] 分享掉电保存值flash

[复制链接]
1475|9
 楼主| 七颗咖啡豆 发表于 2016-11-23 10:31 | 显示全部楼层 |阅读模式
void PVD_Init(void)
{  
   NVIC_InitTypeDef NVIC_InitStruct;
   EXTI_InitTypeDef EXTI_InitStructure;

        RCC_APB1PeriphClockCmd( RCC_APB1Periph_PWR, ENABLE);
        PWR_PVDLevelConfig(PWR_PVDLevel_2V9);
        
        NVIC_InitStruct.NVIC_IRQChannel = PVD_IRQn;
        NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 0;
        NVIC_InitStruct.NVIC_IRQChannelSubPriority = 1;
        NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;


        NVIC_Init(&NVIC_InitStruct);//允许中断

        EXTI_ClearITPendingBit(EXTI_Line16);
        EXTI_InitStructure.EXTI_Line = EXTI_Line16;
        EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
        EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising_Falling;
        EXTI_InitStructure.EXTI_LineCmd = ENABLE;
        EXTI_Init(&EXTI_InitStructure);

        PWR_PVDCmd(ENABLE);
}

初始化  
注意 门限电压根据实际设置
中断优先级要高

 楼主| 七颗咖啡豆 发表于 2016-11-23 10:34 | 显示全部楼层
void PVD_IRQHandler(void)
{


        EXTI_ClearITPendingBit(EXTI_Line16);
        if(PWR_GetFlagStatus(PWR_FLAG_PVDO)) //
        {
                PWR_ClearFlag(PWR_FLAG_PVDO);

                LosePowerSeve();
        }       
}


void LosePowerSeve()
{
        FLASH_Unlock();
        FLASH_ProgramHalfWord(0x5f800,ErrorThingNumber);//
        FLASH_ProgramHalfWord(0x5f802,FlashErrorNowP);//
        FLASH_Lock();//上锁
}

void SysSet_init()
{
        FLASH_Unlock();       
        FLASH_ErasePage(0x5f800 );//擦除这个扇区
        FLASH_Lock();//上锁       
}

需要掉电保存的数据单独放在一个扇区,在程序开始时清flash
 楼主| 七颗咖啡豆 发表于 2016-11-23 10:40 | 显示全部楼层
注意flash地址不要踩到程序
wahahaheihei 发表于 2016-11-23 13:19 | 显示全部楼层
如果突然断电,那怎么保存啊。。
mmuuss586 发表于 2016-11-23 14:56 | 显示全部楼层
谢谢分享;
643757107 发表于 2016-11-23 17:47 | 显示全部楼层
掉电是主动掉还是突然断电了,如果突然断电,程序不就不能执行了。
Jessicakjdsl 发表于 2016-11-23 19:00 | 显示全部楼层
意思是再上电的时候能够按照掉电前的指令运行吗?
gyh974 发表于 2016-11-23 19:19 | 显示全部楼层
zhuomuniao110 发表于 2016-11-23 20:04 | 显示全部楼层
这种就好比主动关机的一种方式,就好比断电模式,又能自动唤醒那种。
Ryze 发表于 2016-11-23 21:36 | 显示全部楼层
再上电的时候能够按照掉电前的指令运行

差不多这意思,应该是再上电时,恢复掉电前的状态
您需要登录后才可以回帖 登录 | 注册

本版积分规则

51

主题

508

帖子

4

粉丝
快速回复 在线客服 返回列表 返回顶部
0