找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4009|回復: 0
打印 上一主題 下一主題
收起左側(cè)

STM32低壓監(jiān)測保護程序

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:85764 發(fā)表于 2015-7-17 23:47 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
STM32內(nèi)部自帶PVD功能,用于對MCU供電電壓VDD進行監(jiān)控。通過電源控制寄存器中的PLS[2:0]位可以用來設定監(jiān)控電壓的閥值,通過對外部電壓進行比較來監(jiān)控電源。當條件觸發(fā),需要系統(tǒng)進入特別保護狀態(tài),執(zhí)行緊急關閉任務:對系統(tǒng)的一些數(shù)據(jù)保存起來,同時對外設進行相應的保護操作。
源碼實現(xiàn): void PVD_Config(void)
{
   EXTI_InitTypeDef EXTI_InitStructure;
   NVIC_InitTypeDef NVIC_InitStructure;
   //掉電時鐘開啟,必須開啟
   RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);
  
   EXTI_StructInit(&EXTI_InitStructure);
   EXTI_InitStructure.EXTI_Line = EXTI_Line16; //PVD連接到中斷線16上
   EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;//使用中斷模式
   //EXTI_InitStructure.EXTI_Trigger的賦值可選項:
   //EXTI_Trigger_Rising---表示電壓從高下降到低于設定閥值時產(chǎn)生中斷;
   //EXTI_Trigger_Falling---表示電壓從低上升到高于設定閥值時產(chǎn)生中斷;
   //EXTI_Trigger_Rising_Falling---表示電壓上升或下降越過設定閥值時都產(chǎn)生中斷。
   EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;//電壓低于閥值時產(chǎn)生中斷
   EXTI_InitStructure.EXTI_LineCmd = ENABLE; // 使能中斷線
   EXTI_Init(&EXTI_InitStructure); //初始


NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//中斷優(yōu)先級分組,2及搶占,2級優(yōu)先
NVIC_InitStructure.NVIC_IRQChannel=PVD_IRQn;//設置中斷通道
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=2;//搶占優(yōu)先級2
NVIC_InitStructure.NVIC_IRQChannelSubPriority=1;//子優(yōu)先級1
NVIC_InitStructure.NVIC_IRQChannelCmd =ENABLE;//使能中斷
NVIC_Init(&NVIC_InitStructure);


PWR_PVDLevelConfig(PWR_PVDLevel_2V9); //設定監(jiān)控閥值:2.9V  
       PWR_PVDCmd(ENABLE); //使能PVD
}

void PVD_IRQHandler(void)
{
   if(EXTI_GetITStatus(EXTI_Line16)!=RESET)
   {
printf("電壓不足\n\r");
LED1(ON);
//用戶添加緊急處理代碼處
   }
   EXTI_ClearITPendingBit(EXTI_Line16);   //退出前清中斷標志位
}



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表