外部中断实现步骤:

一、初始化,包括:1.AFIO时钟中断和GPIO时钟使能;

                         2.GPIO初始化

                         3.设置EXTI线

                         4.中断向量初始化

二、中断服务函数

采用PB9作为外部中断源,具体实现程序如下:

一、初始化

 void EXTI_PB9_Init(void)

 {

   GPIO_InitTypeDef GPIO_InitStructure;

   NVIC_InitTypeDef NVIC_InitStructure;

   EXTI_InitTypeDef EXTI_InitStructure;

   //1.使能GPIO和AFIO时钟,值得注意的是,当使用外部中断的时候必须使能AFIO时钟。

   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_AFIO,ENABLE);

   //2.GPIO初始化

   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;

   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;  //浮空输入

   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  //IO速度为50MHz

   GPIO_Init(GPIOB,&GPIO_InitStructure);  

   //3.设置EXTI线

   GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource9);  //将EXIT线9连接到PB9

   EXTI_InitStructure.EXTI_Line = EXTI_Line9;

   EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;

   EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising_Falling;  //上升下降沿触发

   EXTI_InitStructure.EXTI_LineCmd = ENABLE;//使能中断线

   EXTI_Init(&EXTI_InitStructure);//初始化中断

   //4.中断向量

   NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQn;

   NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = ;

   NVIC_InitStructure.NVIC_IRQChannelSubPriority = ;

   NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

   NVIC_Init(&NVIC_InitStructure);

 }

二、中断服务函数

 void EXTI9_5_IRQHandler(void)

 {

   if(EXTI_GetITStatus(EXTI_Line9) != RESET)  //EXTI9产生了中断

   {

     。。。。。。。。。。//中断处理,自行脑补~~~~

   }

   EXTI_ClearITPendingBit(EXTI_Line9);//清除中断

 }

注意:

1.外部中断5~外部中断9都是使用同一个中断函数EXTI9_5_IRQHandler ,若想同时使用,需要在中断函数中区分不同的中断线,如:

if(EXTI_GetITStatus(EXTI_Line9) != RESET)  //EXTI9产生了中断
2.外部中断线和管脚号是一一对应的,如:
EXTI1 ——> Pin1;
EXTI2 ——> Pin2;
EXTI3 ——> Pin3;
EXTI4 ——> Pin4;
。。。
而不是随意映射的。

STM32——外部中断EXIT实现的更多相关文章

  1. 转别人的 STM32外部中断使用注意事项

    前言:这些问题都是我之前在工作中遇到的,后来觉得需要总结,自己记忆不好,所以在这个给自己打个mark. 一:触发方式 STM32 的外部中断是通过边沿来触发的,不支持电平触发: 二:外部中断分组 ST ...

  2. STM32外部中断初理解

    PA0,PB0...PG0--->EXTI0 PA1,PB1...PG1--->EXTI1 ....... PA15,PB15...PG15--->EXTI15 以上为GPIO和中断 ...

  3. STM32外部中断具体解释

      一.基本概念 ARM Coetex-M3内核共支持256个中断,当中16个内部中断,240个外部中断和可编程的256级中断优先级的设置.STM32眼下支持的中断共84个(16个内部+68个外部), ...

  4. STM32 外部中断

    1)STM32一般有19 个外部中断为: 线 0~15:对应外部 IO 口的输入中断.线 16:连接到 PVD 输出. 线 17:连接到 RTC 闹钟事件. 线 18:连接到 USB 唤醒事件. 2) ...

  5. stm32 外部中断学习

    今天我们看看STM32的外部中断实验. STM32 供 IO 口使用的中断线只有 16 个,但是 STM32 的 IO 口却远远不止 16 个,那么 STM32 是怎么把 16 个中断线和 IO 口一 ...

  6. STM32 外部中断详解(原理+配置代码)

    本文介绍了STM32基于标准外设库的外部中断配置,以及基于参考手册如何更加寄存器配置外部中断 文章目录 1 前言 2 STM32的外部中断 3 中断服务函数的映射关系 4 外部中断的配置 5 寄存器的 ...

  7. (stm32f103学习总结)—stm32外部中断

    一.外部中断介绍 1.1 EXTI简介 EXTI简介 STM32F10x外部中断/事件控制器(EXTI)包含多达 20 个用于产生事 件/中断请求的边沿检测器.EXTI的每根输入线都可单独进行配置,以 ...

  8. STM32外部中断.

    void EXTIX_Init(void){     EXTI_InitTypeDef EXTI_InitStructure;    NVIC_InitTypeDef NVIC_InitStructu ...

  9. STM32之外部中断控制

    一.STM32外部中断 1.STM32外部中断结构图 如上图所示:主要包括四个环节,GPIO.AFIO.EXTI.NVIC.以STM32F103VE(100脚)为例说明硬件模块的数量: GPIO:   ...

随机推荐

  1. AnguarJS测试的实施步骤整理

    最近开发用到了AngularJS,据说目前大型系统都用这个作为前端.最近参与的一个项目,web部分重度使用了AngularJS,整个前端架构有组织有纪律.所谓的有纪律就是说,有比较完善的测试用例,用上 ...

  2. javascript高级编程3第二章:在html中使用javascript

    2.1 <script>元素 向html页面中插入javascript的主要方法,就是使用<script>元素.这个元素被加入到正式的html规范中.html4.01为< ...

  3. Asp.Net_Mvc_@Html.xxx()的扩展

    /// <summary> /// 生成分类下拉-列表框,选中指定的项 /// </summary> /// <param name="html"&g ...

  4. react+redux完整项目

    地址:https://segmentfault.com/a/1190000007642740?utm_source=tuicool&utm_medium=referral

  5. Python之路 day2 字符编码及转换

    #!/usr/bin/env python # -*- coding:utf-8 -*- #Author:ersa import sys print("sys default encodin ...

  6. select distinct

    select distinct select distinct 用于返回表中唯一不同的值. 语法 select distinct 列名称 from 表名称 使用 distinct 关键字 Studen ...

  7. 不注册Tomcat服务,运行Tomcat不弹出JAVA控制台窗口

    http://blog.csdn.net/yangholmes_blog/article/details/52881296

  8. arguments.callee的用法

    argument为函数内部对象,包含传入函数的所有参数,arguments.callee代表函数名,多用于递归调用,防止函数执行与函数名紧紧耦合的现象,对于没有函数名的匿名函数也非常起作用.举例如下: ...

  9. Android的常用adb命令

    第一部分:1. ubuntu下配置环境anroid变量:在终端执行 sudo gedit /etc/profile 打开文本编辑器,在最后追加#setandroid environment2. 运行E ...

  10. sessionStorage 、localStorage 与cookie 的异同点

    cookie 容量4kb,默认各种浏览器都支持,缺陷就是每次请求,浏览器都会把本机存的cookies发送到服务器,无形中浪费带宽.userdata,只有ie支持,单个容量64kb,每个域名最多可存10 ...