关于STM32的可编程电压检测器的使用方法

思维导图总览:

代码:

  1 #include "sys.h"
2 #include "delay.h"
3 #include "usart.h"
4 #include "led.h"
5 #include "oled.h"
6 #include "24cxx.h"
7 #include "w25qxx.h"
8
9 #include "key.h"
10 #include "adc.h"
11 #include "npa.h"
12 #include "bluetooth.h"
13 #include "rtc.h"
14
15 const u8 TEXT_Buffer[]={"SPI3 TEST"};
16
17 const u8 AT_Buffer[]={"AT\n\r"};
18 #define SIZE sizeof(TEXT_Buffer)
19 #define At_SIZE sizeof(AT_Buffer)
20
21 void PVD_Config(void);
22 int main(void)
23 {
24 PVD_Config();
25
26 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2
27 delay_init(168); //初始化延时函数
28 //uart_init(115200); //初始化串口波特率为115200
29 //AT24CXX_Init();
30 LED_Init(); //初始化LED
31 oled_init();
32 //W25QXX_Init();
33 KEY_Init();
34 //Adc_Init();
35 // NPAsensor_Bar_Init();
36 LED_Init();
37 LED0=1;
38 //My_RTC_Init(); //初始化RTC
39 //RTC_Set_WakeUp(RTC_WakeUpClock_CK_SPRE_16bits,0); //配置WAKE UP中断,1秒钟中断一次
40
41 //BLUT_Init();
42 //BLUT_SW=0;
43
44
45 //oled_memery_clear(0x00);
46 oled_display_chs((unsigned char *)"ok:",0,0,16,0);
47 oled_display_refresh();
48
49
50
51
52
53 while(1)
54 {
55
56 if(PWR_GetFlagStatus(PWR_FLAG_PVDO)==RESET)
57 {
58 oled_display_chs((unsigned char *)"reset:",0,32,16,0);
59 oled_display_refresh();
60 }
61 else
62 {
63 oled_display_chs((unsigned char *)"set:",0,46,16,0);
64 oled_display_refresh();
65 }
66 }
67 }
68 /**
69 00083 * @brief Configures the PVD resources.
70 00084 * @param None
71 00085 * @retval None
72 00086 */
73 void PVD_Config(void)
74 {
75 NVIC_InitTypeDef NVIC_InitStructure;
76 EXTI_InitTypeDef EXTI_InitStructure;
77
78 /* Enable PWR clock */
79 RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);
80
81 /* Configure one bit for preemption priority */
82 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
83
84 /* Enable the PVD Interrupt */
85 NVIC_InitStructure.NVIC_IRQChannel = PVD_IRQn;
86 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
87 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
88 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
89 NVIC_Init(&NVIC_InitStructure);
90 /* Configure EXTI Line16(PVD Output) to generate an interrupt on rising and
91 falling edges */
92 EXTI_ClearITPendingBit(EXTI_Line16);
93 EXTI_InitStructure.EXTI_Line = EXTI_Line16;
94 EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
95 EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising_Falling;//change EXTI_Trigger_Rising_Falling
96 EXTI_InitStructure.EXTI_LineCmd = ENABLE;
97 EXTI_Init(&EXTI_InitStructure);
98
99 /* Configure the PVD Level to 3 (PVD detection level set to 2.5V, refer to the
100 electrical characteristics of you device datasheet for more details) */
101 PWR_PVDLevelConfig(PWR_PVDLevel_5);
102
103 /* Enable the PVD Output */
104 PWR_PVDCmd(ENABLE);
105 }
106
107 /******************************************************************************/
108 /* STM32F4xx Peripherals Interrupt Handlers */
109 /* Add here the Interrupt Handler for the used peripheral(s) (PPP), for the */
110 /* available peripheral interrupt handler's name please refer to the startup */
111 /* file (startup_stm32f40xx.s.startup_stm32f427x.s). */
112 /******************************************************************************/
113
114 /**
115 * @brief This function handles the PVD Output interrupt request.
116 * @param None
117 * @retval None
118 */
119 void PVD_IRQHandler(void)
120 {
121 if(EXTI_GetITStatus(EXTI_Line16) != RESET)
122 {
123 /* Toggle LED1 */
124 // STM_EVAL_LEDToggle(LED1);
125 LED0=0;
126 oled_display_chs((unsigned char *)"low",0,16,16,0);
127 oled_display_refresh();
128
129
130
131 /* Clear the Key Button EXTI line pending bit */
132 EXTI_ClearITPendingBit(EXTI_Line16);
133 }
134 }

来源自 STM32官方的帮助文档,这部分资料在帮助文档中都有,而且有代码

关于STM32的可编程电压检测器的使用方法的更多相关文章

  1. Stm32外围模块编程初始化步骤

    Stm32外围模块编程初始化步骤: 一.外部中断 1)初始化 IO 口为输入. 这一步设置你要作为外部中断输入的 IO 口的状态,可以设置为上拉/下拉输入,也可以设置为浮空输入,但浮空的时候外部一定要 ...

  2. [转载]Javascript异步编程的4种方法

    NodeJs的最大特性就是"异步" 目前在NodeJs里实现异步的方法中,使用“回调”是最常见的. 其实还有其他4种实现异步的方法: 在此以做记录 --- http://www.r ...

  3. (转)javascript异步编程的四种方法

    本文转自:http://www.ruanyifeng.com/blog/2012/12/asynchronous%EF%BC%BFjavascript.html 作者:阮一峰 本文仅仅作为个人mark ...

  4. Javascript异步编程的4种方法

    你可能知道,Javascript语言的执行环境是"单线程"(single thread).   所谓"单线程",就是指一次只能完成一件任务.如果有多个任务,就必 ...

  5. Javascript 异步编程的4种方法

    你可能知道,Javascript语言的执行环境是"单线程"(single thread). 所谓"单线程",就是指一次只能完成一件任务.如果有多个任务,就必须排 ...

  6. C#脱离Halcon编程开发环境使用方法

    在没有安装Halcon开发程序(HDevelop (SSE2))的电脑上面编程,使C#脱离Halcon编程开发环境使用方法,除了按照Halcon与编程环境必须要做的设置步骤外,还需要做如下两个工作: ...

  7. Javascript 异步编程的4种方法详解

    你可能知道,Javascript语言的执行环境是"单线程"(single thread). 所谓"单线程",就是指一次只能完成一件任务.如果有多个任务,就必须排 ...

  8. iOS开发之动画编程的几种方法

    iOS开发之动画编程的几种方法 IOS中的动画总结来说有五种:UIView<block>,CAAnimation<CABasicAnimation,CATransition,CAKe ...

  9. 转:Javascript异步编程的4种方法

    你可能知道,Javascript语言的执行环境是"单线程"(single thread). 所谓"单线程",就是指一次只能完成一件任务.如果有多个任务,就必须排 ...

随机推荐

  1. 二、python学习-函数

    类型判断 1.type()直接获取类型 2.isinstance 用法一:isinstance(值,类型) 返回真或假 用法二:isinstance(值,(类型1,类型2 ...)) 有一个类型满足 ...

  2. Java常用类库与技巧

    Java异常 异常处理机制主要回答了三个问题 What:异常类型回答了什么被抛出 Where:异常堆栈跟踪回答了在哪抛出 Why:异常信息回答了为什么被抛出 Java的异常体系

  3. 【CTF】图片隐写术 · 修复被修改尺寸的PNG图片

    前言 今天我们想来介绍一下关于图片隐写相关处理,以及修复被修改尺寸的PNG图片. 关于PNG图片的相关处理,是CTF Misc图片隐写术中极为基础的一项操作,笔者这里是想要提一些做题过程中发现的小技巧 ...

  4. 从西天取经的九九八十一难来看Java设计模式:模板方法模式

    目录 示例 模板方法模式 定义 意图 主要解决问题 适用场景 优缺点 西天取经的九九八十一难 示例 当我们设计一个类时,我们能明确它对外提供的某个方法的内部执行步骤, 但一些步骤,不同的子类有不同的行 ...

  5. 网络编程Netty入门:Netty简介及其特性

    目录 Netty的简介 Netty的特性 Netty的整体结构 Netty的核心组件 Netty的线程模型 结束语 Netty的简介 Netty是一个java开源框架,是基于NIO的高性能.高可扩展性 ...

  6. JVM小册(1)------jstat和Parallel GC日志

    JVM小册(1)------jstat和Parallel GC日志 一. 背景 在生产环境中,有时候会遇到OOM的情况,抛开Arthas 等比较成熟的工具以外,我们可以使用java 提供的jatat和 ...

  7. 三个dom xss常用tips

    分享dom xss的三个案例 (1)javascript里面过滤单引号和双引号? 搭建环境: 只是过滤了单引号和双引号是可以xss的: 使用<>闭合script即可 </script ...

  8. 【工具类】Stream流构建指定长度的时间集合

    package com.gabriel.stage.utils; import cn.hutool.core.date.DateUnit; import cn.hutool.core.date.Dat ...

  9. 技术面试问题汇总第003篇:猎豹移动反病毒工程师part3

    从现在开始,面试的问题渐渐深入.这次的三个问题,都是对PE格式的不断深入的提问.从最初的概念,到病毒对PE格式的利用,再到最后的壳的问题.这里需要说明的是,由于壳是一个比较复杂的概念,面试中也仅仅只能 ...

  10. hdu1686 最大匹配次数 KMP

    题意:      给你两个串,问你串a在串b中出现了多少次. 思路:       直接匹配,KMP时匹配到匹配串的最后一个的时候不用跳出,直接匹配就行了,最后一个'/0'不会和目标串匹配,所以经过ne ...