STM8L学习笔记:外部中断

合集下载

外部中断实验原理

外部中断实验原理

外部中断实验原理一、实验原理外部中断是计算机科学中的一个重要概念,它允许程序在特定的事件发生时被唤醒或中断。

外部中断对于实现实时计算、多任务处理、异常处理等重要功能具有关键作用。

本实验旨在深入理解外部中断的工作原理,并通过实例分析来揭示其实际应用中的关键点。

二、详细内容分析1. 中断触发机制外部中断是由特定事件触发的,例如输入输出操作完成、定时器溢出、硬件错误等。

当中断触发条件满足时,硬件会保存当前程序的状态,并将控制权转移到指定的中断处理程序。

2. 中断优先级当多个中断同时发生时,系统需要根据一定的优先级规则来确定执行哪个中断处理程序。

中断优先级的高低取决于具体应用的需求,通常可以根据重要性和实时性要求来设定。

3. 中断处理程序中断处理程序(Interrupt Service Routine, ISR)是一段特定的代码,用于在发生中断时处理事件并做出响应。

ISR通常包括保存寄存器状态、处理中断事件、恢复寄存器状态以及执行相应的操作等步骤。

4. 中断嵌套与处理器状态在多任务操作系统中,可能存在多个中断同时发生的情况。

此时,系统需要根据优先级逐一处理中断,并保存每个中断处理前的处理器状态,以便在处理完中断后恢复到原来的状态。

5. 中断屏蔽与唤醒某些情况下,系统可能需要暂时屏蔽某些中断,以避免干扰关键任务的执行。

同时,某些中断可能需要唤醒睡眠状态的进程或线程。

这些操作需要通过特定的指令或机制来实现。

三、实例分析以一个简单的例子来说明外部中断的工作流程:假设我们有一个基于Linux 系统的嵌入式系统,当某个硬件设备完成一项任务(如数据传输)时,会触发一个外部中断。

系统会保存当前的任务状态,并执行相应的中断处理程序(ISR)。

ISR会读取硬件设备的数据,并执行相应的操作(如数据处理、任务调度等)。

在ISR执行完毕后,系统会恢复之前保存的任务状态,并继续执行之前的任务。

这个例子中,我们看到了外部中断如何被用于实时处理任务、唤醒睡眠状态的进程以及调度任务等操作。

stm8笔记2-定时3更新中断+pwm输出(IDE为IAR)

stm8笔记2-定时3更新中断+pwm输出(IDE为IAR)

stm8笔记2-定时3更新中断+pwm输出(IDE为IAR)⼀:IAR编译器中断函数说明下⾯说⼀下在IAR下,在IAR下必须要添加iostm8s105s6.h⽂件,在⽂件的最后有如下内容:/*-------------------------------------------------------------------------* Interrupt vector numbers*-----------------------------------------------------------------------*/#define AWU_vector 0x03#define SPI_TXE_vector 0x0C#define SPI_RXNE_vector 0x0C#define SPI_WKUP_vector 0x0C#define SPI_CRCERR_vector 0x0C#define SPI_OVR_vector 0x0C#define SPI_MODF_vector 0x0C#define TIM1_OVR_UIF_vector 0x0D#define TIM1_CAPCOM_BIF_vector 0x0D#define TIM1_CAPCOM_TIF_vector 0x0D#define TIM1_CAPCOM_CC1IF_vector 0x0E#define TIM1_CAPCOM_CC2IF_vector 0x0E#define TIM1_CAPCOM_CC3IF_vector 0x0E#define TIM1_CAPCOM_CC4IF_vector 0x0E#define TIM1_CAPCOM_COMIF_vector 0x0E#define TIM2_OVR_UIF_vector 0x0F#define TIM2_CAPCOM_CC1IF_vector 0x10#define TIM2_CAPCOM_TIF_vector 0x10#define TIM2_CAPCOM_CC2IF_vector 0x10#define TIM2_CAPCOM_CC3IF_vector 0x10#define UART1_T_TXE_vector 0x13#define UART1_T_TC_vector 0x13#define UART1_R_OR_vector 0x14#define UART1_R_RXNE_vector 0x14#define UART1_R_IDLE_vector 0x14#define UART1_R_PE_vector 0x14#define UART1_R_LBDF_vector 0x14#define I2C_ADD10_vector 0x15#define I2C_ADDR_vector 0x15#define I2C_OVR_vector 0x15#define I2C_STOPF_vector 0x15#define I2C_BTF_vector 0x15#define I2C_WUFH_vector 0x15#define I2C_RXNE_vector 0x15#define I2C_TXE_vector 0x15#define I2C_BERR_vector 0x15#define I2C_ARLO_vector 0x15#define I2C_AF_vector 0x15#define I2C_SB_vector 0x15#define ADC1_AWS0_vector 0x18#define ADC1_AWS1_vector 0x18#define ADC1_AWS2_vector 0x18#define ADC1_AWS3_vector 0x18#define ADC1_AWS4_vector 0x18#define ADC1_AWS5_vector 0x18#define ADC1_AWS6_vector 0x18#define ADC1_EOC_vector 0x18#define ADC1_AWS8_vector 0x18#define ADC1_AWS9_vector 0x18#define ADC1_AWDG_vector 0x18#define ADC1_AWS7_vector 0x18#define TIM4_OVR_UIF_vector 0x19#define FLASH_EOP_vector 0x1A#define FLASH_WR_PG_DIS_vector 0x1A对照中断向量表,如果⽤到中断,必须⾃⼰写中断,⽐如TIM3定时器中断#pragma vector=TIM3_OVR_UIF_vector__interrupt void TIM3_UPD_OVF_IRQHandler (void){TIM3_SR = 0X00;//清除中断标志}⽤关键字#pragma vector=指出本中断处理函数指向的中断号,⽤关键字__interrupt作为函数的前缀,表⽰这是中断处理函数。

外部中断的实验报告

外部中断的实验报告

一、实验目的1. 理解外部中断的概念和作用。

2. 掌握外部中断的编程方法。

3. 熟悉中断处理程序的设计和调试。

二、实验原理外部中断是指由外部设备或信号产生的中断,用于处理与CPU无关的事件。

在微机系统中,外部中断通常用于处理输入/输出设备的中断请求。

外部中断分为可屏蔽中断和不可屏蔽中断两种类型。

三、实验环境1. 开发平台:Keil uVision 52. 微控制器:STM32F103C8T63. 外部设备:按钮、LED灯4. 连接方式:通过GPIO引脚连接四、实验步骤1. 设计外部中断电路(1)将按钮连接到STM32F103C8T6的GPIO引脚,例如PA0引脚。

(2)将LED灯连接到STM32F103C8T6的另一个GPIO引脚,例如PB0引脚。

2. 编写外部中断初始化程序(1)在Keil uVision 5中创建一个新项目,并添加STM32F103C8T6的起始代码。

(2)在主函数中编写初始化程序,包括以下步骤:a. 配置PA0引脚为输入模式,设置为浮空输入。

b. 配置PB0引脚为输出模式,用于控制LED灯。

c. 使能中断,设置中断优先级。

d. 配置NVIC(嵌套向量中断控制器)以允许外部中断。

3. 编写外部中断处理程序(1)在项目中添加一个新的C文件,用于编写外部中断处理程序。

(2)编写外部中断处理函数,当按钮按下时,触发中断,控制LED灯闪烁。

a. 初始化外部中断处理函数,设置中断优先级和中断触发方式。

b. 在外部中断处理函数中,编写LED灯控制代码,实现LED灯闪烁。

4. 编译并下载程序(1)编译项目,生成.hex文件。

(2)将.hex文件下载到STM32F103C8T6开发板上。

5. 测试实验结果(1)将按钮按下,观察LED灯是否闪烁。

(2)松开按钮,LED灯停止闪烁。

五、实验结果与分析1. 实验结果实验过程中,当按钮按下时,LED灯闪烁;松开按钮后,LED灯停止闪烁。

实验结果表明,外部中断能够正确地处理外部设备的中断请求,并控制LED灯的亮灭。

STM32F103学习笔记(五) 外部中断

STM32F103学习笔记(五) 外部中断

STM32F103学习笔记(五)外部中断首先是外部中断基本的概念:STM32 的每个IO 都可以作为外部中断的中断输入口,这点也是STM32 的强大之处。

STM32F103 的中断控制器支持19 个外部中断/事件请求。

每个中断设有状态位,每个中断/事件都有独立的触发和屏蔽设置。

STM32F103 的19 个外部中断为:线0~15:对应外部IO 口的输入中断。

线16:连接到PVD 输出。

线17:连接到RTC 闹钟事件。

线18:连接到USB 唤醒事件。

线16~18还没有学到只看了线0~15。

每个中断线对应着7个GPIO口,形成映射关系,以线0 为例:它对应了GPIOA.0、GPIOB.0、GPIOC.0、GPIOD.0、GPIOE.0、GPIOF.0、GPIOG.0。

而中断线每次只能连接到1 个IO 口上,这样就需要通过配置来决定对应的中断线配置到哪个GPIO 上了。

下面我们看看GPIO 跟中断线的映射关系图:根据映射关系,就开始配置按键对应GPIO口和中断的映射了:[csharp] view plain copy <pre name="code" class="csharp"><prename="code" class="html">void EXTIX_Init(void){ EXTI_InitTypeDef EXTI_InitStructure;NVIC_InitTypeDef NVIC_InitStructure; KEY_Init(); // 按键端口初始化RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,EN ABLE); //使能复用功能时钟//GPIOE.2 中断线以及中断初始化配置下降沿触发GPIO_EXTILineConfig(GPIO_PortSourceGPIOE,GPIO_Pi nSource2);EXTI_InitStructure.EXTI_Line=EXTI_Line2; //KEY2 EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;EXTI_InitStructure.EXTI_LineCmd = ENABLE;EXTI_Init(&EXTI_InitStructure); //根据EXTI_InitStruct中指定的参数初始化外设EXTI寄存器//GPIOE.3 中断线以及中断初始化配置下降沿触发//KEY1GPIO_EXTILineConfig(GPIO_PortSourceGPIOE,GPIO_Pi nSource3);EXTI_InitStructure.EXTI_Line=EXTI_Line3;EXTI_Init(&EXTI_InitStructure); //根据EXTI_InitStruct中指定的参数初始化外设EXTI寄存器//GPIOE.4 中断线以及中断初始化配置下降沿触发//KEY0GPIO_EXTILineConfig(GPIO_PortSourceGPIOE,GPIO_Pi nSource4);EXTI_InitStructure.EXTI_Line=EXTI_Line4;EXTI_Init(&EXTI_InitStructure); //根据EXTI_InitStruct中指定的参数初始化外设EXTI寄存器//GPIOA.0 中断线以及中断初始化配置上升沿触发PA0 WK_UPGPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_Pi nSource0);EXTI_InitStructure.EXTI_Line=EXTI_Line0;EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; EXTI_Init(&EXTI_InitStructure); //根据EXTI_InitStruct中指定的参数初始化外设EXTI寄存器NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn;//使能按键WK_UP所在的外部中断通道NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x02; //抢占优先级2,NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x03; //子优先级3NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //使能外部中断通道NVIC_Init(&NVIC_InitStructure);NVIC_InitStructure.NVIC_IRQChannel = EXTI2_IRQn;//使能按键KEY2所在的外部中断通道NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x02; //抢占优先级2,NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x02; //子优先级2NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //使能外部中断通道NVIC_Init(&NVIC_InitStructure);NVIC_InitStructure.NVIC_IRQChannel = EXTI3_IRQn;//使能按键KEY1所在的外部中断通道NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x02; //抢占优先级2NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x01; //子优先级1NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //使能外部中断通道NVIC_Init(&NVIC_InitStructure); //根据NVIC_InitStruct中指定的参数初始化外设NVIC寄存器NVIC_InitStructure.NVIC_IRQChannel = EXTI4_IRQn;//使能按键KEY0所在的外部中断通道NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x02; //抢占优先级2NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x00; //子优先级0NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //使能外部中断通道NVIC_Init(&NVIC_InitStructure); //根据NVIC_InitStruct中指定的参数初始化外设NVIC寄存器} //外部中断0服务程序voidEXTI0_IRQHandler(void) { delay_ms(10);//消抖if(KEY3==1) //WK_UP按键{ BEEP=!BEEP; } EXTI_ClearITPendingBit(EXTI_Line0); //清除LINE0上的中断标志位} //外部中断2服务程序voidEXTI2_IRQHandler(void) { delay_ms(10);//消抖if(KEY2==0) //按键KEY2{ LED0=!LED0; }EXTI_ClearITPendingBit(EXTI_Line2); //清除LINE2上的中断标志位} //外部中断3服务程序voidEXTI3_IRQHandler(void) { delay_ms(10);//消抖if(KEY1==0) //按键KEY1{ LED1=!LED1; }EXTI_ClearITPendingBit(EXTI_Line3); //清除LINE3上的中断标志位} void EXTI4_IRQHandler(void){ delay_ms(10);//消抖if(KEY0==0) //按键KEY0 { LED0=!LED0;LED1=!LED1; }EXTI_ClearITPendingBit(EXTI_Line4); //清除LINE4上的中断标志位} [html] view plain copy。

stc8系列单片机前5个中断源的中断子函数框架

stc8系列单片机前5个中断源的中断子函数框架

stc8系列单片机前5个中断源的中断子函数框架中断是单片机中一种重要的事件处理机制,能够在系统发生某个指定的事件时,立即打断当前的程序执行,转而执行中断服务程序。

STC8系列单片机提供了多种中断源,本文将介绍其中前5个中断源的中断子函数框架。

一、外部中断0外部中断0是通过INT0引脚触发的中断源。

当INT0引脚的电平发生变化时,可触发外部中断0。

以下是外部中断0的中断子函数框架:```Cvoid INT0_ISR() interrupt 0{// 中断服务程序的代码// ...}```二、外部中断1外部中断1是通过INT1引脚触发的中断源。

当INT1引脚的电平发生变化时,可触发外部中断1。

以下是外部中断1的中断子函数框架:```Cvoid INT1_ISR() interrupt 2{// 中断服务程序的代码// ...}```三、定时器0中断定时器0中断是使用定时器0作为中断源。

定时器0可以设定一个计时周期,当计时器溢出时,会触发定时器0中断。

以下是定时器0中断的中断子函数框架:```Cvoid TIMER0_ISR() interrupt 1{// 中断服务程序的代码// ...}```四、定时器1中断定时器1中断是使用定时器1作为中断源。

定时器1可以设定一个计时周期,当计时器溢出时,会触发定时器1中断。

以下是定时器1中断的中断子函数框架:```Cvoid TIMER1_ISR() interrupt 3{// 中断服务程序的代码// ...}```五、串口中断串口中断是通过串口通信接收和发送数据时触发的中断源。

当接收到数据或发送完成时,可触发串口中断。

以下是串口中断的中断子函数框架:```Cvoid UART_ISR() interrupt 4{// 判断中断类型if (RI){// 接收中断// 中断服务程序的代码// ...}else if (TI){// 发送中断// 中断服务程序的代码// ...}}```总结:以上是STC8系列单片机前5个中断源的中断子函数框架。

外部中断实验总结

外部中断实验总结

外部中断实验总结一、实验目的本次实验旨在通过外部中断的方式,实现对单片机的中断响应,并掌握中断程序设计方法。

二、实验原理外部中断是指由单片机外部硬件引脚产生的中断信号,当引脚电平发生变化时,单片机会立即停止当前执行的程序,跳转到相应的中断服务程序中执行。

在本次实验中,我们使用了8051单片机的INT0和INT1两个外部中断引脚。

三、实验器材1. 8051单片机开发板2. 电脑(用于编写和下载程序)3. LED灯4. 按钮开关四、实验步骤1. 编写程序:首先需要编写一个可以响应外部中断的程序。

我们可以通过设置相应寄存器来使单片机响应INT0和INT1两个引脚上的信号。

例如,在P3口接入一个按键开关,并将其与INT0引脚相连,则当按键被按下时,INT0引脚会被拉低,从而触发一个外部中断。

此时单片机会跳转到相应的ISR(Interrupt Service Routine)函数中执行。

2. 烧录程序:将编写好的程序烧录到8051芯片上。

这可以通过专门的烧录器或者通过串口下载实现。

在烧录程序之前,需要将引脚连接好,并确定中断触发方式(上升沿触发或下降沿触发)。

3. 测试程序:将LED灯连接到单片机的某个IO口上,以便测试程序是否可以正常响应外部中断。

当按下按钮开关时,LED灯应该会亮起。

五、实验结果通过本次实验,我们成功地实现了对8051单片机的外部中断响应,并掌握了中断程序设计方法。

在实验过程中,我们还学习了如何使用按键开关和LED灯来测试程序的正确性。

六、实验总结本次实验是一项非常基础的单片机实验,但是它对于初学者来说非常重要。

通过这个实验,我们不仅学会了如何编写一个简单的中断服务程序,还学会了如何使用按键开关和LED灯来测试程序的正确性。

这些知识对于今后的单片机编程工作都非常有帮助。

同时,在本次实验中我们也遇到了一些问题,例如引脚连接不正确等等,在解决这些问题的过程中也增加了我们对单片机原理和电路设计方面的认识。

stm32f103c8t6外部中断原理

stm32f103c8t6外部中断原理

一、概述在嵌入式系统中,外部中断是一种常见的事件触发机制,它能够使处理器在执行程序的过程中,及时地响应外部事件的发生,从而提高系统的实时性和稳定性。

在基于STM32F103C8T6芯片的嵌入式系统开发中,外部中断的使用具有重要的意义。

本文将介绍STM32F103C8T6外部中断的原理及其应用。

二、STM32F103C8T6外部中断的原理1. 外部中断概述外部中断是指处理器接收到外部输入信号后,及时地中断当前的程序执行,转而执行事先定义好的中断服务程序。

在STM32F103C8T6芯片中,具有多个外部中断引脚以及相关的中断控制寄存器,可以方便地实现外部中断功能。

2. 中断控制器STM32F103C8T6芯片的中断控制器包含若干中断控制寄存器,用于配置外部中断的触发条件、优先级、使能状态等。

通过对中断控制寄存器的配置,可以灵活地控制外部中断的响应行为。

3. NVICSTM32F103C8T6芯片内部集成了Nested Vectored Interrupt Controller(NVIC),负责管理和调度所有的中断源。

在实现外部中断功能时,需要通过NVIC对外部中断源进行优先级和使能的设置。

4. 外部中断触发条件在STM32F103C8T6芯片中,外部中断可以以上升沿、下降沿、上升沿和下降沿、低电平或者高电平触发。

在配置外部中断时,需要根据实际应用需求选择合适的触发条件,并进行相应的配置。

5. 外部中断服务程序一旦外部中断触发条件满足,处理器将立即响应中断,并跳转到预先定义好的外部中断服务程序中执行。

外部中断服务程序通常用于处理外部事件的逻辑,例如状态更新、数据采集、报警处理等。

三、STM32F103C8T6外部中断的应用1. 外部按键控制在很多嵌入式系统中,外部按键常常作为用户与系统交互的途径。

通过STM32F103C8T6的外部中断功能,可以轻松地实现外部按键的检测和响应,从而实现用户界面的交互控制。

stm8s外部中断

stm8s外部中断

stm8s外部中断
stm8s外部中断
stm8s外部中断相关的寄存器除了io的⼏个寄存器之外,还有就是EXTI_CR1,EXTI_CR2寄存器。

这⼏要注意,io的CR2寄存器的作⼏是开关中断。

另外,stm8s系列外部中断没有标志位。

以PC1下降沿触发为例,配置如下:
asm("sim");//关总中断
EXTI_CR1_PCIS = 2;//仅下降沿触发
PC_DDR_DDR1 = 0;//io⼏向:输⼏
PC_CR1_C11=0;//因为DDR为0,所以CR1为0表⼏浮空输⼏模式
PC_CR2_C21 = 1;//1:使能外部中断,0:关闭外部中断
asm("rim");//开总中断
说明:EXTI_CR1_PCIS可以选择0——3,含义如下图所⼏:
iar中断函数写法如下:
/* Defines an interrupt handler for EXTI2 vector. */
#pragma vector=7
__interrupt void EXTI2_IRQHandler(void)
{
}
中断函数我并没有写内容,说明⼏点:iar的中断向量号⼏stm8s 参考⼏册的中断向量号⼏2,所以⼏册⼏PC的终端向量号为5,此处为7。

STM32CubeMX实战教程(三)——外部中断(中断及HAL_Delay函数避坑)

STM32CubeMX实战教程(三)——外部中断(中断及HAL_Delay函数避坑)

STM32CubeMX实战教程(三)——外部中断(中断及HAL_Delay函数避坑)在STM32CubeMX实战教程中,我们已经学习了如何使用GPIO来控制LED的亮灭。

在这篇文章中,我们将进一步学习如何使用外部中断来实现更复杂的功能。

外部中断可以使我们的微控制器能够在输入发生变化时立即做出响应。

这对于需要实时性的应用非常重要,比如按钮的按下或松开的检测。

外部中断类似于计数器,不断地检测输入引脚的变化,并在变化时触发中断。

在STM32CubeMX中配置外部中断非常简单。

我们只需要选择外部输入引脚作为中断源,然后为中断配置触发方式即可。

触发方式可以是上升沿、下降沿或双边沿触发。

但要注意的是,当使用外部中断时,我们应该避免在中断服务子程序(ISR)中使用延时函数,如HAL_Delay。

这是因为在ISR中调用延时函数会导致中断响应时间增加,从而影响其他中断的响应和整个系统的实时性。

所以在ISR中,我们只能执行最核心、最迅速的操作。

为了避免在ISR中使用延时函数,我们可以使用定时器中断来实现延时。

定时器中断是一种定期触发的中断,在ISR中我们可以通过判断定时器的计数值来实现一定时间的延时。

下面是一个使用外部中断的示例代码:```c#include "stm32f4xx_hal.h"GPIO_InitTypeDef GPIO_InitStruct;EXTI_HandleTypeDef hexti;void SysTick_Handler(void)HAL_IncTick(;HAL_SYSTICK_IRQHandler(;void EXTI_IRQHandler(void)HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_0);void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) //在这里执行最核心、最迅速的操作int main(void)HAL_Init(;SystemClock_Config(;__HAL_RCC_GPIOA_CLK_ENABLE(;__HAL_RCC_SYSCFG_CLK_ENABLE(;GPIO_InitStruct.Pin = GPIO_PIN_0;GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING; GPIO_InitStruct.Pull = GPIO_PULLDOWN;HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);HAL_NVIC_SetPriority(EXTI0_IRQn, 0, 0);HAL_NVIC_EnableIRQ(EXTI0_IRQn);while (1)//在这里执行其他操作}```在这个示例中,我们使用PA0引脚,即用户按钮作为外部中断源。

外部中断实验遇到的问题和解决方法

外部中断实验遇到的问题和解决方法

外部中断实验遇到的问题和解决方法一、实验背景外部中断是指由外部设备或者其他引起的中断请求,例如按键、传感器等。

在单片机开发中,外部中断是非常重要的一种中断方式,它可以使单片机在执行某些任务时可以及时响应外界的事件。

二、实验目的本实验旨在通过使用STM32F103C8T6开发板和Keil uVision 5软件,学习如何配置和使用STM32F103C8T6外部中断,并解决在实验过程中可能遇到的问题。

三、实验步骤1. 硬件连接将STM32F103C8T6开发板上的PB0引脚连接到按键上,并将按键另一端连接到GND引脚上。

2. 配置GPIO口初始化首先需要配置PB0引脚为输入模式,并且使能其时钟。

具体代码如下:```RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); // 使能GPIOB口时钟GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; // PB0引脚GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; // 输入模式,带上拉GPIO_Init(GPIOB, &GPIO_InitStructure); // 初始化PB0口```3. 配置NVIC初始化需要配置NVIC(Nested Vector Interrupt Controller)初始化,使能外部中断并设置优先级。

具体代码如下:```NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn; // 外部中断0对应的中断通道NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1; //抢占优先级为1NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; // 子优先级为1NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; // 使能中断通道NVIC_Init(&NVIC_InitStructure); // 初始化NVIC```4. 配置外部中断初始化需要配置外部中断初始化,设置外部中断触发方式。

外部中断的设置和一些寄存器的介绍

外部中断的设置和一些寄存器的介绍

1)初始化IO 口为输入。

外部中断输入的IO 口的状态,可以设置为上拉/下拉输入,也可以设置为浮空输入,但浮空的时候外部一定要带上拉,或者下拉电阻。

否则可能导致中断不停的触发。

在干扰较大的地方,就算使用了上拉/下拉,也建议使用外部上拉/下拉电阻,这样可以一定程度防止外部干扰带来的影响。

①使能IO口的时钟②清除原来的相应的设置③设置成上拉输入0x80④把GPIO_ODR相应的位设置成 12)开启IO 口复用时钟,设置IO 口与中断线的映射关系。

STM32 的IO 口与中断线的对应关系需要配置外部中断配置寄存器EXTICR,这样我们要先开启复用时钟,然后配置IO 口与中断线的对应关系。

才能把外部中断与中断线连接起来。

①使能复用时钟RCC_APB1ENR第0位AFIOEN:辅助功能IO时钟使能RCC->APB1ENR |= 1<<0②设置外部中断配置寄存器(AFIO_EXTICR1)总共有三个配置寄存器,分别对应着15个中段线。

每个寄存器存放四个。

如上图。

在设置这些位时仍然2步:首先:清除原来的设置。

AFIO->EXTICR[0]&=~(0x000F<<0); //清除中断线0的原来的设置然后:设置映射到那个端口。

AFIO->EXTICR[0]|=0<<0;//设置引脚为0000也就是A口扩展:事件控制寄存器(AFIO_EVCR)位7 EVOE:允许事件输出(Event output enable) 位7 该位可由软件读写。

当设置该位后,Cortex的EVENTOUT将连接到由PORT[2:0]和PIN[3:0]选定的I/O口。

位6:4PORT[2:0]:端口选择000:选择PA 001:选择PB 010:选择PC 011:选择PD 100:选择PE位3:0 PIN[3:0]:引脚选择(x=A…E)0000:选择Px0 0001:选择Px1 0010:选择Px2 0011:选择Px3 0100:选择Px4 0101:选择Px5 0110:选择Px6 0111:选择Px7 1000:选择Px8 1001:选择Px9 1010:选择Px10 1011:选择Px11 1100:选择Px12 1101:选择Px13 1110:选择Px14 1111:选择Px153)开启与该IO 口相对的线上中断/事件,设置触发条件我们要配置中断产生的条件,STM32 可以配置成上升沿触发,下降沿触发,或者任意电平变化触发,但是不能配置成高电平触发和低电平触发。

外部中断实验报告

外部中断实验报告

一、实验目的1. 理解单片机外部中断的概念和工作原理。

2. 掌握MCS-51单片机外部中断的编程方法。

3. 通过实验验证外部中断在实际应用中的效果。

二、实验环境1. 实验设备:MCS-51单片机实验板、按键、LED灯、面包板、连接线等。

2. 开发环境:Keil uVision5软件。

三、实验原理外部中断是单片机的一个重要功能,用于响应外部事件。

当外部事件发生时,CPU可以暂停当前程序,转而执行中断服务程序,处理外部事件。

MCS-51单片机有两个外部中断源,即INT0和INT1。

四、实验内容1. 硬件连接将按键连接到单片机的INT0或INT1引脚,LED灯连接到单片机的某个I/O口。

具体连接方式如下:- 将按键的一端连接到单片机的INT0或INT1引脚,另一端连接到地。

- 将LED灯的正极连接到单片机的某个I/O口,负极连接到地。

2. 程序设计(1)初始化单片机```cvoid main() {EA = 1; // 开启总中断EX0 = 1; // 开启INT0中断IT0 = 1; // 设置INT0为下降沿触发P1 = 0xFF; // 初始化P1口为高电平,关闭LED灯 while(1) {// 主循环}}```(2)编写中断服务程序```cvoid ext0_isr() interrupt 0 {P1 = 0x00; // 点亮LED灯delay(500); // 延时0.5秒P1 = 0xFF; // 熄灭LED灯}```(3)编写延时函数```cvoid delay(unsigned int ms) {unsigned int i, j;for(i = 0; i < ms; i++)for(j = 0; j < 123; j++);}```3. 实验步骤1. 编写程序,并使用Keil uVision5软件进行编译和烧录。

2. 将程序烧录到单片机中,并连接好硬件电路。

3. 按下按键,观察LED灯是否闪烁。

外部中断实验总结

外部中断实验总结

外部中断实验总结外部中断实验总结一、实验目的本次实验的目的是了解外部中断的原理和应用,并通过实验掌握外部中断的使用方法。

二、实验原理外部中断是指通过外部触发器触发的中断,常见的外部触发器有按键、传感器等。

当外部触发器触发后,会发送一个中断信号到微控制器,微控制器根据中断信号进行相应的中断处理。

外部中断的使用步骤如下:1. 设置外部中断控制寄存器的相关位,启用外部中断功能;2. 设置外部中断触发条件,可以设置为下降沿触发、上升沿触发或边沿触发;3. 设置中断服务程序,中断服务程序是处理外部中断的主要功能代码,一般在该函数中执行相应的操作;4. 在主函数中开启总中断或者特定中断;5. 当外部中断触发时,中断服务程序将被自动调用执行;6. 中断服务程序执行完后,程序将恢复到中断之前的状态继续执行。

三、实验步骤与结果本次实验使用STM32F103C8T6开发板来进行外部中断的实验。

主要步骤如下:1. 搭建电路:将一个按键与STM32F103C8T6的外部中断引脚相连,将按键的另一端与地相连。

确保按键按下时,外部中断引脚与地相连,触发外部中断。

2. 配置GPIO:配置外部中断引脚与GPIO的对应关系,设置为输入模式。

3. 配置中断线:配置外部中断所对应的中断线,使其能够响应外部中断。

4. 配置中断触发方式:配置外部中断触发的方式,例如下降沿触发。

5. 编写中断服务程序:编写中断服务程序,按下按键时,LED 灯亮起;释放按键时,LED灯熄灭。

6. 开启中断:在主函数中开启总中断。

7. 通过Keil等开发工具进行编译和下载。

8. 按下按键,触发外部中断,LED灯亮起;释放按键,触发外部中断,LED灯熄灭。

四、实验总结通过本次实验,我对外部中断有了更深入的了解。

外部中断是在特定条件触发时,通过外部触发器向微控制器发送中断信号,微控制器根据中断信号进行相应的中断处理。

在实验过程中,我们需要配置外部中断的相关寄存器、设置中断触发方式、编写中断服务程序等。

单片机五种中断类型

单片机五种中断类型

单片机五种中断类型
1. 特殊硬件外部中断:
特殊硬件外部中断是指单片机能够监测外部某些特殊硬件信号,当这
些硬件信号跳转电平发生变化时,单片机立刻识别,根据编程代码的
设置打断当前的程序执行,从而进入中断服务程序中执行某些特殊的
功能操作的中断类型,常用的外部硬件设备包括定时器,串行通信端口,外部中断请求线等。

2. 内部特殊条件中断:
内部特殊条件中断是单片机处理器根据内部状态检测特殊条件是否满足,从而自动执行相应的中断服务程序的中断类型。

这些特殊条件包
括计数器溢出,定时器完成重复动作,以及某些子程序返回等,这些
功能有时也被称为定时器硬件中断、子程序中断等。

3. 系统总线外部中断:
系统总线外部中断是指单片机的处理器检测系统总线线路上是否发生
了特殊的外部中断,如系统总线中断请求信号、总线错误检测信号等,如果这些系统总线外部中断发生,处理器就会立刻响应,打断正在执
行的当前程序,从而进入相应的中断服务程序中进行处理。

4. 多重向量中断:
多重向量中断一般由操作系统程序设定,它由一组特殊的中断向量构
成,每个中断向量都是一个指定的处理功能,处理器能够用向量的方式发出中断请求,让存放中断服务程序的芯片知道有哪种中断请求,从而直接进入特定的中断服务程序,而不必做特定的判断操作。

5. 软件中断:
软件中断一般是大多数单片机内部指令集支持的功能,它由单片机内部模拟处理器根据一定的条件执行特定指令,从而发生中断,这通常用来实现操作系统、任务间切换以及响应资源共享等功能,常见的软件中断有中断入口(INT)异常入口(TRAP)等。

stc8系列单片机前五个中断源的中断子函数框架

stc8系列单片机前五个中断源的中断子函数框架

stc8系列单片机前五个中断源的中断子函数框架STC8系列单片机是广泛应用于嵌入式系统开发的一种单片机。

该系列单片机具有丰富的外设资源和强大的中断功能,可以通过中断实现对各类事件的处理。

接下来,我将为您详细介绍STC8系列单片机前五个中断源的中断子函数框架。

1.外部中断(INT0和INT1):外部中断是通过外部触发器(例如按钮或传感器)触发的中断。

需要在程序中使用`IE2`和`EX0/EX1`来使能和配置外部中断。

```Cvoid externalInterrupt( interrupt 0/2//在中断函数中处理外部中断的相关操作//...```在中断函数中,您可以处理外部中断所需的任何操作,比如修改变量、执行特定的代码等。

2.定时器/计数器中断(TIMER0和TIMER1):定时器/计数器中断是在定时器/计数器溢出时触发的中断。

需要在程序中使用`IE2`和`ET0/ET1`来使能和配置定时器/计数器中断。

```C//在中断函数中处理定时器/计数器中断的相关操作```在中断函数中,您可以处理定时器/计数器中断所需的任何操作,比如修改变量、执行特定的代码等。

3.串口中断(UART):串口中断是在接收到数据或完成数据发送时触发的中断。

需要在程序中使用`IE2`和`ES`来使能和配置串口中断。

```Cvoid uartInterrupt( interrupt 4//在中断函数中处理串口中断的相关操作//...```在中断函数中,您可以处理串口中断所需的任何操作,比如接收数据、发送数据、修改变量等。

4.ADC中断(ADC):ADC中断是在模数转换完成时触发的中断。

需要在程序中使用`IE2`和`ET2`来使能和配置ADC中断。

```Cvoid adcInterrupt( interrupt 7//在中断函数中处理ADC中断的相关操作```在中断函数中,您可以处理ADC中断所需的任何操作,比如读取模拟值、修改变量等。

外部中断(EXTI)的学习

外部中断(EXTI)的学习

tmp = ((uint32_t)0x0F) << (0x04 * (GPIO_PinSource & (uint8_t)0x03)); AFIO->EXTICR[GPIO_PinSource >> 0x02] &= ~tmp; AFIO->EXTICR[GPIO_PinSource >> 0x02] |= (((uint32_t)GPIO_PortSource) << (0x04 * (GPIO_PinSource & (uint8_t)0x03))); }
void EXTI_key_config(void) {
GPIO_InitTypeDef GPIO_InitStructure; EXTI_InitTypeDef EXTI_InitStructure; NVIC_InitTypeDef NVIC_InitStructure; /* 使能 GPIOC 时钟 */ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); /* 配置 PC6 引脚为输入浮空 */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOC, &GPIO_InitStructure); /* 配置 PD13 PD14 引脚为输入浮空 */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13|GPIO_Pin_14; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOD, &GPIO_InitStructure);

外部中断实训报告

外部中断实训报告

一、实训目的本次外部中断实训旨在通过实际操作,加深对单片机外部中断原理和应用的了解,掌握外部中断的配置方法,提高在嵌入式系统设计中应用外部中断的能力。

二、实训环境1. 硬件环境:51单片机开发板、Keil5 for C51开发软件、Proteus 7 Professional仿真软件。

2. 软件环境:Keil5 for C51编译器、Proteus 7 Professional仿真软件。

三、实训原理外部中断是单片机与外部设备进行交互的重要方式之一。

当外部设备产生信号时,单片机可以通过外部中断来响应这些信号,从而实现与外部设备的同步处理。

51单片机提供了两个外部中断源:INT0和INT1,它们分别连接到P3.2和P3.3引脚。

四、实训过程1. 软件设计:- 使用Keil5 for C51编写程序,实现外部中断的基本功能。

- 定义外部中断函数,用于处理外部中断事件。

- 配置外部中断触发方式(上升沿触发或下降沿触发)。

- 设置外部中断优先级。

2. 硬件连接:- 将外部设备(如按钮)连接到单片机的INT0或INT1引脚。

- 根据需要配置外部中断的触发方式。

3. 程序下载与仿真:- 使用Keil5 for C51编译程序,生成HEX文件。

- 将HEX文件下载到单片机开发板。

- 使用Proteus 7 Professional进行仿真,观察外部中断的响应情况。

4. 结果分析:- 在仿真过程中,按下外部设备(如按钮),观察单片机是否能够正确响应外部中断。

- 分析中断处理函数的执行情况,确保外部中断能够正确处理。

五、实训结果1. 成功实现了外部中断的基本功能,包括中断触发、中断处理和中断优先级设置。

2. 通过仿真验证了外部中断的响应情况,确认单片机能够正确响应外部中断事件。

3. 通过实际操作,加深了对单片机外部中断原理和应用的理解。

六、实训总结1. 理论知识:通过本次实训,加深了对单片机外部中断原理的理解,掌握了外部中断的配置方法。

STM8之外部中断长按键识别相关内容

STM8之外部中断长按键识别相关内容
STM8之外部中断长按键识别相关内容
STM8常用中断指令
开总中断
_asm(rim);
禁止中断
_asm(sim);
进入停机模式
_asm(halt);
中断返回
_asm(iret);
等待中断
_asm(wfi);
软件中断
_asm(trap);
STM8S常用中断映射
如使用中断函数时,可以通过在上图中查找相对应的中断向量号,而
中断函数的名字可以自定义
外部中断长按键识别相关配置
??STM8S为外部中断事件专门分配了五个中断向量:
PortA口的5个引脚:PA[6:2]
PortB口的8个引脚:PB[7:0]
PortC口的8个引脚:PC[7:0]
PortD口的7个引脚:PD[6:0]
PortE口的8个引脚:PE[7:0]
PD7是最高优先级的中断源(TLI);
EXTI_CR1:
??配置促发方式;
测试代码
另参见不用外部中断长按键识别:不用外部中断识别长按键
中断IO设置
这里选用EXTI2(端口C外部中断)。那幺需要将中断促发的IO
(PC5)设置为上拉输入或中断上拉输入,悬浮输入的话很容易受干扰。
/*PC5设置为上拉输入*/
voidInit_EXTI2_GPIO(void)
{
PC_DDR &amp;= 0XDF;
PC_CR1 &amp;= 0XDF;
PC CC寄存器中断位:
I0不能直接写,只能通过开中断或关中断来写,上电默认是11;当用
指令开中断时(_asm(rim\n);),为00;当发生中断时,由当前中断
(ITC_SPRx)载入I[1:0],主要用于做中断优先级;退出中断自动清0;因
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

External interrupt control register 1 (EXTI_CR1)
地址偏移量:0x00 复位值:0x00
7
6
5
4
3
2
1
0
RW
RW
RW
RW
RW
RW
RW
RW
P3IS[1:0]
P2IS[1:0]
P1IS[1:0]
P0IS[1:0]
每个端口的 bit3
每个端口的 bit2
每个端口的 bit1
P5IS[1:0]
P4IS[1:0]
每个端口的 bit7
每个端口的 bit6
每个端口的 bit5
每个端口的 bit4
的外部中断触发方式 的外部中断触发方式 的外部中断触发方式 的外部中断触发方式
设置位。(当 CCR 寄存 设置位。(当 CCR 寄存 设置位。(当 CCR 寄存 设置位。(当 CCR 寄存
I1 和 I0 都 被 置 1 时 I1 和 I0 都 被 置 1 时 都 被 置 1 时 (level 3-- 都 被 置 1 时 (level 3--
(level 3-- 软 件 优 先 级 (level 3--软 件 优 先 级 软件优先级使能,CCR 软件优先级使能,CCR
使能,CCR 寄存器复 使能,CCR 寄存器复 寄存器复位值两位都 寄存器复位值两位都
位值两位都是 1),这 位值两位都是 1),这 是 1),这些位只能被 是 1),这些位只能被
些位只能被写)。
些位只能被写)
写)
写)
需要注意的是,
需要注意的是,
需要注意的是,
需要注意的是,
在 Port F[3:0] 与 Port 在 Port E[3:0] 与 Port 在 Port D[3:0] 与 Port 在 Port B[3:0] 与 Port
这些位只能被写)
这些位只能被写)
这些位只能被写)
这些位只能被写)
这些位配置端口
这些位配置端口
这些位配置端口
这些位配置端口
A,B,C,D,E 的 bit3 的外 A,B,C,D,E 的 bit2 的外 A,B,C,D,E 的 bit1 的外 A,B,C,D,E 的 bit0 的外 部中断的触发方式。 部中断的触发方式。 部中断的触发方式。 部中断的触发方式。
10:下降沿触发。 10:下降沿触发。 10:下降沿触发。 10:下降沿触发。
11:上升沿和下
11:上升沿和下
11:上升沿和下 11:上升沿和下降沿
降沿触发。
降沿触发。
降沿触发。
触发。
External interrupt control register 4 (EXTI_CR4)
地址偏移量:0x0A 复位值:0x00
用于端口中断的寄存器,当某一端口发生中断时相应的位置 1。Bit 5:0
表示端口 H,G,F,E,D,B。
为 0 时没有发生中断。
为 1 时发生中断。
要注意的是,这些标志位要软件清零,并且清零是写 1 而不是写 0,
另外,端口 H、G 只存在l interrupt port select register (EXTI_CONF1)
地址偏移量:0x05
复位值:0x00
7
6
PFES
PFLIS
RW
RW
端口
端口
F 或 端 口 F[3:0] 外
E 中断 选 部中断选
择。
择。
0:端
0:端
口 E 被使 口 F[3:0]
用于外部 用于线中
中断。 断。
1:端
1:端
口 F 被使 口 F[3:0]
用于外部 用于端端口 E[7:4] 外 部中断选 择。
0 PBLIS RW
端口 B[3:0] 外 部中断选 择。
0:端 口 B[3:0] 用于线中 断。 1:端口 B[3:0] 用 于端口中 断。
External interrupt port select register (EXTI_CONF2)
地址偏移量:0x0B
复位值:0x00
7
6
保留
PHDS
RW
设置位。(当 CCR 寄存 器的 I1 和 I0 都被置 1 时 (level 3-- 软 件 优 先 级使能,CCR 寄存器
设置位。(当 CCR 寄存 器的 I1 和 I0 都被置 1 时 (level 3-- 软 件 优 先 级使能,CCR 寄存器
复位值两位都是 1), 复位值两位都是 1), 复位值两位都是 1), 复位值两位XTI_CR3 类似,并且控制的 Port H 和 Port G 只在个别型号里才有的,不做叙述。
External interrupt status register 1 (EXTI_SR1)
地址偏移量:0x03
复位值:0x00
7
6
5
4
3
2
1
0
P7F
P6F
P5F
P4F
P3F
P2F
P1F
P0F
RC_W1 RC_W1 RC_W1 RC_W1 RC_W1 RC_W1 RC_W1 RC_W1
用于线中断的寄存器,当某一线路发生中断对应位置 1。bit 7:0 表示端口 A/B/C/D/E/F 中的
Pin0-Pin7。
为 0 时没有发生中断。
为 1 时发生中断。
相关寄存器
与外部中断相关的主要的寄存器有:EXTI_CR1、EXTI_CR2、EXTI_CR3、EXTI_CR4、EXTI_SR1、EXTI_SR2、EXTI_CONF1、 EXTI_CONF2。
其中,EXTI_CR1、EXTI_CR2 用于配置线中断时引脚的中断触发方式。XTI_CR3、EXTI_CR4 用于配置端口中断时引 脚的中断触发方式。EXTI_SR1 用于线中断的中断标志位,EXTI_SR2 用于端口中断的中断标志位,所以,EXTI_SR1 只 能表示某个 bit 位而无法表示端口,而 EXTI_SR2 只能表示端口无法表示具体的 bit 位。EXTI_CONF1、EXTI_CONF2 是 配置每个端口的习笔记:外部中断
注:笔者学习的芯片型号为 STM8L151K4
线中断和端口中断
STM8L 的外部中断分为线中断和端口中断。 线中断:每个端口中 Pin 号相同的引脚共用一个中断资源,如 PA2、PB2、PC2、PD2(Px2)。因为这几个引脚在其 各自的端口中的 Pin 号都是 2,所以共用一个中断,共用的中断称之为中断线 2,同理,如果 Pin 号是 3,则是中断 线 3。公用中断的意思是这几个引脚触发的中断都会进入同一个中断处理函数,也就是中断线 2 的处理函数。在线 中断中,中断处理函数以中断线号区分。每一个中断线 n 都对应着一个中断线 n 处理函数。 端口中断:同一个端口号中的所有引脚共用一个中断资源,如 PA0、PA2、PA3、PA4(PAx)。其他也是和线中断类 似的。端口中断的处理函数的区别以端口区分,同一个端口的引脚触发中断都是进入同一个端口中断处理函数。
RW
RW
RW
RW
RW
PFIS[1:0]
PEIS[1:0]
PDIS[1:0]
PBIS[1:0]
端口 F 的外部中
端口 E 的外部中 端口 D 的外部中断的 端口 B 的外部中断的
断 的 触 发 方 式 设 置 断 的 触 发 方 式 设 置 触发方式设置位。(当 触发方式设置位。(当
位。(当 CCR 寄存器的 位。(当 CCR 寄存器的 CCR 寄存器的 I1 和 I0 CCR 寄存器的 I1 和 I0
需要注意的是,这些标志位要软件清零,并且清零是写 1 而不是写 0。
External interrupt status register 1 (EXTI_SR2)
地址偏移量:0x04
复位值:0x00
7
6
保留位
5
4
3
2
1
0
PHF
PGF
PFF
PEF
PDF
PBF
RC_W1 RC_W1 RC_W1 RC_W1 RC_W1 RC_W1
RW
5 PGBS RW
4 PHHIS RW
3 PHLIS RW
2 PGHIS RW
1 PGLIS RW
0 PFHIS RW
第5页共8页
端口 H 或端口 D 选择。
0:端 口 D 被使 用于外部 中断。
1:端 口 H 被使 用于外部 中断
端口 G 或端口 B 选择。
0:端 口 B 被使 用于外部 中断。
器的 I1 和 I0 都被置 1 器的 I1 和 I0 都被置 1 器的 I1 和 I0 都被置 1 器的 I1 和 I0 都被置 1
时 (level 3-- 软 件 优 先 时 (level 3--软 件 优 先 时 (level 3-- 软 件 优 先 时 (level 3-- 软 件 优 先
级使能,CCR 寄存器 级使能,CCR 寄存器 级使能,CCR 寄存器 级使能,CCR 寄存器
每个端口的 bit0
的外部中断触发方式 的外部中断触发方式 的外部中断触发方式 的外部中断触发方式
设置位。(当 CCR 寄存 器的 I1 和 I0 都被置 1 时 (level 3-- 软 件 优 先 级使能,CCR 寄存器
设置位。(当 CCR 寄存 器的 I1 和 I0 都被置 1 时 (level 3--软 件 优 先 级使能,CCR 寄存器
1:口
端口
H[7:4] 外 H[3:0] 外 G[7:4] 外
部中断选 部中断选 部中断选
0:端 口 E[7:4] 用于线中 断。
1:端 口 E[7:4] 用于端口 中断
相关文档
最新文档