STM32之PVD电压检测

发布者:Serendipity99最新更新时间:2024-10-17 来源: cnblogs关键字:STM32  PVD  电压检测 手机看文章 扫描二维码
随时随地手机看文章

如果VDD或者VDDA电压高于或低于PVD设定阈值都产生中断,表现为每中断一次,LED1就亮变灭或者灭变亮。

  1. /********************************************************************************

  2.   * @file PWR/PVD/main.c

  3.   * @author MCD Application Team

  4.   * @version V3.4.0

  5.   * @date 10/15/2010

  6.   * @brief Main program body.

  7.   ******************************************************************************/

  8. /* Includes ------------------------------------------------------------------*/

  9. #include 'stm32f10x.h'

  10. #include 'stm32_eval.h'


  11. void EXTI_Configuration(void);

  12. void NVIC_Configuration(void);


  13. /**

  14.   * @brief Main program.

  15.   * @param None

  16.   * @retval None

  17.   */

  18. int main(void)

  19. {

  20.   /*!< At this stage the microcontroller clock setting is already configured,

  21.        this is done through SystemInit() function which is called from startup

  22.        file (startup_stm32f10x_xx.s) before to branch to application main.

  23.        To reconfigure the default setting of SystemInit() function, refer to

  24.        system_stm32f10x.c file

  25.      */

  26.   /* Initialize LEDs and Key Button mounted on STM3210X-EVAL board */

  27.   STM_EVAL_LEDInit(LED1);

  28.   

  29.   GPIO_SetBits(GPIOC, GPIO_Pin_7);


  30.   /* Enable PWR and BKP clock */

  31.   RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE);//电源管理部分时钟开启


  32.   /* Configure EXTI Line to generate an interrupt on falling edge */

  33.   EXTI_Configuration();


  34.   /* NVIC configuration */

  35.   NVIC_Configuration();

  36.  

  37.   /* Configure the PVD Level to 2.9V */

  38.   PWR_PVDLevelConfig(PWR_PVDLevel_2V9);// 设定监控阀值


  39.   /* Enable the PVD Output */

  40.   PWR_PVDCmd(ENABLE);// 使能PVD

  41.   

  42.   while (1)

  43.   {

  44.   }

  45. }


  46. /**

  47.   * @brief Configures EXTI Lines.

  48.   * @param None

  49.   * @retval None

  50.   */

  51. void EXTI_Configuration(void)

  52. {

  53.   EXTI_InitTypeDef EXTI_InitStructure;


  54.   /* Configure EXTI Line16(PVD Output) to generate an interrupt on rising and

  55.      falling edges */

  56.   EXTI_ClearITPendingBit(EXTI_Line16);

  57.   EXTI_InitStructure.EXTI_Line = EXTI_Line16;// PVD连接到中断线16上

  58.   EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;//使用中断模式

  59.   EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising_Falling;//电压上升或下降越过设定阀值时都产生中断。

  60.   EXTI_InitStructure.EXTI_LineCmd = ENABLE;// 使能中断线

  61.   EXTI_Init(&EXTI_InitStructure);// 初始

  62. }


  63. /**

  64.   * @brief Configures NVIC and Vector Table base location.

  65.   * @param None

  66.   * @retval None

  67.   */

  68. void NVIC_Configuration(void)

  69. {

  70.   NVIC_InitTypeDef NVIC_InitStructure;

  71.   

  72.   /* Configure one bit for preemption priority */

  73.   NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);//中断优先级配置

  74.   

  75.   /* Enable the PVD Interrupt */ //设置PVD中断

  76.   NVIC_InitStructure.NVIC_IRQChannel = PVD_IRQn;

  77.   NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;

  78.   NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;

  79.   NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

  80.   NVIC_Init(&NVIC_InitStructure);

  81. }

  82. /******************* (C) COPYRIGHT 2010 STMicroelectronics *****END OF FILE****/

注意:GPIO驱动LED模式为GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;还是推挽输出。

中断处理函数:


  1. void PVD_IRQHandler(void)

  2. {

  3. if(EXTI_GetITStatus(EXTI_Line16) != RESET)

  4. {

  5. /* LED1翻转 */

  6. STM_EVAL_LEDToggle(LED1);


  7. /* Clear the Key Button EXTI line pending bit */

  8. EXTI_ClearITPendingBit(EXTI_Line16);

  9. }

  10. }



关键字:STM32  PVD  电压检测 引用地址:STM32之PVD电压检测

上一篇:STM32硬件电路设计注意事项
下一篇:STM32之Flash

推荐阅读最新更新时间:2024-11-09 10:36

基于STM32的平衡小车设计过程分享(3)
一、简介 续上文,电机驱动、MPU6050驱动均已完成,接下来我们给他加上PID让它站起来 二、PID控制 我们将小车PID控制函数放到MPU6050中断函数中,每当MPU6050有数据输出时,引脚INT有相应的电平输出。依次来触发外部中断作为控制周期。保持MPU6050数据的实时性。 2.1直立环控制 通过传入的KP、KD参数,让平衡车的pitch轴保持在水平位置。 直立环是用于控制机械系统中垂直方向运动的一种控制器。在这些应用中,垂直方向的运动通常是非常稳定的,因此I控制器的积分作用并不是必需的。而PD控制器可以提供足够的控制性能,同时避免了可能出现的积分饱和问题,因此在直立环中通常只使用PD控制器,而不使用I控
[单片机]
基于<font color='red'>STM32</font>的平衡小车设计过程分享(3)
STM32片内RTC亚秒特性以及应用演示的分享
绝大多数STM32系列里的RTC都具有亚秒【或称子秒】计数单元。为了了解亚秒特性及功能,不妨先看RTC的功能框图。本文中的有关截图若无特别说明均来自STM32L4系列参考手册。 RTC的时钟源【RTCCLK】可以是LSE、LSI或者HSE/32,由RTCCLK最终变成日历的秒脉冲驱动信号经过了2次分频。先经过上图中A处的异步分频单元,默认分频系数是128,形成ck_apre时钟,默认情况下该时钟频率为256Hz;然后该时钟脉冲来到图中B处的同步分频单元,默认分频系数为256,最终形成1Hz的秒脉冲【ck_spre】到日历单元。关于两分频单元分频系数的配置,通过对RTC_PRER寄存器的相关位编程实现。 其中异步分频系数配
[单片机]
<font color='red'>STM32</font>片内RTC亚秒特性以及应用演示的分享
ch32可以用keil吗?ch32和stm32编程有区别吗?
CH32是山外电子推出的一款基于RISC-V架构的32位微控制器芯片,其具有性价比高的特点,适用于一些成本敏感的产品。而STM32则是意法半导体推出的一款基于ARM Cortex-M架构的32位微控制器芯片,其具有丰富的外设资源和高性能的特点,适用于一些性能要求较高的产品。本文将对CH32和STM32进行比较,并回答读者的问题:ch32可以用keil吗?ch32和stm32编程有区别吗? 一、CH32和STM32比较 1.架构比较 CH32采用了RISC-V架构,而STM32采用了ARM Cortex-M架构。RISC-V架构是一种开源的指令集架构,其具有可定制性强、可移植性好等优点,但是目前在市场上的占有率较低。ARM Cort
[单片机]
STM32】HAL库-嵌套向量中断控制器NVIC
中断与异常 嵌套向量中断控制器,简称为NVIC,其支持为数众多的系统异常和外部中断。 Cortex-M3支持256个中断。 中断/异常类型表如下 编号为 1-15 的称为系统异常(注意:没有编号为 0 的异常),大于等于 16 的称为(外部)中断。 除了个别异常的优先级被定死外,其它中断/异常的优先级都是可编程的 外部中断表如下 优先级 在 CM3 中,优先级对于异常来说很关键的,它会决定一个异常是否能被掩蔽,以及在未掩蔽的情况下何时可以响应。优先级的数值越小,则优先级越高。 CM3 支持中断嵌套,使得高优先级异常会抢占(preempt)低优先级异常。 有3个系统异常的优先级是固定的,并且是负数,分别
[单片机]
【<font color='red'>STM32</font>】HAL库-嵌套向量中断控制器NVIC
浅析STM32之GPIO结构
  1、STM32的GPIO结构图   GPIO共有8中设置模式:输入浮空、输入上拉、输入下拉、模拟输入、开漏输出、推挽式输出、推挽式复用功能,开漏复用功能,共4种输入,2种输入,2种复用功能。   2、模式说明   ①浮空输入   图中施密特触发器是开启的,IO口的状态可以直接送到输入寄存器中,CPU可以直接读取输入寄存器;   在上图中,阴影的部分处于不工作状态,尤其是下半部分的输出电路,实际上是与端口处于隔离状态。   黄色的高亮部分显示了数据传输通道,外部的电平信号通过左边编号1的IO端口进入STM32,经过编号2的施密特触发器的整形送入编号3的输入数据寄存器,在输入数据寄存器的另一端编号4,CPU可以随时读出IO端口的电
[单片机]
基于STM32单片机的瓦斯监测与控制
本文设计出这一款基于STM32单片机煤矿瓦斯监测控制管理系统,包括甲烷气体传感器电路、温湿度传感器电路、Wi-Fi模块电路、报警电路、继电器控制电路及显示电路。 STM32单片机作为核心,具有监测煤矿矿井温湿度、瓦斯浓度参数的功能,并具有瓦斯浓度超限报警功能;具有自动强制通风功能;采集数据可通过液晶屏显示。监控数据和告警信息可以通过Wi-Fi模块传输到远程机智云端。 系统方案设计 本次设计的主要核心是机智云平台对煤矿瓦斯安全环境的监控,使用移植机智云GAgent的Wi-Fi/GPRS模组建立桥梁,使煤矿瓦斯监测系统采集的数据与机智云互联互通。煤矿瓦斯监测系统与机智云数据交互图如图1所示。 总体方案设计 煤矿瓦
[单片机]
基于<font color='red'>STM32</font>单片机的瓦斯监测与控制
关于STM32单片机的介绍
意法半导体STM32系列专为要求高性能、低成本、低功耗的嵌入式应用设计的ARM Cortex®-M0,M0+,M3, M4和M7内核的32位MCU。意法半导体的STM32基本型系列、增强型系列、USB基本型系列、互补型系列;沿用增强型系列的72兆赫兹处理频率。内存包括64KB到256KB闪存和 20KB到64KB嵌入式SRAM。采用LQFP64、LQFP100和LFBGA100三种封装,不同的封装保持引脚排列一致性,结合STM32平台的设计理念,开发人员通过选择产品可重新优化功能、存储器、性能和引脚数量,以最小的硬件变化来满足个性化的应用需求。 下面主要介绍关于STM32常见问题。 1、AHB系统总线分为APB1(36MHz)
[单片机]
关于<font color='red'>STM32</font>单片机的介绍
STM32开发中的五大嵌入式系统
技术往往更新得非常快,并且总是让我们觉得学起来有难度而且有些迷茫。不过没有关系我们发烧友专注于在快乐中学习,要学习STM32,我们首先了解下五大嵌入式操作系统:μClinux、μC/OS-II、eCos、FreeRTOS和RT-thread。 μClinux μClinux是一种优秀的嵌入式Linux版本,从字面意思看是指微控制Linux。同标准的Linux相比,μClinux的内核非常小,但是它仍然继承了Linux操作系统的主要特性,包括良好的稳定性和移植性、强大的网络功能、出色的文件系统支持、标准丰富的API,以及TCP/IP网络协议等。 μClinux操作系统的中断管理是将中断处理分为两部分:顶半处理和底半处理。在顶半处
[单片机]
<font color='red'>STM32</font>开发中的五大嵌入式系统
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved