STM8->EXTI

发布者:芳华逝水最新更新时间:2019-01-26 来源: eefocus关键字:STM8  EXTI 手机看文章 扫描二维码
随时随地手机看文章

中断,特别是外部中断,是MCU实现复杂功能的重要手段。




中断源和向量:


    所有I/O引脚都具有外部中断能力,每一个端口都有独立的中断向量以及独立的标志


    各功能外设的中断


    最多32个中断向量(入口地址已由硬件固定),最多40个外部中断源(4级可编程的软件嵌套优先级),其中的11个中断向量被分配为外部中断。



优先级及响应逻辑:


    复位具有最高优先级,复位期间所有中断被禁止。



同一时间可以有几个中断排队等待处理时:


1. 最高软件优先级的中断被响应;(通过ITC->SPRx寄存器I1和I0配置每一个中断的软件优先级)


2. 如果几个排队的中断具有相同的软件优先级,那么最高硬件优先级的中断先响应。//中断的硬件优先级是唯一且互斥的


    硬件中断优先级低->高:MAIN、IT4、IT3、IT2、IT1、IT0、TRAP和RESET。中断屏蔽可通过CC寄存器的位I1和位I0以及设置软件优先级的ITC->SPRx实现。PD7是最高优先级的硬件中断源TLI入口。




中断的管理


1、并发中断管理模式所有优先级都是3级,除响应RESET、TRAP、TLI中断,不可以被打断;


2、嵌套中断管理模式允许在中断程序中响应中断;一旦有中断的优先级低于3级该模式立即有效;


使用中断控制器ITC对各中断进行管理:


    不可屏蔽的事件: RESET, TRAP;不可屏蔽的最高优先级的硬件中断TLI


    不可屏蔽的中断: RESET,TLI和TRAP拥有最高的软件优先级来处理,不考虑CC寄存器的I1和I0的状态。


    在TLI中断服务子程序中禁止使用TRAP指令,TLI中断可中断(除TRAP及RESET之外)3级软件中断,软件中断TRAP不能使处理器从停机Halt模式退出。






简单中断的配置和使用(以STM8L151为例):


    GPIO_Init(KEY_PORT, KEY_Pin, GPIO_Mode_In_FL_IT);


    EXTI_DeInit (); 


    EXTI_SetPinSensitivity(EXTI_Pin_4,EXTI_Trigger_Falling);


如果使用寄存器来配置中断:


寄存器EXTI->CR1功能定义



寄存器EXTI->CR2功能定义



使能中断


    {asm("rim"); }== {enableInterrupts();}


其在stm8l15x.h文件中对中断的定义如下:


 #define enableInterrupts()    __enable_interrupt()   /* enable interrupts */

 #define disableInterrupts()   __disable_interrupt()  /* disable interrupts */

 #define rim()                 __enable_interrupt()   /* enable interrupts */

 #define sim()                 __disable_interrupt()  /* disable interrupts */




详细的32个中断向量定义:


#define FLASH_EOP_vector                     0x03

#define FLASH_WR_PG_DIS_vector               0x03

#define DMA1_CH0_HT_vector                   0x04

#define DMA1_CH0_TC_vector                   0x04

#define DMA1_CH1_HT_vector                   0x04

#define DMA1_CH1_TC_vector                   0x04

#define DMA1_CH2_HT_vector                   0x05

#define DMA1_CH2_TC_vector                   0x05

#define DMA1_CH3_HT_vector                   0x05

#define DMA1_CH3_TC_vector                   0x05

#define RTC_ALARM_vector                     0x06

#define RTC_WAKEUP_vector                    0x06

#define EXTIE_vector                         0x07

#define EXTIF_vector                         0x07

#define EXTIPVD_vector                       0x07

#define EXTIB_vector                         0x08

#define EXTID_vector                         0x09

#define EXTI0_vector                         0x0A

#define EXTI1_vector                         0x0B

#define EXTI2_vector                         0x0C

#define EXTI3_vector                         0x0D

#define EXTI4_vector                         0x0E

#define EXTI5_vector                         0x0F

#define EXTI6_vector                         0x10

#define EXTI7_vector                         0x11

#define CLK_CSS_vector                       0x13

#define CLK_SWITCH_vector                    0x13

#define TIM1_BIF_vector                      0x13

#define COMP_EF1_vector                      0x14

#define COMP_EF2_vector                      0x14

#define TIM2_OVR_UIF_vector                  0x15

#define TIM2_CAPCOM_BIF_vector               0x16

#define TIM2_CAPCOM_CC1IF_vector             0x16

#define TIM2_CAPCOM_CC2IF_vector             0x16

#define TIM2_CAPCOM_TIF_vector               0x16

#define TIM3_OVR_UIF_vector                  0x17

#define TIM3_CAPCOM_BIF_vector               0x18

#define TIM3_CAPCOM_CC1IF_vector             0x18

#define TIM3_CAPCOM_CC2IF_vector             0x18

#define TIM3_CAPCOM_TIF_vector               0x18

#define TIM1_OVR_UIF_vector                  0x19

#define TIM1_CAPCOM_CC1IF_vector             0x1A

#define TIM1_CAPCOM_CC2IF_vector             0x1A

#define TIM1_CAPCOM_CC3IF_vector             0x1A

#define TIM1_CAPCOM_CC4IF_vector             0x1A

#define TIM1_CAPCOM_COMIF_vector             0x1A

#define TIM1_CAPCOM_TIF_vector               0x1A

#define TIM4_TIF_vector                      0x1B

#define TIM4_UIF_vector                      0x1B

#define SPI_MODF_vector                      0x1C

#define SPI_OVR_vector                       0x1C

#define SPI_RXNE_vector                      0x1C

#define SPI_TXE_vector                       0x1C

#define SPI_WKUP_vector                      0x1C

#define USART_T_TC_vector                    0x1D

#define USART_T_TXE_vector                   0x1D

#define USART_R_IDLE_vector                  0x1E

#define USART_R_OR_vector                    0x1E

#define USART_R_PE_vector                    0x1E

#define USART_R_RXNE_vector                  0x1E

#define I2C_ADD10_vector                     0x1F

#define I2C_ADDR_vector                      0x1F

#define I2C_AF_vector                        0x1F

#define I2C_ARLO_vector                      0x1F

#define I2C_BERR_vector                      0x1F

#define I2C_BTF_vector                       0x1F

#define I2C_OVR_vector                       0x1F

#define I2C_RXNE_vector                      0x1F

#define I2C_SB_vector                        0x1F

#define I2C_STOPF_vector                     0x1F

#define I2C_TXE_vector                       0x1F

#define I2C_WUFH_vector                      0x1F


关键字:STM8  EXTI 引用地址:STM8->EXTI

上一篇:STM8->GPIO
下一篇:STM8L15x系列DAC的使用

推荐阅读最新更新时间:2024-03-16 16:23

STM8与汇编语言(8)--16位定时器应用
当需要更长时间的定时时,最好使用16位的定时器,STM8单片机中都提供了2到3个的16位定时器,方便用户使用。 下面的代码给出了一个采用16位定时器实现的定时中断程序,在定时中断程序中,驱动LED指示灯的闪烁。 切记,一定要将中断服务程序的入口地址填写到中断向量表中,并且要根据定时器的中断向量号在正确的位置上填写。 同样还是利用ST的开发工具,生成一个汇编程序的框架,然后修改其中的main.asm,修改后的代码如下。 编译通过后,下载到开发板,运行程序,可以看到LED在闪烁,或者用示波器可以在LED引脚上看到方波。 stm8/ #include mapping.inc #include
[单片机]
ATmega16L-----外部中断0,1中断嵌套
/***************************************   取自周兴华《AVR单片机C语言高级程序设计》   进入INT1中断的时候,再开启全局中断,   这时候INT0中断触发,可以形成中断嵌套 ***************************************/   #include iom16v.h   #include macros.h   #define uchar unsigned char   #define uint unsigned int   uint shu;   /***************************************   delay   ***
[单片机]
Tiny4412中断控制器(GIC)之外部中断
#include regs.h void enable_mmu(unsigned long ttb); void init_ttb(unsigned long *ttb_base); void mmap(unsigned long *ttb_base, unsigned long va, unsigned long pa); void memset(char *buf, char ch, int size); void memcpy(char *dst, char *src, int size); void do_irq(unsigned long regs ); void (*printf)(char *, ...) = 0x
[单片机]
基于STM8的RFID程序设计
好久好久没有更新了~ 现在开始在实习,正好公司最近在做一款宾馆用的插卡取电模块,用的是STM8配合RFID MFRC522模块实现的,国庆没事正好在淘宝上买了一款RFID模块,配合自己的STM8,体验一下。 MFRC522 模块使用了支持 SPI UART I2C,但是一般都使用SPI接口开发(难道是因为淘宝上的程序都是SPI?!) MFRC522是个很有故事的芯片,因为打开它的数据手册,映入眼帘的是一大团寄存器,我去这尼玛是哪家新出的单片机,说好的芯片不就是几个引脚的故事吗! 不过好在这些寄存器的操作我们不用去了解,直接使用库函数即可。 关于接口 因此在我们移植程序的时候,需要将STM8的 SCK设置为输
[单片机]
基于<font color='red'>STM8</font>的RFID程序设计
凌阳16位单片机之外部中断
实现功能:利用外部中断来控制8个发光二极管的点亮与熄灭,利用键盘产生外部中断触发信号。 实验现象:当按S20键时,D8~D11四个发光二极管点亮,当按S21键时,D4~D7四个发光二极管点亮。 #include SPCE061A.H unsigned int output=0; void IRQ3(void)__attribute__((ISR)); void IRQ3() { unsigned int delay; *P_IOA_Data = 0x00ff; if(*P_INT_Ctrl & C_IRQ3_EXT1) { *P_IOA_Data = 0x000f; de
[单片机]
STM32F10x外部中断EXTI
一、EXTI是什么? EXTI(External interrupt/event controller)外部中断事件控制器,在单片机中占有非常重要的地位。代码默认地从上向下执行,遇到条件或者其他语句,会按照指定的地方跳转。而在单片机执行代码的过程中,难免会有一些突发的情况需要处理,这样就会打断当前的代码,待处理完突发情况之后,程序会回到被打断的地方继续执行。 二、使用方法 1.功能框图及寄存器 20个线路可以被配置成软件中断/事件线。下面是产生软件中断的过程: ● 配置20个中断/事件线屏蔽位(EXTI_IMR, EXTI_EMR) ● 设置软件中断寄存器的请求位(EXTI_SWIER) 当配置好软件中断事件寄
[单片机]
STM32F10x<font color='red'>外部中断</font><font color='red'>EXTI</font>
STM8 开发环境、最小项目工程、最小系统
一、STM8开发环境 使用STM8需下载下列工具: 1、ST 8bit MCU通用集成开发环境 - ST Visual Develop http://www.st.com/stonline/products/support/micro/files/st7toolset.exe IDE包含代码编辑、汇编编译器、代码调试功能,不含C编译器。同时IDE还自带ST Visual Programer编程软件,支持主流8bit 2、COSMIC C Compiler for STM8 16K Limited http://www.cosmicsoftware.com/download_stm8_16k.php 免费下
[单片机]
<font color='red'>STM8</font> 开发环境、最小项目工程、最小系统
支持网络传感器的嵌入式操作系统设计
  网络传感器是集传感器技术、嵌入式计算技术、现代网络及通信技术、分布式信息处理技术于一身的资源受限的嵌入式设备,是“普适计算”在微型嵌入式领域的一种重要应用模式。   网络传感器的研究过去一直受限于硬件平台而发展缓慢。随着半导体技术、通信技术、微电子技术和微机械技术的不断进步,低功耗、低价格、多功能的传感器网络系统得到了快速发展,使得制作微小、有弹性、低功耗的传感器节点成为现实。    背景    应用特点   网络传感器应用有其自身的特点,主要有以下几个方面:小尺寸和低功耗、并发密集操作、有限的物理并行性和控制层次、多样化的设计和使用。一方面,传感器资源极其有限,给底层嵌入式程序设计带来较大的限制;另一方面,传感器上运
[传感技术]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved