首页 > 编程语言 >PVD-CH32可编程电压控制器PVD中断的使用方法

PVD-CH32可编程电压控制器PVD中断的使用方法

时间:2023-04-26 17:22:50浏览次数:54  
标签:PWR CH32 void NVIC InitStructure PVD 可编程 EXTI

  可编程电压监视器PVD,主要被用于监控系统主电源的变化,与电源控制寄存器PWR_CTLR 的PLS[2:0]所设置的门槛电压相比较,配合外部中断寄存器(EXTI)设置,可产生相关中断,以便及时通知系统进行数据保存等掉电前操作。

配置方法如下:

  先使能PWR时钟,然后设置电压监视阈值,随后使能PVDE开启电源电压监视功能。

1 void PVD_Init(void)
2 {
3   RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);
4   PWR_PVDLevelConfig(PWR_PVDLevel_2V9);
5   PWR_PVDCmd(ENABLE);
6 }

  PVD功能内部连接EXTI模块的第16 线的上升/下降边沿触发设置,开启此中断(配置EXTI),当VDD下降到PVD阀值以下或上升到PVD 阀值之上时就会产生PVD 中断。设置为EXTI_Trigger_Rising会在供电电压低于PWR_PVDLevelConfig设置的值时进入PVD中断,此时PWR_FLAG_PVDO会被置1;设置为EXTI_Trigger_Falling会在供电电压高于PWR_PVDLevelConfig设置的值时进入PVD中断,此时PWR_FLAG_PVDO会被置0。

 1 void PVD_NVIC_Config(void)
 2 {
 3   EXTI_InitTypeDef EXTI_InitStructure = {0};
 4   NVIC_InitTypeDef NVIC_InitStructure = {0};
 5 
 6   EXTI_InitStructure.EXTI_Line = EXTI_Line16;
 7   EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
 8   EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
 9   EXTI_InitStructure.EXTI_LineCmd = ENABLE;
10   EXTI_Init(&EXTI_InitStructure);
11 
12   NVIC_InitStructure.NVIC_IRQChannel = PVD_IRQn;
13   NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
14   NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
15   NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
16   NVIC_Init(&NVIC_InitStructure);
17 }

  中断服务函数如下,可在中断服务函数中添加读写Flash操作已保存重要数据。注意RISCV芯片需要添加硬件压栈声明,否则只会进一次中断。

  硬件压栈声明:

1 void PVD_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast")));

  中断服务函数:

 1 void PVD_IRQHandler(void)
 2 {
 3     if(PWR_GetFlagStatus(PWR_FLAG_PVDO))
 4     {
 5         PWR_ClearFlag(PWR_FLAG_PVDO);
 6     }
 7     else {
 8 
 9     }
10     EXTI_ClearITPendingBit(EXTI_Line16); /* Clear Flag */
11 }    

标签:PWR,CH32,void,NVIC,InitStructure,PVD,可编程,EXTI
From: https://www.cnblogs.com/wchmcu/p/17356708.html

相关文章

  • CH32V307 DAC输出
    1、关于DACCH32V307的数字/模拟转换模块(DAC),包含2个可配置8/12位数字输入转换2路模拟电压输出的转换器。内置三角波、噪声波形发生器,支持多种事件触发转换,DMA功能等。 2、关于DACDMA使用关于DMA功能,手册介绍如下:即使用DACDMA的时候,必须使用定时器触发或EXTI触发,程序......
  • 30-组合可编程逻辑器件-PLD
    组合可编程逻辑器件1.PLD的结构1.1结构1.2表示方法实心点表示连接,但是不可编程×点表示连接,但是可以编程2.编程技术2.1熔丝工艺每个输入线连接二极管和保险丝2.2电擦除3.PLD分类低密度PLD和高密度PLD低密度PLD又分为:PROM/PLA/PAL/GAL高密度PLD又分为:......
  • CH32V系列——关于指定函数在RAM中运行
     注意:以下修改,都只是在原来基础上添加,不做删减在启动文件做修改,增加下列代码:2:/*LoaddatasectionfromflashtoRAM*/laa0,_highcode_lmalaa1,_highcode_vma_startlaa2,_highcode_vma_endbgeua1,a2,2f1:lwt0,(a0)swt0,(a1)addia0,a0,4addia1,......
  • 可编程逻辑器件和数字系统设计初步
    可编程逻辑器件传统通用逻辑器件:逻辑规模小、占用印刷板面积大、功耗大、可靠性低专用集成电路ASIC(ApplicationSpecificIntegratedCircuit),针对特定用途可编程逻辑器件PLD(ProgrammableLogicDevice),属于ASIC:可由设计者自己完成逻辑功能,系统集成度高、可靠性高、设计过程灵活......
  • CH32V208资源说明
    概述:本文对CH32V208的FLASH资源进行讲解,具体以芯片手册为准。FLASH与RAM资源:图一:图二:CH32V208芯片的蓝牙库绝大部分放在慢速FLASH中,只有少部分放在了128K这个快速FLASH中。因此用户使用,128K的快速FLASH基本可自定义使用。CH32V208主频144M,但是FLASH运行的主频需要在60M以......
  • IWDG-CH32FV2x_V3x--低功耗模式的看门狗处理
    芯片睡眠模式下看门狗的使用:     由于独立看门狗的特殊性,一旦开启就不能再被关闭,除非发生复位。而睡眠时程序又是停止运行的,这样就无法及时喂狗,从而导致看门狗复位。那么就需要软件上做些特殊   处理     方法1:在低功耗模式下进行RTC定时唤醒CPU进行......
  • AFIO-CH32FV2x_V3x--重映射功能的使用以及常见问题
    重映射功能    外设引脚重映射的概念,即一个外设的引脚除了具有默认的端口外,还可以通过设置重映射寄存器的方式,把这个外设的引脚映射到其它的端口。    简单的讲就是把管脚的外设功能映射到另一个管脚,但不是可以随便映射的。部分重映射&完全重映射部分重映......
  • CH582 CH583 CH32V208 CH579 (BLE & ETH)知识分享目录清单
    功耗测试CH32V208系列单片机的低功耗测试(附部分代码供参考)CH582开启睡眠模式下低功耗测试 BLEBLE连接失败错误码原因DisconnectReason:xx总结 以太网CH32V20......
  • CH32V203C8T6使用SPI2出现的问题
    最近调试一个项目CAN转SPI(SPI主机),另外一个SPI从机接收使用到SPI2,一直测试不通,特此记录首先使用沁恒官方给的历程(点击即可下载该历程)可以正常跑通,使用自己的程序 一样......
  • 微机原理与系统设计笔记7 |常用芯片接口技术、中断系统与可编程中断控制器8259A
    打算整理汇编语言与接口微机这方面的学习记录。本部分介绍常用芯片接口技术、中断系统与可编程中断控制器8259A。参考资料西电《微机原理与系统设计》周佳社西交......