文档章节

STM32 外部中断的使用(按键中断点亮LED)

 奔跑的夕阳_
发布于 2017/08/17 16:20
字数 304
阅读 8
收藏 0

设置过程:

①开启时钟

RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE);

注意:要使用EXTI需开启AFIO时钟

②按键GPIO配置

    GPIO_InitTypeDef GPIO_InitStructure;
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空输入
    GPIO_Init(GPIOA,&GPIO_InitStructure);

③配置EXTI

    EXTI_InitTypeDef EXTI_InitStructure;
    GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource0);
//将GPIO管脚与外部中断线连接
    EXTI_InitStructure.EXTI_Line = EXTI_Line0;      //信号源  PA0对应EXTI_Line0
    EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;//中断模式
    EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; //下降沿
    EXTI_InitStructure.EXTI_LineCmd = ENABLE;//使能中断
    EXTI_Init(&EXTI_InitStructure);

注意:GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource0);//将GPIO管脚与外部中断线连接

④一般默认情况下中断向量偏移表是在FLASH中,若在RAM中需要设置NVIC_SetVectorTable。

/*设置中断向量表起始位置,用来定位中断源*/ 

#ifdef  VECT_TAB_RAM   

  NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0);  //中断向量表在RAM中,0x20000000 

#else   

  NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);    //中断向量表在flash中,0x08000000 

#endif 

⑤配置NVIC

    NVIC_InitTypeDef NVIC_InitStructure;
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); //优先级组1
    NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn;    //按键1通道
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1; //抢占式优先级1
    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; //子优先级1
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //中断通道使能
    NVIC_Init(&NVIC_InitStructure);//加载优先级配置

注意:NVIC_InitTypeDef结构体位于misc.h中,EXTI0_IRQn位于stm32f10x.h中

⑥写中断服务程序

void EXTI0_IRQHandler(void)
{
    if(EXTI_GetITStatus(EXTI_Line0)!=RESET)//判断是否产生了EXTI_Line0中断
    {
        LEDBlink;//LED翻转
        EXTI_ClearITPendingBit(EXTI_Line0);//清楚中断标志位
    }
}

© 著作权归作者所有

共有 人打赏支持
粉丝 1
博文 11
码字总数 3649
作品 0
杭州
私信 提问
普中PZ6806开发板 STM32学习笔记2 使用寄存器点亮一个LED

版权声明:(谢厂节的博客)博主文章绝大部分非原创,转载望留链接。 https://blog.csdn.net/xundh/article/details/84349565 LED 模块电路 我们程序目的是要让PC0输出低电平。如果要闪烁,就...

谢厂节
11/22
0
0
STM32GPIO外部中断总结

1 STM32中断分组 STM32 的每一个GPIO都能配置成一个外部中断触发源,这点也是 STM32 的强大之处。STM32 通过根据引脚的序号不同将众多中断触发源分成不同的组,比如:PA0,PB0,PC0,PD0,P...

dp29sym41zygndvf
2017/12/17
0
0
一起学mini2440裸机开发(十)--mini2440外部中断实验

我今天一整天都在试着将TQ2440的那种处理中断的方法(即安装中断向量表)移植到MDK中的mini2440,但是一直没成功,这种方法一直没成功,后来又想,还是先从最简单的开始吧,就是不利用中断向...

长平狐
2013/06/17
1K
0
STM32之SysTick定时器

SysTick-------操作系统的心跳 SysTick是系统滴答定时器,可以说是操作系统的的“心跳”,它被绑在NVIC中,用于产生SysTick异常(异常号:15)。一旦产生SysTick异常,就会产生滴答中断,这个...

panrenqiu
04/14
0
0
SysTick的优先级是高还是低

SysTick系统嘀嗒定时器并非STM32独有的,它是Cortex内核的部分,CM3为它专门开出一个异常类型,并且在中断向量表中占有一席之地(异常号15)。这样它可以很方便的移植到不同厂商出CM3内核...

OceanStack
2015/01/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

如何在网络视听行业建一扇内容安全大门?

在人工智能飞速发展的三年里,整个网络视听产业数字化发展速度非常迅猛。大数据作为如今这个时代的产物,正不断推动整个产业的发展。网络视听行业中存在海量的数据,比如视频内容、视频浏览量...

阿里云官方博客
7分钟前
0
0
云安全简史

课程介绍: DT时代我们每个人的生活在不知不觉中与云计算发生了千丝万缕的联系,起床、吃饭、出行、社交、工作、娱乐、购物等大多数应用都在云上,然而安全事件频发时刻在为我们敲响警钟,面对...

mcy0425
8分钟前
1
0
数字IT基础-数据采集总线

摘要: 日志服务是阿里自产自用的产品,在双十一、双十二和新春红包期间承载阿里云/蚂蚁全站、阿里电商板块、云上几千商家数据链路,每日处理来自百万节点几十PB数据,峰值流量达到每秒百GB,...

阿里云云栖社区
12分钟前
0
0
身为极客,一道题测出你究竟有多机智!|活动推荐

似乎所有极客都是天生的偏执狂。 这就像对程序员的调侃那样, 说这个世界在他们眼里只有0和1, 介于中间的有什么?不存在的。 作为平均智商最高的群体而言 程序员是最具有极客精神的一个群体...

UCloudTech
12分钟前
0
0
芯片制造与中国技术

接下来的思路就简单了,如何把这30吨东西,集成到指甲那么大的地方上呢?这就是芯片。 芯片制造与中国技术 为了把30吨的运算电路缩小,工程师们把多余的东西全扔了,直接在硅片上制作PN结和电...

天王盖地虎626
19分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部