关于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. (十四)struts2的国际化

    一.国际化的概念 国际化是指web程序在运行时,根据客户端请求的国家.语言的不同而显示不同的界面. 例如,如果请求来自中文客户端,则页面的显示,提示信息等都是中文,如果是英文客户端,则显示英文信息.  ...

  2. Linux 文件基本属性与目录管理 (chmod chown ls cp mv cat )

    Linux 文件基本属性 Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限. 为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的 ...

  3. 【笔记】《算法竞赛入门》习题7-6 UVa12113_重叠的正方形

    title: 习题7-6 UVa12113_重叠的正方形 date: 2021-01-31 19:08:00 categories: 算法竞赛入门 tags: 数据结构 算法 UVa <算法竞赛 ...

  4. C语言-内存函数的实现(二)之memmove

    C语言中的内存函数有如下这些 memcpy memmove memcmp memset 下面看看memmove函数 memmove 为什么会需要memmove函数? int main() { int ...

  5. SpringCloud(三)Hystrix断路器

    Hystrix断路器 概述 分布式系统面临的问题 复杂分布式体系结构中的应用程序有数十个依赖关系,每个依赖关系在某些时候将不可避免地失败 服务雪崩 多个微服务之间调用的时候,假设微服务A调用微服务B和 ...

  6. C++ 2.0新特性

    C++ standard之演化 C++ 98(1.0) C++ 03(TR1, technical Report 1) // 一个实验性的版本 C++ 11(2.0) C++ 14 此次记录涵盖了C+ ...

  7. Intel汇编语言程序设计学习-第六章 条件处理-中

    6.3  条件跳转 6.3.1  条件结构 在IA-32指令集中没有高级的逻辑结构,但无论多么复杂的结构,都可以使用比较和跳转指令组合来实现.执行条件语句包括两个步骤:首先,使用CMP,AND,SUB ...

  8. Portswigger web security academy:Reflected XSS

    Portswigger web security academy:Reflected XSS 目录 Portswigger web security academy:Reflected XSS Ref ...

  9. java之Collection

    java中的Collection可分为List.Set.Queue三种类型. 1.List. List会按照插入的顺序保存对象,较为常用的实现类有ArrayList,LinkedList和Vector ...

  10. 三、jmeter常用的元件及组件

    一.HTTP cookie Manager 用来储浏览器产生的用户信息,Stepping Thread Group 可用于模拟阶梯加压! 二.HTTP Cache Manager 缓存管理器(模拟浏览 ...