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。
由于今天一直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。
举报
更多回帖
rotate(-90deg);
回复
相关问答
在SWI软
中断指令
中LR中放的是异常模式下的返回地址求解
2023-02-27
840
“kaby lake isa”
有
“INT n”
中断指令
吗?
2018-11-07
1196
什么是汇编
指令
?
常用
的汇编语句
有
哪些
2021-11-29
1177
单片机执行代码怎样判
断指令
周期
2019-04-08
2579
哪位大神知道
STM8
的
中断
和低功耗模式?
2020-11-16
1415
STM8
单片机的
中断
优先级如何配置?
2023-11-08
328
STM8
低功耗模式
有
哪些特性?
2020-11-05
979
STM8
有
哪几种
中断
源?
2020-11-13
1096
怎么查看
stm8
的外部
中断
的向量号?
2023-10-23
163
STM8
时钟产生
中断
的原因是什么?
2020-11-12
898
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
英国威廉希尔公司网站
william hill官网 版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分