外部中断

CC2430基础——按键外部中断实验

与世无争的帅哥 提交于 2020-03-30 01:57:15
#include <iocc2430.h> void init_led() //初始化三个LED,开始时熄灭 { //P1_0 接RLED P1_1 接GLED P1_2接YLED P1SEL &= 0x07; //P1_0,P1_1,P1_2通用IO P1DIR |= 0x07; //作输出,1--输出,0--输入 P1_0 = 1; P1_1 = 1; P1_2 = 1; //全熄灭 } //P0_6按下为低电平 void init_key_interrupt() //出事话P0_6按键中断,下降沿中断 { P0SEL &= 0x40; //通用IO P0DIR &= 0x40; //作输入 P0INP &= ~0x40; //上拉 1--下拉,0--上拉 P0IFG = 0; //清中断标志 PICTL |= 0x11; //上升沿触发,开P0_4,--P0_7中断 P0IE = 1; //开P0中断 EA = 1; //开总中断 } #pragma vector = P0INT_VECTOR __interrupt void P0_ISR() { if(P0IFG & 0x40) P1_0 = !P1_0; P0IFG = 0; P0IF = 0; } void main() { init_led(); init_key_interrupt(); while(1); }

2020-03-11

泪湿孤枕 提交于 2020-03-11 13:21:35
1 中断方式不同:内部中断是一个算法指令,是由软中断指令启动的中断。外部中断是单片机实时地处理外部事件的一种内部机制。如果在某一时刻需要响应一个外部事件(比如有按键按下),这时就会用到外部中断。 2、中断的主动性不同:外部中断时,当某种外部事件发生时,单片机的中断系统将迫使CPU暂停正在执行的程序,转而去进行中断事件的处理;中断处理完毕后.又返回被中断的程序处,继续执行下去。在一定条件下由CPU自身启动的中断。 3、中断的实现方法不同:外部中断依靠电平触发方式和跳沿触发方式。电平触发方式适合于外部中断以低电平输入而且中断服务程序能清除外部中断请求源的情况。外部中断若定义为跳沿触发方式,外部中断申请触发器能锁存外部中断输入线上的负跳变。内部中断由一条指令INT n产生中断类型码或者由指令规定。##外部中断和内部中断 List item 来源: CSDN 作者: XINdongpai 链接: https://blog.csdn.net/xindongpai/article/details/104793691

STM32外部中断函数

岁酱吖の 提交于 2020-03-06 16:35:23
STM32外部中断函数 在外部中端的 exti.h 文件中 # ifndef _EXTI_H # define _EXTI_H # include "stm32f10x.h" void EXTIX_Init ( void ) ; # endif 在外部中端的 exti.c 文件中 # include "exti.h" # include "led.h" # include "key.h" # include "delay.h" # include "usart.h" # include "beep.h" //外部中断 0 服务程序 void EXTIX_Init ( void ) { EXTI_InitTypeDef EXTI_InitStructure ; NVIC_InitTypeDef NVIC_InitStructure ; KEY_Init ( ) ; //①按键端口初始化 RCC_APB2PeriphClockCmd ( RCC_APB2Periph_AFIO , ENABLE ) ; //②使能 AFIO 时钟 //GPIOE.3 中断线以及中断初始化配置,下降沿触发 GPIO_EXTILineConfig ( GPIO_PortSourceGPIOE , GPIO_PinSource3 ) ; //③ EXTI_InitStructure . EXTI_Line =

基于STM32F10x系列的外部中断EXTI笔记

99封情书 提交于 2020-03-05 05:23:54
外部中断EXTI STM32F10x支持多达20个外部中断/请求事件线 除了GPIO连接到16个外部中断/请求事件线外,另外四个EXTI连接线方式如下图所示: 配置GPIOEXTI中断控制线如下图所示: EXTI中断配置: EXTI配置步骤: 1、选择硬件中断选择(配置EXTI_IMR),若选择事件中断选择(配置EXTI_EMR) 2、配置上升沿触发(EXTI_RTSR)还是下降沿触发(EXTI_FTSR) 3、清除中断触发标志位/挂起位,配置(EXTI_PR) 4、等待中断触发标志位(配置EXTI_SWIER) 下面贴出使用库函数方法配置红外的例子: void ir_init ( void ) { GPIO_InitTypeDef GPIO_InitStructure ; NVIC_InitTypeDef NVIC_InitStructure ; EXTI_InitTypeDef EXTI_InitStructure ; RCC_APB2PeriphClockCmd ( RCC_APB2Periph_GPIOB , ENABLE ) ; RCC_APB2PeriphClockCmd ( RCC_APB2Periph_AFIO , ENABLE ) ; GPIO_InitStructure . GPIO_Pin = GPIO_Pin_9 ; //第9号引脚 GPIO

STM32对HAL库的外部中断处理

谁说胖子不能爱 提交于 2020-02-29 06:27:47
这次外部中断是通过检测外部中断实现按键控制LED的开关。 每一个IO口都可作为外部中断口,将你要外部中断的IO口在CUBEMX中进行设置。 中断线能够自动识别,不用手动去改动。其他基本设置好之后,即完成了外部中断的初始化。此时要进入中断函数,印象中大家的外部中断函数应该是这个, 但是在HAL库文件中有此函数的描述, 即它会执行一个外部中断的回调函数。 在库文件中还找到了——weak 该回调函数的定义,weak其实意思就是定义了一个初始化的函数,你不改也可以,你改了,就按照你改的函数来执行。 所以我们需要在main文件中重构一个回调函数,把它当做是中断函数来用就好了。 即完成外部中断的写法。 之前说的串口中断调用的回调函数,应该也是一个道理一个原理,在此说明一下。。 来源: https://www.cnblogs.com/zjx123/p/11866018.html

51单片机中断学习

左心房为你撑大大i 提交于 2020-02-26 05:44:36
一、中断的概念 CPU在处理某一事件A时,发生了另一事件B请求CPU迅速去处理(中断发生); CPU暂时中断当前的工作,转去处理事件B(中断响应和中断服务); 待CPU将事件B处理完毕后,再回到原来事件A被中断的地方继续处理事件A(中断返回),这一过程称为中断 二、中断源 在51单片机中有5个中断源 中断号 优先级 中断源 中断入口地址 0 1(最高) 外部中断0 0003H 1 2 定时器0 000BH 2 3 外部中断1 0013H 3 4 定时器1 0018H 4 5 串口总段 0023H 三、中断寄存器 单片机有10个寄存器主要与中断程序的书写控制有关 1.中断允许控制寄存器IE 2.定时器控制寄存器TCON 3.串口控制寄存器SCON 4.中断优先控制寄存器IP 5.定时器工作方式控制寄存器TMOD 6.定时器初值赋予寄存器(TH0/TH1,TL0/TL1) 寄存器详细说明:http://blog.sina.com.cn/s/blog_a05b986d0101545c.html 四、寄存器功能与赋值说明 注:在用到中断时,必须要开总中断EA,即EA=1。 //开总中断 1.中断允许控制寄存器IE EX0(EX1):外部中断允许控制位 EX0=1 外部中断0开关闭合 //开外部0中断 EX0=0 外部中断0开关断开 ET0(ET1):定时中断允许控制位 ET0=1

X86汇编8.外部中断

。_饼干妹妹 提交于 2020-02-26 04:12:19
最近学习了X86汇编,其实无论是古老的8086还是现在i3/5/7/9,Xeon3/5,在最基本原理上,都是相通的,只是CPU位数,寻址空间,寄存器个数,指令集的扩充等方面有所不同,对于学习,8086永不过时。 1.端口的读写 在PC系统中,除和CPU通过总线相连的芯片(内存芯片)之外,还有3类芯片: (1)各接口卡(网卡、显卡)上的接口芯片,他们控制接口卡进行工作 (2)主板上的接口芯片,CPU通过它们对部分外省进行访问 (3)其他芯片,用来存储相关的系统信息,或进行相关的输入、输出处理 这些芯片都有一组可以由CPU读写的寄存器,这些寄存器物理上处于不同芯片中,但是都与CPU总线相连,可以通过CPU总线对他们进行控制,从CPU角度,将这些寄存器都称为端口,对他们进行统一编址,从而建立了一个统一的端口地址空间,每一个端口在地址空间中都有一个地址。 总结,CPU可以直接读写以下三个地方的数据: (1)CPU内部寄存器,在CPU内部 (2)内存单元,直接连在CPU上 (3)端口 端口地址和内存地址一样,都通过地址总线来传送。在PC系统中,最多可以定位64K个不同端口,他们的端口范围是:0~65535。 对端口的读写不能用mov、push、pop,应该用in和out in al,60h ;从60h端口读入一个接 执行过程: (1)CPU通过地址总线将信息60h发出 (2

stm32学习笔记-外部中断

让人想犯罪 __ 提交于 2020-02-21 07:27:31
文章目录 1、stm32f103外部中断控制器EXTI。 1.1外部中断的映像 1.2 外部中断/事件的框图 1.3 外部中断的编程。 外部中断配置思路 相关寄存器 相关库函数 1.4 按键中断实例。 1、stm32f103外部中断控制器EXTI。 1.1外部中断的映像 外部中断只有0~18共19个,那如何给每一个GPIO口配置上中断,通过一个映像把所有具有相同下标的GPIO口映像成相应下标的外部中断。 参考手册: 1.2 外部中断/事件的框图 中断大致过程如下: 通过配置 上升沿/下降沿触发选择寄存器 选择 边沿检测电路 所要检测的边沿跳变。 边沿检测电路 根据 输入线 是否有相应的边沿跳变,检测到则输出信号1,否则输出信号0。 通过一个 或门 ,或门 以 边沿检测电路 、 软件中断事件寄存器 (中断事件可以通过软件产生) 作为输入。两者之一有一个产生信号1,或门就输出信号1。 或门输出的信号1。输出的信号1发至 请求挂起寄存器 。 请求挂起寄存器对应寄存器的位置1,然后请求挂起寄存器会产生一个信号1。(不懂,这里暂略) 请求挂起寄存器、中断屏蔽寄存器同时输出信号1,则发生信号1到NVIC中断控制器。(注意:这里可以看出中断屏蔽也就是一个与操作。) 事件大致过程如下: 通过配置 上升沿/下降沿触发选择寄存器 选择 边沿检测电路 所要检测的边沿跳变。 边沿检测电路 根据 输入线

STM32外部中断+TFTLCD显示

最后都变了- 提交于 2020-02-08 20:23:26
STM32外部中断简介 STM32的中断系统由嵌套中断向量控制器(Nested Vectored Interrupt Controller,NVIC)、外部中断/事件控制器(External Interrupt/Event Controller,EXTI)和各个外设中断控制器部分构成。 我们通过外部中断/事件线路映射。 将IO端口映射到16根外部中断线上,外部中断的GPIO的端口映射可由下图体现。 每一组相同的编号的GPIO都被映射到同一个外部中断/事件寄存器中。使用时Cortex-M3可以通过外部中断或者内部中断唤醒内核配置外部IO端口、RTC闹钟和USB唤醒事件来唤醒CPU。 我们在exti.c文件中进行 EXTIX_Init(void)函数编写,以及EXTI0_IRQHandler(void)进行IO口的中断服务程序。在EXTIX_Init(void)函数 中我们需要根据硬件的IO选择相应的中断线以及中断通道。为使用WK_UP、KEY0、KEY1三个按键分别连接到PA0、PE4、PE3三个IO口同时注意到KEY0、 KEY1低电平有效WK_UP按键高电平有效。因此我们在中断中使用中断线0中断线3中断线4(注意此时将WK_UP电阻上拉) void EXTIX_Init ( void ) { EXTI_InitTypeDef EXTI_InitStructure ; NVIC

单片机的中断系统

独自空忆成欢 提交于 2020-02-02 04:38:04
有关单片机中断系统的概念:什么是中断,我们从一个生活中的例程引入。你正在家中看书,突然电话铃响了,你放下书本,去接电话,和来电话的人交谈,然后放下电话,回来继续看你的书。这就是生活中的“中断”的现象,就是正常的工作过程被外部的事件打断了。仔细研究一下生活中的中断,对于我们学习单片机的中断也很有好处。 第一、什么可经引起中断,生活中很多事件能引起中断:有人按了门铃了,电话铃响了,你的闹钟闹响了,你烧的水开了….等等诸如此类的事件,我们把能引起中断的称之为中断源,单片机中也有一些能引起中断的事件,8031中一共有5个:两个外部中断,两个计数/定时器中断,一个串行口中断。 第二、中断的嵌套与优先级处理:设想一下,我们正在看书,电话铃响了,同时又有人按了门铃,你该先做那样呢?如果你正是在等一个很重要的电话,你一般不会去理会门铃的,而反之,你正在等一个重要的客人,则可能就不会去理会电话了。如果不是这两者(即不等电话,也不是等人上门),你可能会按你常常的习惯去处理。总之这里存在一个优先级的问题,单片机中也是如此,也有优先级的问题。优先级的问题不仅仅发生在两个中断同时产生的情况,也发生在一个中断已产生,又有一个中断产生的情况,比如你正接电话,有人按门铃的情况,或你正开门与人交谈,又有电话响了情况。考虑一下我们会怎么办吧。 第三、中断的响应过程:当有事件产生