STM32
直播中

王超

8年用户 1399经验值
私信 关注
[问答]

STM8L的PVD低电压检测该怎么写?

看了stm8l的资料,知道了可以通过PVD直接对低电压进行程序操作,省去了AD转换那些麻烦问题。但是我从没使用过,看了网上有人发过STM32的PVD电压检测程序,一头雾水。请大家指导下STM8L的PVD低电压检测该怎么写,使用官方固件库,比如低于2.65V就调用LED闪。
void LED_work(void)
{...}
void PWR_INC(void)                                        //PWR初始化
{
  PWR_PVDLevelConfig(PWR_PVDLevel_2V65);                  //PVD设置2.65V  
  PWR_PVDCmd(ENABLE);                                     //PVD使能
  PWR_PVDITConfig(ENABLE);                                //PVD中断使能
__enable_interrupt();                                    //全局中断使能
}
下面该怎么办?[/td]
以下内容为评论
[td]#define LED1_L()   (GPIO_ResetBits(GPIOD,GPIO_Pin_6))

void CLK_INC(void)                                        //时钟配置
{
  CLK_SYSCLKDivConfig (CLK_SYSCLKDiv_16);                    //时钟16分频
}

void GPIO_INC(void)                                       //IO口初始化
{
  GPIO_Init(GPIOD,GPIO_Pin_6,GPIO_Mode_Out_PP_High_Slow);
}

void delayms(u16 i)
{
    u16 j;
    for(;i > 0;i --)
        for(j = 500;j > 0;j --);           //延时
}


void PWR_INC(void)                                        //PWR初始化
{
  PWR_PVDLevelConfig(PWR_PVDLevel_2V85);                  //PVD设置2.85V
  PWR_PVDCmd(ENABLE);                                     //PVD使能
  PWR_PVDITConfig(ENABLE);                                //PVD中断使能
}

void main(void)
{
    CLK_INC();
    GPIO_INC();
    PWR_INC();                                              //进入中断点亮LED
  __enable_interrupt();                                    //全局中断使能
  
  while (1)
  {
   
  }
}

回帖(1)

李晓鹏

2024-4-18 09:47:20
在固件库里定义了:
enum   PWR_FLAG_TypeDef { PWR_FLAG_PVDOF = (uint8_t)0x40, PWR_FLAG_ ...

“PVDO是0代表高过配置电压,1代表低于配置电压”当高于阀值电压时,表示正常,PVDO为0;低于阀值时PVDO置1,产生中断,起到监测的目的;之后在中断函数里写保护代码就可以了啊
举报

更多回帖

发帖
×
20
完善资料,
赚取积分