历史上的今天

今天是:2024年09月06日(星期五)

正在发生

2021年09月06日 | STM8的中断系统以及外部中断详解

发布者:名字太长了吗 来源: eefocus关键字:STM8  中断系统  外部中断 手机看文章 扫描二维码
随时随地手机看文章

STM8具有最多32的中断系统,在中断的处理上类似于cortexm系列的芯片,首先是每个中断的向量都是固化在系统内部的,用户需要向相应的中断向量flash位置写入中断处理函数,其二,每个中断向量都具有可编程的优先级,共有两位优先级,两个BIT的优先级可以催化出4个优先级,具体如下



中断控制器内部有一些寄存器专门用来存放相应的中断的中断优先级,同同时,在系统内部也有一个系统寄存器CC他的第三位和第五位分别表示当前正在处理的中断的优先级


可以这样认为,中断发生的时候,系统寄存器在执行中断向量跳转的时候自动载入了相应的中断优先级到系统寄存器CC中.


中断的处理遵循先判断软件优先级后判断硬件优先级的模式,当几个中断同时发生的时候,系统会根据其固化的硬件优先级进行相应,


另外,STM8支持中断嵌套,因为软件优先级就4级,最多也就软件优先级三层嵌套

对STM8的中断进行操作其实也简单


1.配置系统中断的打开或关闭


2.配置想要使用的中断向量的软件优先级


3. 打开相应的外设中断源的中断,就可以响应了

 

针对于外部中断来说,首先,STM8的每一个引脚都能支持外部中断,但是在中断向量上,不是每一个引脚都有

独立的中断向量,而是每个端口共用一个中断向量,在端口中断向量处理函数中检查到底是哪一个引脚出现了问题,

对于外部中断的配置,如下



可以定义中断的触发模式,电平触发,下降沿触发等,这个寄存器存放了A B CD四个向量的中断模式



该寄存器存放了E向量的中断

另外,外部中断中有一个特殊的中断叫做TLI不可屏蔽中断,也就是PD7,他不属于D中断向量而是拥有自己的TLI中断向量

 

使用外部中断的过程

1.根据前面的描述配置中断向量

2.配置中断端口的触发模式

3.对相应的GPIO口选择中断输入模式

 

在使用中断函数的时候需要注意,外部中断的中断函数我们并没有一个寄存器告诉我们哪一个中断向量的哪一个引脚发生了中断

需要我们读取端口的信息,假设是下降沿中断触发,那么中断处理函数在运行的时候,该引脚应该是电平的,检查哪一个引脚是低电平,我们就可以知道哪一个引脚发生了中断

从而进行正确的处理

 

所以最好是一个端口只有一个引脚中断,这样易于判断,省去了一些读引脚的过程

 

具体操作请查看一下代码


  1. #include "exti.h"  


  2. void ExtiInit(void)  

  3. {  

  4.     //首先禁用中断  

  5.     disableInterrupts();  

  6.     //配置IO口为输入中断模式  

  7.      //D7初始化  

  8.     GPIOD->DDR &= ~(1<<7);//设置为输入  

  9.     GPIOD->CR1 |=  (1<<7);  

  10.     GPIOD->CR2 |=  (1<<7);//中断上拉输入  

  11.       

  12.     //E3初始化  

  13.     GPIOE->DDR &= ~(1<<3);//设置为输入  

  14.     GPIOE->CR1 |=  (1<<3);  

  15.     GPIOE->CR2 |=  (1<<3);//中断上拉输入  

  16.       

  17.     //设定中断优先级,TLI是最高的不可屏蔽中断优先级,所以不需要设置软件优先级,只  

  18.     //需要设置E3也就是端口E的优先级即可,中断向量号为7 对应寄存器ITC_SPR2  

  19.     ITC->ISPR2 &= (3<<6);//清楚中断优先级  

  20.     ITC->ISPR2 |= (1<<6);//中断优先级01  

  21.       

  22.     //设置中断触发模式  

  23.     EXTI->CR2 &= ~(1<<2);//TLI下降沿触发  

  24.     EXTI->CR2 &= ~(3<<0);//清除PORTE  

  25.     EXTI->CR2 |= (2<<0);//Porte仅仅下降沿触发  

  26.       

  27.     enableInterrupts();//打开中断  

  28. }  

  29.   

  30. //TLI中断处理函数  

  31. INTERRUPT_HANDLER(TLI_IRQHandler, 0)  

  32. {  

  33.     keyValue = KEY_VALUE1;  

  34. }  

  35. //PORT E中断处理函数  

  36. INTERRUPT_HANDLER(EXTI_PORTE_IRQHandler, 7)  

  37. {  

  38.   //保险起见,这里进行一次电平  

  39.     if((GPIOE->IDR&0X08) == 0)//检测是不是低电平  

  40.     {  

  41.         keyValue = KEY_VALUE2;  

  42.     }  

  43. }  


  1. #ifndef __EXTI_H_  

  2. #define __EXTI_H_  

  3.   

  4. #include "stm8s.h"  

  5. #include "key.h"  

  6. //我们是用两个按键作为中断触发,其中,D7是TLI中断,E3是portE中断  


  7. void ExtiInit(void);  


  8. #endif  

关键字:STM8  中断系统  外部中断 引用地址:STM8的中断系统以及外部中断详解

上一篇:徒手编写了一个STM8的反汇编工具
下一篇:STM8S独立看门狗配置及使用

推荐阅读

ADAS与自动驾驶的芯片竞争异常激烈。英伟达、Mobileye已经在L2、L3级自动驾驶上占据先发优势。恩智浦(NXP)、瑞萨尽管在传统汽车芯片上市场份额领先、经验丰富,但当比较性能数据时,竞争变得非常残酷。随着电子电气架构系统(E/E)的简化和重构,以及对更高数据处理能力的要求,域控制器架构的引入,让这个汽车芯片市场格局面临不少变数。时间追溯到2016年...
根据半导体工业协会(SIA)数据,继5、6月芯片销量下滑后,7月份整体半导体销量仍然不佳,与去年同期相比下滑15%,分析师认为,这说明芯片商仍然面临着需求疲弱以及库存过高问题。根据《彭博社》报导,野村证券分析师David Wong表示,这代表半导体产业仍面临逆风,与过去六周以来诸多芯片商发布财报时给出的未来指引相符,也会成为芯片相关市场的指标。花...
9月6日,富瀚微在最新披露的投资者活动关系表中表示,公司2020年上半年度实现营业收入2.82亿元,同比上升28.84%;实现归属于上市公司股东净利润4,394.07万元,同比增长18.72%;产品综合毛利率企稳并有小幅上升。二季度由于海外终端市场开始受到疫情波及,部分国家地区生产生活秩序停摆,对公司二季度销售收入产生较大影响。面对复杂的外部环境,公司的研发...
项目场景:STM23G070单片机的PD0引脚作为开漏输出的时候,外部接了一个51K上拉电阻到5V,想让PD0开漏输出高的时候是5V,开漏输出低的时候是0V。问题描述:STM23G070单片机的PD0引脚作为开漏输出的时候,外部接了一个51K上拉电阻到5V,单独测试PD0的时候是可以正常的,开漏输出高的时候5V,低的时候可以到0V,但是一旦PD1推挽输出输出高之后,情况就变了,...

史海拾趣

问答坊 | AI 解惑

如何理解参数“全功率带宽”?

如何定义, 又如何使用“全功率带宽”?…

查看全部问答∨

用最简单的东西做你想要的-------功放

这里介绍一个设计小巧、线路简单但性能不错的三管音频放大器。其电路见附图。也许你在一些袖珍晶体管收音机可以看到一些与此类似的电路。 原理分析:   电路如图所示,输入极(9014)的基极工作电压等于两输出极三极管的中点电压,一般为电源电 ...…

查看全部问答∨

关于KBN00900HM-A439的信息

如题,各位大侠有没有关于三星封装的KBN00900HM-A439的详细资料啊????…

查看全部问答∨

wince平台下智能输入法

本人有wince平台下智能输入法,包括拼音、笔画、数字、字母输入法,有意者咨询t9ime_wince@163.com.…

查看全部问答∨

关于rs232表达错误,再问一下

已知硬件串口是好的,如何用数字式万用表测试串口是否有信号输出?…

查看全部问答∨

我想买一台2440的GPS用来改装其他用途,要使用到几个IO和串口。大家觉得行得通吗?

还有,是不是把JTAG接口找出来,使用并口将win ce的bootLoader写入,然后用USB写入win ce系统就可以了。…

查看全部问答∨

寻找商业投资战略合作伙伴

寻找商业投资战略合作伙伴,目前有大量国际资本操作 ,已经在国内。拟项目:拟在广西南宁市建立国内外汇市场投资机构。模式是以核心固定交易模式技术与交通银进行合作,运用核心技术和私募国际资本独立进行全球金融-外汇市场投资,也涉及黄金 股指 ...…

查看全部问答∨

rdmsk_k8,wrmsr_k7是什么命令吗?

在BIOs程序文件 BTAMDCPU.ASM文件中总是看到这样的类似指令一样的东西,但是我又没有查阅到相关资料!请高人指教下!…

查看全部问答∨

lpc 13XX class B库有什么功能?

lpc 13XX  class B库有什么功能?…

查看全部问答∨

LM3S中断问题

&nbsp;&nbsp;&nbsp; 各位大哥大姐好,小弟在这里请教一个问题。我现在想用GPIO中断,比如说PC7&nbsp; IO接口,我配置好中断寄存器后,低电平中断,去接收一组连续高低信号,发送端按bit位发送,每次发送1bit,接收端怎么才能完整接收到数据 ...…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

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

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved