• 正文
    • 1、关于LVD功能的描述
    • 2、相关寄存器
    • 3、LVD中断
    • 4、LVD阈值波形图
    • 5、相关库函数
    • 6、核心代码实现
    • 7、测试
  • 相关推荐
申请入驻 产业图谱

GD32F4 LVD(低电压监测)功能使用

01/02 14:00
2912
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

1、关于LVD功能的描述

LVD的功能是检测VDD/VDDA供电电压是否低于低电压检测阈值,该阈值由电源控制寄存器(PMU_CTL)中的LVDT[2:0]位进行配置。LVD通过LVDEN置位使能,位于电源状态寄存器(PMU_CS)中的LVDF位表示低电压事件是否出现,该事件连接至EXTI的第16线,用户可以通过配置EXTI的第16线产生相应的中断。

2、相关寄存器

主要关注PMU_CTL寄存器中的·LVDT和LVDEN字段

3、LVD中断

4、LVD阈值波形图

LVD阈值波形图显示了VDD / VDDA供电电压和LVD输出信号的关系。(LVD中断信号依赖于EXTI第16线的上升或下降沿配置)。迟滞电压Vhyst值为100mV。
这里要特别说明下:电压上升时,配置的是下降沿,电压下降时,配置的是上升沿

5、相关库函数

void pmu_lvd_select(uint32_t lvdt_n); //阈值配置,同时使能lvd功能
void pmu_lvd_disable(void); //失能lvd功能

6、核心代码实现

void lvd_init(void){
    pmu_lvd_select(PMU_LVDT_5);

    nvic_irq_enable(LVD_IRQn,13U,0U);

    exti_init(EXTI_16, EXTI_INTERRUPT, EXTI_TRIG_RISING);
    exti_interrupt_flag_clear(EXTI_16);
    exti_interrupt_enable(EXTI_16);
}

voidLVD_IRQHandler(void){
    if(exti_interrupt_flag_get(EXTI_16)== SET){
        exti_interrupt_flag_clear(EXTI_16);
        dbg_info("%s","low voltagern");
        /* 此处加入应用代码 */
    }
}

7、测试

使用可调稳压电源,给mcu供电,将电压调至设定的阈值,即可产生LVD中断。

 

点赞
收藏
评论
分享
加入交流群
举报

相关推荐

登录即可解锁
  • 海量技术文章
  • 设计资源下载
  • 产业链客户资源
  • 写文章/发需求
立即登录

公众号:物联网思考;主要记录、分享、思考开发中遇到的技术小细节,涉及嵌入式单片机、C语言、传感器、低功耗物联网等。偶尔也可能是程序员健康、职场潜规则、生活思考、行业讨论。