精华内容
下载资源
问答
  • 2022-05-17 07:41:38

    AFIO_EXTICR1(选择0 1 2 3端口),
    AFIO_EXTICR2(选择4 5 6 7端口),
    AFIO_EXTICR3(选择8 9 10 11端口),
    AFIO_EXTICR4(选择12 13 14 15端口).
    四个中断配置寄存器,分别配置到STM32的0---15号管脚。
    用0 1 2 3(EXTI0),4 5 6 7(EXTI1),8 9 10 11(EXTI2),12 13 14 15(EXTI3)
       0 1 2 3(EXTI4),4 5 6 7(EXTI5),8 9 10 11(EXTI6),12 13 14 15(EXTI7)
       0 1 2 3(EXTI8),4 5 6 7(EXTI9),8 9 10 11(EXTI10),12 13 14 15(EXTI11)
       0 1 2 3(EXTI12),4 5 6 7(EXTI13),8 9 10 11(EXTI14),12 13 14 15(EXTI15)
    位组合,来选择A,B,C,D,E,,F,G端口引脚
    0000 PA端口
    0001 PB端口
    0010 PC端口
    0011 PD端口
    0100 PE端口
    0101 PF端口
    0110 PG端口

    更多相关内容
  • 摘要:介绍了一种采用DM642和CPLD相配合的扩展键盘方法...CPLD管理键盘电路中的芯片逻辑,DM642的外部中断监控按键的状态。简单阐述了键盘的分类,给出系统的硬件电路原理图,在CCS软件中调试程序方法。仿真结果表明,
  • 我感觉stm32的外部中断都是大同小异的,因此我以stm32g474为例,配置一下外部中断。举例引脚: PE5 配置引脚为输入模式(GPIOx_MODER); 配置触发模式(上升沿/下降沿); 配置EXTI的中断屏蔽寄存器(EXTI_IMR)...

    我感觉stm32的外部中断都是大同小异的,因此我以stm32g474为例,配置一下外部中断。举例引脚: PE5

    1. 配置引脚为输入模式(GPIOx_MODER);
    2. 配置触发模式(上升沿/下降沿);
    3. 配置EXTI的中断屏蔽寄存器(EXTI_IMR);
    4. 配置具体触发引脚(SYSCFG_EXTICR);
    5. 配置中断允许(ISER);(当然也可以配置优先级分组,我这里不需要,因此省略)

    首先看EXTI的中断/事件框图:
    在这里插入图片描述
    要想触发中断,首先经过“边沿检测器”,而边沿检测器需要配置上升沿检测还是下降沿检测。然后通过或门,可以看到或门的另一个输入连接着“软件中断事件寄存器”,这个寄存器可以不用管,然后就是 与上一个 “中断屏蔽寄存器”,最后连接到“中断挂起寄存器”,因此可以看到触发中断需要配置“边沿检测器”和“中断屏蔽寄存器”就可以触发中断了(唤醒和事件也以此类推)。以PE5举例:

    EXTI->RTSR1 |= 0x0020;
    EXTI->IMR1 |= 0x0020;
    

    配置完之后发现并不能进入中断,那是由于中断允许位没有配置。由于是PE5,那么该引脚属于EXTI5-line,在STM32G4系列向量表中找到EXTI5:
    在这里插入图片描述
    表中说EXTI的lin5~9都共用这一个向量,那就是它了。配置ISER寄存器的第22位。

    NVIC->ISER[0] = 0x00800000;
    

    编译运行,发现PE5的上升沿不能进入中断,PA5的上升沿可以,可能还有个选择端口的寄存器,再看手册:
    在这里插入图片描述
    嗷嗷,还要配置SYSCFG_EXTICR寄存器啊,康康寄存器说明:
    在这里插入图片描述
    在这里插入图片描述
    PE5,那就将这个寄存器配置为0x00000040:

    SYSCFG->EXTICR[1] = SYSCFG_EXTICR2_EXTI5_PE;
    

    OK,这样就可以通过PE5顺顺利利地进入中断了,中断函数名称不确定的话可以在“.s”文件中找:
    在这里插入图片描述

    OK,结束垃圾流水账。

    展开全文
  • STM32自学笔记EXTI(外部中断)寄存器

    千次阅读 多人点赞 2019-12-07 20:55:57
    EXTI寄存器外部中断通用I/O映像中断处理函数分配EXTI寄存器一览中断屏蔽寄存器(EXTI_IMR)事件屏蔽寄存器(EXTI_EMR)上升沿触发选择寄存器(EXTI_RTSR)下降沿触发选择寄存器(EXTI_FTSR)软件中断事件寄存器(EXTI_SWIER)...

    外部中断通用I/O映像

    在这里插入图片描述

    中断处理函数分配

    在这里插入图片描述

    EXTI寄存器一览

    以下图片全部摘自STM32中文参考手册

    中断屏蔽寄存器(EXTI_IMR)

    在这里插入图片描述

    往对应的位写1就是开启中断,写0就是关闭中断

    例如开放来自线0上的中断请求

    	EXTI->IMR|=1<<0;//开放来自线0上的中断请求
    

    事件屏蔽寄存器(EXTI_EMR)

    在这里插入图片描述

    参考**中断屏蔽寄存器(EXTI_IMR)**的操作

    上升沿触发选择寄存器(EXTI_RTSR)

    在这里插入图片描述

    设置对应的外部中断触发事件为上升沿
    上升沿就是电平从0到1

    例如允许输入线0上的上升沿触发

    	EXTI->RTSR|=1<<0;//允许输入线0上的上升沿触发
    

    下降沿触发选择寄存器(EXTI_FTSR)

    在这里插入图片描述

    设置对应的外部中断触发事件为下降沿
    下降沿就是电平从1到0

    例如允许输入线0上的下降沿触发

    	EXTI->FTSR|=1<<0;//允许输入线0上的下降沿触发
    

    软件中断事件寄存器(EXTI_SWIER)

    在这里插入图片描述

    对应位写1则触发中断

    挂起寄存器(EXTI_PR)

    在这里插入图片描述

    这个寄存器和SR寄存器差不多,都是检查相应的中断是否发生,不同的是清除的方式

    外部中断配置寄存器 1(AFIO_EXTICR1)

    在这里插入图片描述

    外部中断配置寄存器 2(AFIO_EXTICR2)

    在这里插入图片描述

    外部中断配置寄存器 3(AFIO_EXTICR3)

    在这里插入图片描述

    外部中断配置寄存器 4(AFIO_EXTICR4)

    在这里插入图片描述

    实例操作

    这里我们开启外部中断线0上的PA0

    步骤

    1)开启PA的时钟,配置IO

    	RCC->APB2ENR|=1<<2;//使能PA时钟
    	GPIOA->CRL&=0XFFFFFFF0;//PA0配置清零
    	GPIOA->CRL|=0X00000008;//PA0下拉输入
    	GPIOA->ODR|=0<<0;//PA0下拉
    

    2)开启复用时钟,设置 IO 口与中断线的映射关系

    	RCC->APB2ENR|=1<<0;//开启复用辅助时钟
    	AFIO->EXTICR[0]&=~(0XF<<0);//清除原来的设置
    	AFIO->EXTICR[0]|=0<<0;//外部中断0映射到PA0上
    

    特别注意这里的AFIO->EXTICR寄存器的编号

    3)开启外部中断线上中断,设置触发条件

    	EXTI->IMR|=1<<0;//开放来自线0上的中断请求
    	EXTI->RTSR|=1<<0;//允许输入线0上的上升沿触发
    

    4)配置中断分组(NVIC),并使能中断

    	MY_NVIC_Init(2,3,EXTI0_IRQn,2);	//抢占2,子优先级3,组2 
    

    5)编写中断服务函数

    //外部中断0服务程序
    void EXTI0_IRQHandler(void)
    {
    	delay_ms(10);	//消抖
    	if(GPIOA->IDR&1<<0)	//PA0按下
    	{				 
    		LED1=!LED1;
    	}		 
    	EXTI->PR=1<<0;  //清除线0上的中断标志位  
    } 
    

    源文件

    EXTI.C

    #include "EXTI.h"
    #include "delay.h"
    #include "led.h"
    
    void exti_init(void)
    {
    	RCC->APB2ENR|=1<<2;//使能PA时钟
    	GPIOA->CRL&=0XFFFFFFF0;//PA0配置清零
    	GPIOA->CRL|=0X00000008;//PA0下拉输入
    	GPIOA->ODR|=0<<0;//PA0下拉
    	
    	RCC->APB2ENR|=1<<0;//开启复用辅助时钟
    	AFIO->EXTICR[0]&=~(0XF<<0);//清除原来的设置
    	AFIO->EXTICR[0]|=0<<0;//外部中断0映射到PA0上
    	
    	EXTI->IMR|=1<<0;//开放来自线0上的中断请求
    	EXTI->RTSR|=1<<0;//允许输入线0上的上升沿触发
    	MY_NVIC_Init(2,3,EXTI0_IRQn,2);	//抢占2,子优先级3,组2  
    }
    //外部中断0服务程序
    void EXTI0_IRQHandler(void)
    {
    	delay_ms(10);	//消抖
    	if(GPIOA->IDR&1<<0)	//PA0按下
    	{				 
    		LED1=!LED1;
    	}		 
    	EXTI->PR=1<<0;  //清除线0上的中断标志位  
    } 
    

    EXTI.H

    #ifndef __EXTI_H
    #define __EXTI_H
    #include "sys.h"
    
    
    
    void exti_init(void);
    
    
    #endif
    
    

    MAIN.C

    #include "sys.h"
    #include "usart.h"		
    #include "delay.h"
    #include "led.h"
    #include "EXTI.h"
    
    
    
    
    int main(void)
    {
    	Stm32_Clock_Init(9);	//系统时钟设置
    	delay_init(72);	  		//延时初始化
    	uart_init(72,115200); 	//串口初始化为115200
    	led_init();				//LED初始化
    	exti_init();			//EXTI初始化
      	while(1)
    	{
    		LED0=!LED0;			//LED0用来指示程序正在运行
    		delay_ms(200);
    	}
    } 
    
    
    

    结果

    LED0(红灯)闪烁,代表程序正在运行
    在这里插入图片描述

    按下PA0之后,PA0电平由0变到1,LED1亮(绿灯)

    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • STM32的EXTI外部中断(直接操作寄存器),亲测可用,内有详细代码注释和说明讲解,很好的学习资料。
  • 51单片机中断相关寄存器

    千次阅读 多人点赞 2018-12-31 15:52:58
    ET2——定时器2中断 EX1——外部中断1 ET1——定时器1 中断 EX0——外部中断0 中断优先级寄存器IP PS——串口 PT——计时器 PX——外部中断  置0——低优先级 置1——高优先级 定...

    52单片机中断级别


    中断允许寄存器IE

    EA——全局中断                ES——串口中断

    ET2——定时器2中断         EX1——外部中断1

    ET1——定时器1 中断          EX0——外部中断0


    中断优先级寄存器IP

    PS——串口   PT——计时器  PX——外部中断           

    置0——低优先级  置1——高优先级


    定时器/计数器工作方式寄存器TMOD

    • GATE——门控制位 

         GATE=0定时器启动停止仅受TCON寄存器TRX(X=0,1)控制

         GATE=1定时器启动停止受TCON寄存器TRX(X=0,1)和外部中断引脚(INT0或者INT1)上电平状态控制

    • C/T——模式选择位

        C/T=1,计数器模式     C/T=0,定时器模式

    • M1M0——工作方式选择位

        M1M0=00 方式0,为13位定时器/计数器

        M1M0=01  方式1, 为16位定时器/计数器

        M1M0=10  方式2,  为8位初值自动重装的8位定时器/计数器

        M1M0=11   方式3,仅适用于T0,分成两个8位计数器,T1停止计数


    定时器/计数器控制寄存器TCON

    • TF1——定时器1溢出标志位

    当定时器1计满,硬件使TF1置1,并申请中断。进入中断后 由软件自动清0。如果是软件查询,需要软件清0。

    • TR1——定时器1运行控制位

    软件清0关闭定时器1,当GATE=1,且INT1为高电平 TR1置1启动定时器1;GATE=0 TR1置1启动定时器1。

    • IE1——外部中断1请求标志

    进入中断后硬件自动清零

    • IT1——外部中断1触发方式选择位

    IT=0, 为电平触发方式,引脚INT1上低电平有效。

    IT=1,  为跳变沿触发方式,引脚INT1上的电平从高到低的负跳变沿有效。


    电源管理寄存器PCON

    • SMOD——该位与串口通信波特率有关

    方式0波特率=fosc/12

    方式1波特率=(2SMOD/32)*(T1溢出率)

    方式2波特率=(2SMOD/64)*fosc

    方式3波特率=(2SMOD/32)*(T1溢出率)

    • (SMOD0)(LVDF)(P0F)——STC单片机独有功能,可查看相关手册。
    • PD——掉电模式
    • IDL——空闲模式


    串行口控制寄存器SCON

    • SM0,SM1——工作方式选择位

    SM0,SM1=00  方式0  同步移位寄存器

    SM0,SM1=01   方式1   10位异步收发(8位数据)波特率可变(定时器1溢出率控制)

    SM0,SM1=10   方式2  11位异步收发(9位数据)波特率固定

    SM0,SM1=11    方式3  11位异步收发(9位数据)波特率可变(定时器1溢出率控制)

    • SM2——多机通信控制位
    • REN——允许串行接收位
    • TI——发送中断标志位

    需要在中断服务中软件清0

    • RI——接收中断标志位

    需要在中断服务中软件清0

    展开全文
  • 【stm32f103】stm32 外部中断寄存器版) 中断分类  STM32的EXTI控制器支持19 个外
  • 外部中断使用指南(寄存器设置)

    千次阅读 2021-05-23 08:28:58
    (寄存器:GPxxCON)例:②配置外部中断触发模式,上升沿触发,下降沿触发,双边触发,高电平触发,低电平触发(寄存器:EXT_INT_x_CON)例:③取消屏蔽外部中断(寄存器:EXT_INT_x_MASK)例:④通过向量中断控制器(VI...
  • 前几天把外部中断基本搞好了,但对几个中断寄存器的具体含义和区别不是很了解。今天特意拿起datasheet详读并网络上查了这方面的资料。将结果记录如下: S3C2440的中断寄存器有6个中断裁决器,分为2级:第一级为5...
  • LPC2101/02/03多包含了三个外部中断输入作为可选择的管脚功能。管脚进行组合后,外部事件可以处理成三个独立... 有四个寄存器涉及外部中断 External Interrupt
  • STC学习:中断相关寄存器

    千次阅读 2021-08-19 09:53:42
    中断允许寄存器IE、IE2和INT_CLKO IE:中断允许寄存器(可位寻址) SFR name bit B7 B6 B5 B4 B3 B2 B1 B0 IE name EA ELVD EADC ES ET1 EX1 ET0 EX0 EA:CPU的总中断允许位,EA=1,CPU开放中断,EA=0,CPU...
  • stm32中断相关寄存器

    2021-02-18 21:40:53
    在MDK内,与NVIC相关寄存器,MDK为其定义了如下的结构体: typedef struct { vu32 ISER[2]; //2个32位中断使能寄存器分别对应到60个可屏蔽中断 u32 RESERVED0[30]; vu32 ICER[2]; //2个32位中断除能寄存器...
  • 直接对STM32的寄存器操作来配置外部中断
  • 也就是说,单片机把每个机器周期的S5P2采样到的外部中断源口线的电平逻辑直接赋值到中断标志寄存器。标志寄存器对于请求信号来说是透明的。这样当中断请求被阻塞而没有得到及时响应时,将被丢失。换句话说,要
  • 这次解读的stm32 使用外部中断按键控制led灯的代码 开始使用源码分析 先进个main函数 看见我们的重要函数EXTIX_INIT(); 同时使用文档解读 简单来说 1 初始化io口 :设置已经存在的状态 2 让io口和中断线建立映射 :...
  • 51单片机与中断相关寄存器

    千次阅读 2020-05-22 15:52:51
    51单片机与中断相关寄存器简介中断控制寄存器IE中断优先级控制寄存器IP定时器控制寄存器TCON串行口控制寄存器SCON 简介 中断控制寄存器 IE 中断优先级控制寄存器 IP 定时器控制寄存器 TCON 串行口控制寄存器 SCON...
  • 设置中断优先级寄存器,当有外部中断0请求中断时,中断程序执行发光二极管程序,在此过程中,外部中断1也有中断请求,外部中断0的中断程序将被中断去执行外部中断1的中断程序(数码管加1显示程序)。 #include<...
  • DSP中断实现方式以及寄存器访问,在C语言如何访问寄存器,如何实现三级中断
  • 单片机中断相关寄存器

    千次阅读 2021-06-09 18:24:20
    1、定时器控制寄存器(TCON) TCON(88H) 地址8FH8EH 8DH8CH8BH 8AH89H88H 符号TF1TR1 TF0TR0IE1 IT1IE0IT0 TF1:定时器/计时器T1的溢出中断请求标志位。当计数器T1最高位产生溢出时,由...
  • CM3 内核支持 256 个中断,其中包含了 16 个内核中断和 240 个外部中断,并且具有 256 级的可编程中断设置。 但 STM32 并没有使用 CM3 内核的全部东西,而是只用了它的一部分。 STM32 有 84 个中断,包括 16 个...
  • STM32_外部中断寄存器版)_笔记

    千次阅读 2016-05-05 21:07:19
    STM32_外部中断,从程序入手,深度解读每条程序,理解知识点。
  • MCS51单片机定时器外部中断寄存器
  • S3C2440中断寄存器

    2020-07-17 10:45:36
    1.中断分两大类。2.外部中断。3.内部中断。4.中断过程。 5.中断的开启。
  • STM32的中断控制是分级管理的,CM3内核中的NVIC是顶层,对每个通道都设有1BIT的中断挂起位, 但每个通道可能不止一个中断源,比如EXTI5_9_IRQn,对NVIC而言,只算一个通道,但实际包含有5个中断源, 因此,下层就...
  • 有三个寄存器中断相关(IE、IP、TCON),主要是应用IE和TCON寄存器 1、 IE寄存器: 中断允许寄存器,字节地址为A8H,可以位寻址 EA: 全局中断允许位 为1时-允许全局中断控制 ET2: ...
  • 寄存器 中断

    千次阅读 2020-08-25 11:05:08
    ISER[8]: ISER 全称是: Interrupt Set-Enable Registers,这是一个中断使能寄存器组。 有用的就是三个(ISER[0~2]]),总共可以表示 96 个中断。而 STM32F4 只用了其中的前 82 个。 ISER[0]的 bit0~31 分别对应...
  • 带你模仿正点原子到寄存器编写–外部中断EXTI 前言 对于大家来说学习STM32中断是学的比较迷的,这里是我学中断做的一些笔记希望对大家有所作用。 一、我们先了解一些中断的一些基础知识。 要产生中断,必须先...
  • 一、中断模块寄存器介绍   本节我们主要介绍C6748的中断模块。  中断是硬件系统的基本功能,DSP通过中断实现和其他芯片的实时交互。中断是指DSP在执行程序的过程中,当出现异常情况或特殊请求时,DSP停止...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 69,077
精华内容 27,630
关键字:

外部中断相关的寄存器