STM32外部中断线编程
#include "ExtiConfig.h" unsigned char key1Down = 0;
unsigned char key2Down = 0; /**************************************************************
**
**
***************************************************************/
void EXTI_Config(void)
{
EXTI_InitTypeDef extiStruct;
NVIC_InitTypeDef nvicStruct;
GPIO_InitTypeDef GPIOInit; // NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x00);
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//先4 从4
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD | RCC_APB2Periph_AFIO, ENABLE); //GPIOA 配置
GPIOInit.GPIO_Mode = GPIO_Mode_IPU; //PA0 上拉输入
GPIOInit.GPIO_Pin = GPIO_Pin_3; //LF
GPIOInit.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOD, &GPIOInit); GPIOInit.GPIO_Mode = GPIO_Mode_IPU; //PB5 上拉输入
GPIOInit.GPIO_Pin = GPIO_Pin_13;
GPIOInit.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOC, &GPIOInit); GPIO_EXTILineConfig(GPIO_PortSourceGPIOD, GPIO_PinSource3);
GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource13); extiStruct.EXTI_Line = EXTI_Line3 | EXTI_Line13;
extiStruct.EXTI_Mode = EXTI_Mode_Interrupt;
extiStruct.EXTI_Trigger = EXTI_Trigger_Falling;
extiStruct.EXTI_LineCmd = ENABLE;
EXTI_Init(&extiStruct);
EXTI_ClearITPendingBit(EXTI_Line3);
EXTI_ClearITPendingBit(EXTI_Line13); //外部中断线0,中断复用PA0
nvicStruct.NVIC_IRQChannel = EXTI3_IRQn;
nvicStruct.NVIC_IRQChannelPreemptionPriority = 1;
nvicStruct.NVIC_IRQChannelSubPriority = 1;
nvicStruct.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&nvicStruct); nvicStruct.NVIC_IRQChannel = EXTI15_10_IRQn;
nvicStruct.NVIC_IRQChannelPreemptionPriority = 1;
nvicStruct.NVIC_IRQChannelSubPriority = 0;
nvicStruct.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&nvicStruct);
} /**************************************************************
** 外部中断函数,中断线为13
**
***************************************************************/
void EXTI_Line13IRQ(void)
{
if(EXTI_GetITStatus(EXTI_Line13)!=RESET)
{
if(key1Down==0)
{
key1Down = 1;
}
EXTI_ClearITPendingBit(EXTI_Line13); //清除 LINE 上的中断标志位
}
} /**************************************************************
** 外部中断函数,中断线为13
**
***************************************************************/
void EXTI_Line3IRQ(void)
{
if(EXTI_GetITStatus(EXTI_Line3)!=RESET)
{
if(key2Down==0)
{
key2Down = 1;
}
EXTI_ClearITPendingBit(EXTI_Line3); //清除 LINE 上的中断标志位
}
}
一些全局的中断标志key1Down和key2Down是为了给工程的其他部分的程序提供一些逻辑。
STM32外部中断线编程的更多相关文章
- stm32中断优先级管理与外部中断编程
stm32中断优先级管理与外部中断编程 中断优先级管理 外部中断编程 官方示例程序 exti.h #ifndef __EXTI_H #define __EXIT_H #include "sy ...
- Stm32外围模块编程初始化步骤
Stm32外围模块编程初始化步骤: 一.外部中断 1)初始化 IO 口为输入. 这一步设置你要作为外部中断输入的 IO 口的状态,可以设置为上拉/下拉输入,也可以设置为浮空输入,但浮空的时候外部一定要 ...
- STM32F103外部中断编程
STM32F103外部中断编程 中断,顾名思义就是停下手头的活,去干另外一件急活,干完急活然后回来继续干手头的活. 单片机和人一样,有时候也有更急的程序需要执行,执行完之后再回来执行之前正在执行的 ...
- STM32 外部中断详解(原理+配置代码)
本文介绍了STM32基于标准外设库的外部中断配置,以及基于参考手册如何更加寄存器配置外部中断 文章目录 1 前言 2 STM32的外部中断 3 中断服务函数的映射关系 4 外部中断的配置 5 寄存器的 ...
- STM32——外部中断EXIT实现
外部中断实现步骤: 一.初始化,包括:1.AFIO时钟中断和GPIO时钟使能: 2.GPIO初始化 ...
- 关于STM32的可编程电压检测器的使用方法
关于STM32的可编程电压检测器的使用方法 思维导图总览: 代码: 1 #include "sys.h" 2 #include "delay.h" 3 #inc ...
- STM32外部中断具体解释
一.基本概念 ARM Coetex-M3内核共支持256个中断,当中16个内部中断,240个外部中断和可编程的256级中断优先级的设置.STM32眼下支持的中断共84个(16个内部+68个外部), ...
- 转别人的 STM32外部中断使用注意事项
前言:这些问题都是我之前在工作中遇到的,后来觉得需要总结,自己记忆不好,所以在这个给自己打个mark. 一:触发方式 STM32 的外部中断是通过边沿来触发的,不支持电平触发: 二:外部中断分组 ST ...
- STM32外部中断初理解
PA0,PB0...PG0--->EXTI0 PA1,PB1...PG1--->EXTI1 ....... PA15,PB15...PG15--->EXTI15 以上为GPIO和中断 ...
随机推荐
- 【Alpha】——First scrum Meeting
一.今日站立式会议照片 二.每个人的工作 成员 昨天已完成的工作 今天计划完成的工作 · 李永豪 编写测试计划 学习JAVA编程及UI设计 · 郑靖涛 Alpha任务分配计划 学习JAVA编程及UI设 ...
- 201521123036 《Java程序设计》第8周学习总结
本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容. 1.2 选做:收集你认为有用的代码片段 HashMap自定义排序 List<Map.Entry<Stri ...
- 201521123027 <iava程序设计>第六周学习总结
1. 本周学习总结 1.1 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核心概念画一张思维导图,对面向对象思想进行一个总结. 注1:关键词与内容不求多,但概念之间的联系要清晰,内容覆盖 ...
- 201521123006 《java程序设计》 第13周学习总结
1. 本周学习总结 1.以你喜欢的方式(思维导图.OneNote或其他)归纳总结多网络相关内容. 2. 书面作业 1. 网络基础 1.1 比较ping www.baidu.com与ping cec.j ...
- Java程序设计——学生基本信息管理系统(团队+个人)
学生信息管理系统(From:单身贵族) 团队部分 一.团队介绍("单身贵族"): 吴剑通[组长]:201521123056,唯一队员,网络1512班,团支书 二.项目git地址 三 ...
- Java:实现对象的比较 comparable接口和comparator接口
在实际应用中,我们往往有需要比较两个自定义对象大小的地方.而这些自定义对象的比较,就不像简单的整型数据那么简单,它们往往包含有许多的属性,我们一般都是根据这些属性对自定义对象进行比较的.所以Java中 ...
- table相关的选择器 & children()与find()的区别 & 选择器eq(n)与nth-child(n)的差异
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...
- Openlayers系列(一)关于地图投影的理解
背景 近期开发以MongoDB为基础的分布式地理数据管理平台系统,被要求做一个简单的demo给客户进行演示.于是笔者便打算向数据库中存储一部分瓦片数据,写一个简单的存取服务器,使用Openlayers ...
- Nginx学习——Nginx基本配置
1.Nginx的配置文件总览 Nginx配置文件详解 : http://www.cnblogs.com/hunttown/p/5759959.html nginx.conf 基本格式: worker_ ...
- http://codeforces.com/contest/828
哇这是我打的第一场cf,第一题都wa了无数次,然后第二题差几分钟交 ,第二天一交就AC了内心是崩溃的.果然我还是太菜l.... A. Restaurant Tables time limit per ...