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和中断 ...
 
随机推荐
- 201521123045 《Java程序设计》第8周学习总结
			
第08周-集合与泛型 1. 本周学习总结 2. 书面作业 1.List中指定元素的删除(题目4-1)1.1 实验总结 答: Scanner实现字符串的输入有两种方法,一种是next(),一种nextL ...
 - 201521123110 《Java程序设计》第4周学习总结
			
1. 本周学习总结 1.1 尝试使用思维导图总结有关继承的知识点. 1.2 使用常规方法总结其他上课内容. private不对用户公开进行修改,public用户可以进行修改.代码可以进行继承,即子类继 ...
 - 201521123055 《Java程序设计》第9周学习总结
			
1. 本章学习总结 2. 书面作业 Q.1常用异常 题目5-1 1.1 截图你的提交结果(出现学号) 1.2 自己以前编写的代码中经常出现什么异常.需要捕获吗(为什么)?应如何避免? 1.3 什么样的 ...
 - eclipse版本选择
			
Eclipse最初是由IBM公司开发的替代商业软件Visual Age for Java的下一代IDE开发环境,2001年11月贡献给开源社区,现在它由非营利软件供应商联盟Eclipse基金会. Ec ...
 - webservice07#契约优先#webservice实现简单的动态web项目
			
1, 用户管理 User{username,password,nickname} 属性. 2,契约优先[ 先用schema做标准来写wsdl.再生成服务器端的接口,再编写接口的类] 在src下创建目录 ...
 - jmeter测试HTTP请求
			
HTTP超文本传输协议(HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议.所有的WWW文件都必须遵守这个标准.(详情参考看一下百科) HTTP发送请求有GE ...
 - call()和apply()的作用
			
call( )和apply( )都是为了改变某个函数运行时的上下文而存在的.换句话说是改变函数体内部this的指向 他们的区别就是call()方法接受的是若干个参数的列表,而apply()方法接受的是 ...
 - 我是如何利用Hadoop做大规模日志压缩的
			
背景 刚毕业那几年有幸进入了当时非常热门的某社交网站,在数据平台部从事大数据开发相关的工作.从日志收集.存储.数据仓库建设.数据统计.数据展示都接触了一遍,比较早的赶上了大数据热这波浪潮.虽然今天的人 ...
 - Redis 的安装与使用
			
环境:CentOS 6.6 Redis 版本:redis-3.0 (考虑到 Redis3.0 在集群和性能提升方面的特性,rc 版为正式版的候选版,而且很快就出正式版) 安装目录:/usr/local ...
 - django ajax练习
			
这几天遇到了django ajax请求出错的问题,总结一下 前端js:我这里创建的是一个字典格式的数据,前端js收到字典之后也是要用字典的形式去解包后台传送过来的数据,比如我下面的写法:data['s ...