打印
[综合信息]

【分享】HC32F072的LVD模块试用心得(用于掉电检测)

[复制链接]
1894|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
caizhiwei|  楼主 | 2020-9-2 14:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
HC, stc, tc, VDC
挺好用的,直接就用上了,看看手册就搞定了!最大的优点是可以选择不同的引脚。

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输出不受限制

}

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


使用特权

评论回复
评论
martinhu 2020-9-3 09:42 回复TA
掉电检测需要配置 上升沿……是因为LVD的内部比较器,检测端是反相输入的,参考电压在正相输入…… 
沙发
zeshoufx| | 2020-9-2 15:21 | 只看该作者
谢谢分享【HC32F072的LVD模块试用心得】

使用特权

评论回复
板凳
不知道取啥名| | 2020-12-30 11:13 | 只看该作者
谢谢分享

使用特权

评论回复
地板
aoo| | 2020-12-31 17:16 | 只看该作者
千人QQ群:206032332

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

100

主题

857

帖子

14

粉丝