STM32 PVD程序 掉电紧急系统信息转存EEPROM

[复制链接]
查看19 | 回复0 | 2021-8-13 18:10:17 | 显示全部楼层 |阅读模式
  1. void PVD_IRQHandler(void)
  2. {
  3.   if (EXTI_GetITStatus(EXTI_Line16) != RESET)
  4.   {
  5.     //清理16号中断线
  6.     EXTI_ClearITPendingBit(EXTI_Line16);
  7.     //警报灯LE0翻转
  8.     LED0 = !LED0;
  9.     AT24CXX_Write(0, (u8*)PVD, sizeof(PVD));  
  10.   }
  11. }


  12. void PVD_Init(void)

  13. {  
  14.         

  15.    NVIC_InitTypeDef NVIC_InitStruct;
  16.    EXTI_InitTypeDef EXTI_InitStructure;

  17.    NVIC_InitStruct.NVIC_IRQChannel = PVD_IRQn;
  18.    NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 0;
  19.    NVIC_InitStruct.NVIC_IRQChannelSubPriority = 2;
  20.    NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;


  21.    NVIC_Init(&NVIC_InitStruct);//允许中断
  22.         
  23.          EXTI_ClearITPendingBit(EXTI_Line16);
  24.     EXTI_InitStructure.EXTI_Line = EXTI_Line16;
  25.     EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
  26.     EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising_Falling;//EXTI_Trigger_Falling   ;//EXTI_Trigger_Rising;
  27.     EXTI_InitStructure.EXTI_LineCmd = ENABLE;
  28.     EXTI_Init(&EXTI_InitStructure);

  29.         
  30.         
  31.           // 以下PVD_Init 一份.  main函数在 PVD_Init();前一份
  32.     PWR_PVDLevelConfig(PWR_PVDLevel_2V5);
  33.     PWR_PVDCmd(ENABLE);
  34.     RCC_APB1PeriphClockCmd( RCC_APB1Periph_PWR, ENABLE); //_PWR, ENABLE);
  35. }
复制代码


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则