精华内容
下载资源
问答
  • 外部中断

    2021-04-22 15:43:45
    (1)STM32的每个IO都可以作为外部中断输入; (2)STM32的中断控制器支持19个外部中断/事件请求: 线0-15:外部IO的中断输入; 线16:连接到PVD输出; 线17:连接到RTC闹钟事件; 线18:连接到USB唤醒事件; ...

    一外部中断基础

    二外部中断步骤

    三外部中断代码及运行

    一、外部中断基础
    (1)STM32的每个IO口都可以作为外部中断输入;
    (2)STM32的中断控制器支持19个外部中断/事件请求:
    线0-15:外部IO口的中断输入;
    线16:连接到PVD输出;
    线17:连接到RTC闹钟事件;
    线18:连接到USB唤醒事件;
    (3)每个外部 中断线可以独立的配置触发方式(上升沿,下降沿,双边沿触发) 。
    (4)IO口与中断线对应关系:GPIOx.a(0-15) 映射到EXITa ; (每时刻只有一个IO口映射到中断线)
    二、外部中断步骤
    在这里插入图片描述
    三、外部中断代码及运行
    (1)代码
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • 51 中断系统 外部中断0 外部中断1

    万次阅读 多人点赞 2019-06-14 22:26:11
    EX0(IE.0),外部中断0允许位; ET0(IE.1),定时/计数器T0中断允许位; EX1(IE.2),外部中断0允许位; ET1(IE.3),定时/计数器T1中断允许位; ES(IE.4),串行中断允许位; EA (IE.7), CPU中断允...

    51单片机的中断系统结构

    中断允许控制

    CPU对中断系统所有中断以及某个中断源的开放和屏蔽是由中断允许寄存器IE控制的。

    EX0(IE.0),外部中断0允许位;

    ET0(IE.1),定时/计数器T0中断允许位;

    EX1(IE.2),外部中断0允许位;

    ET1(IE.3),定时/计数器T1中断允许位;

    ES(IE.4),串行口中断允许位;

    EA (IE.7), CPU中断允许(总允许)位。

    中断请求标志

    1、TCON的中断标志

    IT0(TCON.0),外部中断0触发方式控制位。

            当IT0=0时,为电平触发方式。

            当IT0=1时,为边沿触发方式(下降沿有效)。

    IE0(TCON.1),外部中断0中断请求标志位。

    IT1(TCON.2),外部中断1触发方式控制位。

    IE1(TCON.3),外部中断1中断请求标志位。

    TF0(TCON.5),定时/计数器T0溢出中断请求标志位。

    TF1(TCON.7),定时/计数器T1溢出中断请求标志位。      

     

    中断源

     

    中断响应条件

     中断源有中断请求;

    n此中断源的中断允许位为1;

     CPU开中断(即EA=1)。

    以上三条同时满足时,CPU才有可能响应中断

     

     

     

    
    #include "reg51.h"   
    #include "intrins.h"
    typedef unsigned char u8;
    typedef unsigned int u16;
    
    
    sbit k1=P3^3;	 
    sbit led=P2^0;	
    void delay(u16 i)
    {
    	while (i--);
    } 
    
    //外部中断0条件
    void Int0Init()
    {
    	IT0 = 1;	//设置外部中断的触发方式为下降沿触发。
    	EX0 = 1;	//开启外部中断0
    	EA = 1;		//中断总开关
    }
    
    //外部中断1条件
    void Int1Init()
    {
    	IT1 = 1;	//设置外部中断1的触发方式为下降沿触发。
    	EX1 = 1;	//开启外部中断1
    	EA = 1;		//中断总开关
    }
    
    void main()
    {
    	Int1Init();
    	while(1);
    }
    void Int0()	   interrupt 0
    {
    	  delay(1000);
    	  if(k1 == 0)
    	  {
    	  	led= ~led;
    	  }
    }
    
    void Int1()	   interrupt 2
    {
    	  delay(1000);
    	  if(k1 == 0)
    	  {
    	  	led= ~led;
    	  }
    }
    

     

    proteus 8 电路原理图,k3接p32,k4接p33。p32默认高电平,按下k3后,电平拉低,产生下降沿,触发中断0。同样k4按下,触发为中断1。

     

    #include "reg51.h"   
    #include "intrins.h"
    typedef unsigned char u8;
    typedef unsigned int u16;
    
    sbit k3=P3^2;
    sbit k4=P3^3;	 
    sbit led=P2^0;	
    void delay(u16 i)
    {
    	while (i--);
    } 
    
    //外部中断0条件
    void Int0Init()
    {
    	IT0 = 1;	//设置外部中断的触发方式为下降沿触发。
    	EX0 = 1;	//开启外部中断0
    	EA = 1;		//中断总开关
    }
    
    //外部中断1条件
    void Int1Init()
    {
    	IT1 = 1;	//设置外部中断1的触发方式为下降沿触发。
    	EX1 = 1;	//开启外部中断1
    	EA = 1;		//中断总开关
    }
    
    void main()
    {
    	Int0Init();
    	while(1);
    }
    void Int0()	   interrupt 0
    {
    	  delay(1000);
    	  if(k3 == 0)
    	  {
    	  	led= ~led;
    	  }
    }
    
    void Int1()	   interrupt 2
    {
    	  delay(1000);
    	  if(k4 == 0)
    	  {
    	  	led= ~led;
    	  }
    }

     

    展开全文
  • 51单片机具有5个中断源,其中有两个外部中断INT0、INT1。 1、外部中断0:INT0,其对应的引脚为P3^2。 #include "reg52.h" ... //定义按键K3,外部中断0触发I/O sbit led=P2^0; //定义P20...

    51单片机具有5个中断源,其中有两个外部中断INT0、INT1。

    1、外部中断0:INT0,其对应的引脚为P3^2。

    #include "reg52.h"			
    
    typedef unsigned int u16;	  
    typedef unsigned char u8;
    
    sbit k3=P3^2;  //定义按键K3,外部中断0触发I/O口
    sbit led=P2^0;	 //定义P20口是led
    
    /*******************************************************************************
    * 函 数 名        : delay
    * 函数功能        : 延时函数,i=1时,大约延时10us
    *******************************************************************************/
    void delay(u16 i)
    {
    	while(i--);	
    }
    
    /*******************************************************************************
    * 函 数 名        : Int0Init()
    * 函数功能        : 设置外部中断0
    *******************************************************************************/
    void Int0Init()
    {
    	//设置INT0
    	IT0=1; //跳变沿出发方式(下降沿). PS:INT0=0,即为低电平触发
    	EX0=1; //打开INT0的中断允许。	
    	EA=1; //打开总中断	
    }
    
    /*******************************************************************************
    * 函 数 名        : main
    * 函数功能        : 主函数
    *******************************************************************************/
    void main()
    {	
    	Int0Init();  //	设置外部中断0
    	while(1);		
    }
    
    /*******************************************************************************
    * 函 数 名        : Int0()	interrupt 0
    * 函数功能        : 外部中断0的中断函数
    *******************************************************************************/
    
    void Int0()	interrupt 0		//外部中断0的中断函数
    {
    	delay(1000);	 //延时消抖
    	if(k3==0)
    	{
    		led=~led;
    	}
    }
    

     

    2、外部中断1:INT1,其对应的引脚为P3^3。

    #include "reg52.h"			
    
    typedef unsigned int u16;	  
    typedef unsigned char u8;
    
    sbit k4=P3^3;  //定义按键K4,外部中断1的触发I/O口
    sbit led=P2^0;	 //定义P20口是led
    
    /*******************************************************************************
    * 函 数 名        : delay
    * 函数功能        : 延时函数,i=1时,大约延时10us
    *******************************************************************************/
    void delay(u16 i)
    {
    	while(i--);	
    }
    
    /*******************************************************************************
    * 函 数 名        : Int1Init()
    * 函数功能        : 设置外部中断1
    *******************************************************************************/
    void Int1Init()
    {
    	//设置INT1
    	IT1=1; //跳变沿出发方式(下降沿). PS:INT1=0,即为低电平触发
    	EX1=1; //打开INT1的中断允许。	
    	EA=1; //打开总中断	
    }
    
    /*******************************************************************************
    * 函 数 名        : main
    * 函数功能        : 主函数
    *******************************************************************************/
    void main()
    {	
    	Int1Init();  //	设置外部中断0
    	while(1);		
    }
    
    /*******************************************************************************
    * 函 数 名        : Int1()	interrupt 2
    * 函数功能        : 外部中断1的中断函数
    *******************************************************************************/
    
    void Int1()	interrupt 2		//外部中断1的中断函数
    {
    	delay(1000);	 //延时消抖
    	if(k4==0)
    	{
    		led=~led;
    	}
    }
    

     

    展开全文
  • 单片机的外部中断(二)

    万次阅读 2018-12-01 21:58:33
     80C51单片机提供两个外部中断口: INT0(P3.2)和INT1(P3.3)引脚输入。这两个引脚是功能复用引脚,既可以作为普通V0口,也可作为外部中断输入引脚。下面以部中断0来讲述。80C51单片机在每个机器周期的S5P2期间扫描...

    前言:单片机的中断系统(一)


            80C51单片机提供两个外部中断口:  INT0(P3.2)和INT1(P3.3)引脚输入。这两个引脚是功能复用引脚,既可以作为普通V0口,也可作为外部中断输入引脚。下面以部中断0来讲述。80C51单片机在每个机器周期的S5P2期间扫描外部中断输入引脚的电平状态。当外部中断设置为下降沿触发时,若处理器在连续两个机器周期扫描到INT0引脚的电平先后为高电平和低电平时,就会设置中断标志位IE0为1,表示外部有中断申请,该中断申请信号会一直保持,直到该中断被响应,该标志由内部硬件自动清除当外部中断设置为电平触发方式时,在外部中断引脚INTo变为低电平时,IE0变为1,并一直保持为1,直到引脚INTo的输入变为高电平时,IE0位才清0。因此,选择低电平触发方式时,对INT0的电平持续时间有严格要求,必须保持INTo引脚为低电平,直到中断被响应才 能变高,而且在中断返回前必须变成高电平,以撤销中断请求。若低电平时问太短,则可能导致中断不会被响应;若太长,在中断子程序执行完后仍为低电平,则IE0会一直保持为1,这时会导致一次中断请求,得到多次响应 ——————http://www.51dzw.com/embed/embed_110007.html

     

    外部中断0实验 

    按键作为外部中断的产生源,按下按键,led状态反转。

    图一:单片机引脚图
    图二:独立按键接线图
    图三:LED引脚图

    程序:

    #include<reg52.h>
    
    sbit key3=P3^2;//外部中断0的引脚接口
    sbit led=P2^0;
    
    void delay(int dat)
    {
    	while(dat--);
    }
    
    void Int0Init()
    {
    	IT0=1;//下降沿触发
    	//IE0=0;请求标志位,无触发,或响应中断后,硬件自动置0
    	EX0=1;//外部中断0允许标志
    	EA=1;//打开总终端
    }
    
    void main(void)
    {
    	Int0Init();
    	while(1);//如果不写while(1),单片机在主程序中会不断循环执行,导致不断初始化		
    }
    
    void LedRever() interrupt 0	//0是外部中断的中断号
    {
    	 delay(1000);
    	 if(key3==0)
    	 {
    	 	led=~led;
    	 }
    }
    
    

     比较有意思的是,中断函数中增加了消抖部分。

    如果不加消抖,可能想程序可能想多次执行这个中断。如果消抖在外面,可能已经进入中断了,还没进行消抖。

     

    外部中断1实验:

    接线引脚图如图一、二、三。

    普中教程代码:

    /**************************************************************************************
    *		              外部中断1实验												  *
    实现现象:下载程序后按下K4按键可以对D1小灯状态取反。
    注意事项:无。																				  
    ***************************************************************************************/
    
    #include "reg52.h"			 //此文件中定义了单片机的一些特殊功能寄存器
    
    typedef unsigned int u16;	  //对数据类型进行声明定义
    typedef unsigned char u8;
    
    sbit k4=P3^3;  //定义按键K4
    sbit led=P2^0;	 //定义P20口是led
    
    /*******************************************************************************
    * 函 数 名         : delay
    * 函数功能		   : 延时函数,i=1时,大约延时10us
    *******************************************************************************/
    void delay(u16 i)
    {
    	while(i--);	
    }
    
    /*******************************************************************************
    * 函 数 名         : Int1Init()
    * 函数功能		   : 设置外部中断1
    * 输    入         : 无
    * 输    出         : 无
    *******************************************************************************/
    void Int1Init()
    {
    	//设置INT1
    	IT1=1;//跳变沿出发方式(下降沿)
    	EX1=1;//打开INT1的中断允许。	
    	EA=1;//打开总中断	
    }
    
    /*******************************************************************************
    * 函 数 名       : main
    * 函数功能		 : 主函数
    * 输    入       : 无
    * 输    出    	 : 无
    *******************************************************************************/
    void main()
    {	
    	Int1Init();  //	设置外部中断1
    	while(1);		
    }
    
    /*******************************************************************************
    * 函 数 名         : Int1()	interrupt 2
    * 函数功能		   : 外部中断0的中断函数
    * 输    入         : 无
    * 输    出         : 无
    *******************************************************************************/
    
    void Int1()	interrupt 2		//外部中断1的中断函数
    {
    	delay(1000);	 //延时消抖
    	if(k4==0)
    	{
    		led=~led;
    	}
    }

     

    参考文章:

    外部中断0中断请求标志位。

     

     

     

     

     

     

     

     

    展开全文
  • 外部中断0 外部0中断触发:(P3.2触发;P3.2触发;P3.2触发) 若IT0=0,则为低电平触发 若IT0=1,则为下降沿触发 外部中断0初始化: 初始化方法一: void Init_INT0() { IT0=1;//设置外部中断0;下降沿触发 EX0=...
  • 外部中断实验

    2020-12-06 15:54:37
    外部中断概述 1、 STM32的每个IO都可以作为外部中断输入。 2、 STM32的中断控制器支持19个外部中断/事件请求: 线0~15:对应外部IO的输入中断。 线16:连接到PVD输出。 线17:连接到RTC闹钟事件。 线18:连接到...
  • 外部中断EXTI

    千次阅读 2016-09-12 16:50:15
    前置技能: 按键输入-GPIO输入一,STM32中断介绍相比简单的51单片机,STM32的每个IO都可以作为外部中断输入STM32中断控制器支持19个外部中断/事件请求: 线0-15:外部IO输入中断 线16:连接到PVD输出 线17:连接到...
  • 51单片机外部中断+串行中断

    万次阅读 2018-05-28 23:26:17
    从而测量物体最小包围盒,本科专业自动化,想做的省事一点,不用每次都判断位置开始拍照,所以加了两个接近开关,当步进电机向某一方向运行时,利用两个传感器确定需要拍照的时刻,同时通过串行向电脑发送一个字符...
  • STM32 外部中断

    2019-07-24 11:54:01
    STM32 的每个 IO 都可以作为外部中断的中断输入,STM32F103 的中断控制器支持 19 个外部中断事件请求。每个中断设有状态位,每个中断/事件都有独立的触发和屏蔽设置。STM32F103 的19 个外部中断为: 线 0~15:...
  • 用C编程,设置两个外部中断(INT0和INT1)按键,优先级IP=0x04,即把外部中断1设置为高级优先级,外部中断0为低级优先级,使外部中断1嵌套在外部中断0中。 要求:中断触发方式为下降沿触发,按键有消抖功能 仿真 ...
  • 每一个IO口都可作为外部中断口,将你要外部中断的IO口在CUBEMX中进行设置。 中断线能够自动识别,不用手动去改动。其他基本设置好之后,即完成了外部中断的初始化。此时要进入中断函数,印象中大家的外部中断函数...
  • 51单片机各个引脚功能 IO引脚: 中断系统的主要功能:处理随机突发事件 中断系统结构: ...代码实现由外部中断控制P1的电平高低: #include<reg52.h> #include<intrins.h> #define uint
  • stm32之IO口外部中断配置

    千次阅读 2019-09-27 02:33:53
    从PA~PG每个端口都有15个...配置外部中断有一定的规定动作,可总结为四步,下面就随便用一个IO加以说明(PG2):  1、配置相应时钟和相关的GPIO管脚。  void KIN2_init( void ) { GPIO_InitTypeDef GPIO_In...
  • STM32F4的每个IO都可以作为外部中断的中断输入,这点也是STM32F4的强大之处。STM32F407的中断控制器支持22个外部中断/事件请求。每个中断设有状态位,每个中断/事件都有独立的触发和屏蔽设置。 STM32F407的22个...
  • 外部中断和定时器中断

    万次阅读 多人点赞 2018-11-20 13:53:27
    8.外部中断实现代码 9.定时器/计数器中断工作原理 10.定时器/计数器定时值的计算 11.定时器/计数器实现代码 1.什么是中断 中断就是指CPU正在执行一项任务A,然后突然停止任务A去执行任务B,执行完任务B再回来...
  • STM32----IO口外部中断

    千次阅读 2018-08-19 15:29:17
    外部中断/事件控制器(EXTI)     外部中断初始化函数 初始化IO为输入 KEY_Init(); 开启复用时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE); //外部中断,需要使能AFIO时钟 初始化中断线 ...
  • 外部中断配置流程 1、初始化IO工作在普通IO、上拉输入状态。 2、首先开IO组中断(P0IE=1、P1IE=1、P2IE=1); 3、开组内对应的具体某IO中断(P0IEN、P1IEN、P2IEN该寄存器里面的对应位对应相应的IO);...
  • EXIT外部中断

    千次阅读 2018-07-26 19:01:04
    STM32F4的每个IO都可以作为外部中断输入。 STM32F4的中断控制器支持22个外部中断/事件请求: EXTI线0~15:对应外部IO的输入中断。 EXTI线16:连接到PVD输出。 EXTI线17:连接到RTC闹钟事件。 EXTI线18:连接...
  • stm32外部中断

    千次阅读 2019-08-26 17:12:15
    外部中断与内部中断(例如定时器产生中断,串口接收中断等)不同的是:外部中断由外部条件触发,比如按键触发。 STM32的每个IO都可以作为外部中断输入。 STM32的中断控制器支持19个外部中断/事件请求: 线0~15:对应...
  • STM32F4外部中断入口和外部中断线

    千次阅读 2017-05-15 16:50:01
    STM32F4的每个IO都可以作为外部中断的中断输入,这点也是STM32F4的强大之处。STM32F407的中断控制器支持22个外部中断/事件请求。每个中断设有状态位,每个中断/事件都有独立的触发和屏蔽设置。STM32F407的22个外部...
  • 单片机外部中断—中断嵌套

    千次阅读 2020-03-26 16:33:46
    外部中断0 > 定时/计数器0 > 外部中断1 > 定时/计数器1 > 串行中断; 但这种优先级只是逻辑上的优先级,当同时有几种中断到达时,高优先级中断会先得到服务。这种优先级实际上是中断同时到达的情况下,谁先得到服务...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 26,263
精华内容 10,505
关键字:

外部中断口