STM32
直播中

木頭瓶子

11年用户 558经验值
擅长:353304
私信 关注
[问答]

STM8常用中断指令有哪些?

什么叫软件中断?什么是硬件中断?
什么是软件优先级?什么是硬件优先级?
STM8常用中断指令有哪些?

回帖(1)

谢昌火

2021-11-16 14:12:39
由于今天一直STM8S 的程序,关于STM8s的中断一直是处于只知道用,却不理解中断流程,以及关于中断的基本概念。本篇文档主要说明中断的基本概念、机制、流程、处理方法等。

一些问题:
1.什么叫软件中断、什么是硬件中断?对于中断向量表后的GPIO口,定时器,I2C是什么软件还是硬件中断?
2.什么是软件优先级?什么是硬件优先级?
3.STM8S能改变中断的优先级?怎么改变?比如:说PB比PA口的优先级高,但是我怎么设置寄存器改变其使PA口的中断优先级比PB高。
4.在软件优先级相同的情况下,硬件优先级最高的中断响应?在硬件优先级相同的情况下,软件优先级最高的中断响应?这两句话是什么意思?

牛人的解答:
1、软件中断是由程序产生的中断,比如定时器,硬件中断是由硬件接口产生的,比如串口中断。
2、中断优先级是一样的,通过寄存器配置的。没有你说的软件和硬件优先级
3、中断优先级通过中断优先级寄存器配置,不同的芯片级别不一样,有的是0为最高级,有的是7为最高级。
4、中断优先级相同的情况下,先执行向量列表靠前的中断。


STM8 常用中断指令:
1、开中断:  



  • _asm(“rim”);

2、禁止中断:



  • _asm(“sim”);

3、进入停机模式:



  • _asm(“halt”);

4、中断返回:



  • _asm(“iret”);

5、等待中断:



  • _asm(“wfi”);

6、软件中断:



  • _asm(“trap”);



STM8 中断控制系统处理2种类型的中断源:
1、不可屏蔽的中断:RESET , TLI 和 TRAP
2、可屏蔽中断: 外部中断 和 内嵌的外设中断。

STM8 的中断处理流程图:




                                                                            中断处理流程图
注:流程图中说明的点
        PENDING interrupt :中断挂起         fetch next instruction : 获取下一条指令        execute instruction : 执行指令
        TRAP(不可屏蔽的软件中断)

路线1:中断被响应后,正常操作被悬起,(PC,X,Y,A和CC)被压桟,根据ITC_SPRx寄存器,置CC寄存器的 l1 和 l0 。
            中断服务子程序必须以IRET 指令结束,该指令把堆栈中的保存的寄存器内容出桟,同时由于运行IRET指令,位l1和l0被重新恢复,程序也恢复运行。
路线2:中断程序执行完成后,恢复堆栈内容。
路线3:当前中断服务程序正在执行,另外一个中断等级低的中断等待处理,继续被挂起,等当前中断执行完,再响应低等级中断响应。
路线4:当前中断服务程序正在执行,另外一个中断等级高的中断等待处理,当前中断程序被挂起,(PC,X,Y,A和CC)被压桟,执行等级高的中断程序。等等级高中断执行完,再响应当前中断服务程序。
路线5:当前中断服务程序正在执行,不可屏蔽的软件中断产生,直接REST。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分