单片机 > 单片机程序设计 > 详情

stm32PVD电源监测使用

发布时间:2024-11-15 发布时间:
|
  1. 正确操作步骤:

  2. 开时钟;配置电源检测;配置中断优先级

  3. /* Includes ------------------------------------------------------------------*/

  4. #include "stm32f10x.h"

  5. #include "stm32_eval.h"


  6. void EXTI_Configuration(void);

  7. void NVIC_Configuration(void);



  8. int main(void)

  9. {

  10.    

  11.   

  12.   STM_EVAL_LEDInit(LED1);

  13.   

  14.   GPIO_SetBits(GPIOC, GPIO_Pin_7);


  15.   /* Enable PWR and BKP clock */

  16.   RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE);//电源管理部分时钟开启 


  17.   

  18.   EXTI_Configuration();


  19.   

  20.   NVIC_Configuration();

  21.  

  22.   

  23.   PWR_PVDLevelConfig(PWR_PVDLevel_2V9);// 设定监控阀值 


  24.   /* Enable the PVD Output */

  25.   PWR_PVDCmd(ENABLE);// 使能PVD 

  26.   

  27.   while (1)

  28.   {

  29.   }

  30. }



  31. void EXTI_Configuration(void)

  32. {

  33.   EXTI_InitTypeDef EXTI_InitStructure;


  34.   

  35.   EXTI_ClearITPendingBit(EXTI_Line16); 

  36.   EXTI_InitStructure.EXTI_Line = EXTI_Line16;// PVD连接到中断线16上 

  37.   EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;//使用中断模式 

  38.   EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising_Falling;//电压上升或下降越过设定阀值时都产生中断。

  39.   EXTI_InitStructure.EXTI_LineCmd = ENABLE;// 使能中断线

  40.   EXTI_Init(&EXTI_InitStructure);// 初始

  41. }



  42. void NVIC_Configuration(void)

  43. {

  44.   NVIC_InitTypeDef NVIC_InitStructure;

  45.   

  46.   

  47.   NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);//中断优先级配置 

  48.   

  49.    //设置PVD中断

  50.   NVIC_InitStructure.NVIC_IRQChannel = PVD_IRQn;

  51.   NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;

  52.   NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;

  53.   NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

  54.   NVIC_Init(&NVIC_InitStructure);

  55. }

注意:GPIO驱动LED模式为GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;还是推挽输出。

中断处理函数:

  1. void PVD_IRQHandler(void)

  2. {

  3. if(EXTI_GetITStatus(EXTI_Line16) != RESET)

  4. {

  5. STM_EVAL_LEDToggle(LED1);

  6. EXTI_ClearITPendingBit(EXTI_Line16);

  7. }

  8. }


关键字:stm32  PVD  电源监测 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
STM32学习笔记4:外部中断