LVD 简介
LVD 可用于监测 VCC 及芯片管脚的电压。当被监测电压与 LVD 阈值的比较结果满足
触发条件时,
LVD 会产生中断或复位信号,用户可根据该信号执行一些紧急任务。
LVD 具有以下特性:
 4 路监测源, AVCCPC13PB08PB07
 16 阶阈值电压, 1.8V~3.3V 可选;
 8 种触发条件,高电平、上升沿、下降沿组合;
 2 种触发结果,复位、中断;
 8 阶滤波配置,防止误触发;
具备迟滞功能,强力抗干扰。  

关键核心代码:
void BSP_Lvd_Init(void)
  • {
  •     stc_lvd_cfg_t stcLvdCfg;
  •     DDL_ZERO_STRUCT(stcLvdCfg);     //变量清0
  •     Sysctrl_SetPeripheralGate(SysctrlPeripheralVcLvd, TRUE);    //开LVD时钟
  •     stcLvdCfg.enAct        = LvdActMskInt;              ///< 配置触发产生中断
  •     stcLvdCfg.enInputSrc   = LvdInputSrcMskVCC;        ///< 配置LVD输入源AVCC
  •     stcLvdCfg.enThreshold  = LvdMskTH3_3V;              ///< 配置LVD阈值电压
  •     stcLvdCfg.enFilter     = LvdFilterMskEnable;        ///< 滤波使能
  •     stcLvdCfg.enFilterTime = LvdFilterMsk28_8ms;        ///< 滤波时间设置
  •     stcLvdCfg.enIrqType    = LvdIrqMskRise;             ///< 中断触发类型
  •     Lvd_Init(&stcLvdCfg);
  •     ///< 中断开启
  •     Lvd_EnableIrq();
  •     Lvd_ClearIrq();
  •     EnableNvic(VC0_1_2_LVD_IRQn, IrqLevel3, TRUE);              ///< NVIC 中断使能
  •     ///< LVD 模块使能
  •     Lvd_Enable();
  • }
  • ///< LVD 中断服务函数,写参数wheel.jinwei到flash.
  • void Lvd_IRQHandler(void)
  • {
  •     Lvd_ClearIrq();
  •     //delay1ms(100);
  •     //Gpio_WriteOutputIO(GpioPortA, GpioPin3, TRUE);    //中断受触发设置限制,LVD输出不受限制
  • }
  • 复制代码

    [color=rgb(51, 102, 153) !important]复制代码


    掉电检测需要配置 上升沿,原因是内部有反相器了。

       挺好用的,直接就用上了,看看手册就搞定了!最大的优点是可以选择不同的引脚。

    最后总结一下,本来9月份做了这个实验的,后来又忘记了,12月又调试了一遍。记性太差,哈哈