RT-Thread学习笔记——中断管理

本文深入探讨RT-Thread的中断管理,包括异常与中断的基本概念、中断工作机制,以及基于STM32的中断管理实验。介绍了中断向量表、中断处理过程、中断嵌套和中断栈,强调中断底半处理的重要性,并提供了实际操作示例。
摘要由CSDN通过智能技术生成

前言

本文学习RT-Thread的中断管理,这里主要包括异常与中断的基本概念、RT-Thread 中断工作机制,更多关于RT-Thread的中断管理请看《RT-Thread编程指南》,后面通过使用STM32来进行实验。

一、异常与中断的基本概念

异常是导致处理器脱离正常运行转向执行特殊代码的任何事件,如果不及时进行处理,轻则系统出错,重则会导致系统毁灭性瘫痪。所以正确地处理异常,避免错误的发生是提高软件鲁棒性(稳定性)非常重要的一环,对于实时系统更是如此。异常是指任何打断处理器正常执行,并且迫使处理器进入一个由有特权的特殊指令执行的事件。异常通常可以分成两类:同步异常和异步异常。 

1、异步异常与同步异常:异步异常主要是指由于外部异常源产生的异常,是一个由外部硬件装置产生的事件引起的异步异常。。同步异常不同于异步异常的地方是事件的来源,同步异常事件是由于执行某些指令而从处理器内部产生的,而异步异常事件的来源是外部硬件装置。例如按下设备某个按钮产生的事件。同步异常与异步异常的区别还在于,同步异常触发后,系统必须立刻进行处理而不能够依然执行原有的程序指令步骤;而异步异常则可以延缓处理甚至是忽略,例如按键中断异常,虽然中断异常触发了,但是系统可以忽略它继续运行(同样也忽略了相应的按键事件)。

2、中断:中断属于异步异常。所谓中断是指中央处理器 CPU 正在处理某件事的时候,外部发生了某一事件,请求 CPU迅速处理,CPU 暂时中断当前的工作,转入处理所发生的事件,处理完后,再回到原来被中断的地方,继续原来的工作,这样的过程称为中断。中断能打断线程的运行,无论该线程具有什么样的优先级,因此中断一般用于处理比较紧急的事件,而且只做简单处理,例如标记该事件,在使用 RT-Thread 系统时,一般建议使用信号量、消息或事件标志组等标志中断的发生,将这些内核对象发布给处理线程,处理线程再做具体处理。

 

二、RT-Thread 中断工作机制

1、中断向量表

(1)中断向量表是所有中断处理程序的入口,如下图所示是 Cortex-M 系列的中断处理过程:把一个函数(用户中断服务程序)同一个虚拟中断向量表中的中断向量联系在一起。当中断向量对应中断发生的时候,被挂接的用户中断服务程序就会被调用执行。

中断处理过程(来源RT-Thread编程指南)
中断处理过程(来源RT-Thread编程指南)

 

(2)在 Cortex-M 内核上,所有中断都采用中断向量表的方式进行处理,即当一个中断触发时,处理器将直接判定是哪个中断源,然后直接跳转到相应的固定位置进行处理,每个中断服务程序必须排列在一起放在统一的地址上(这个地址必须要设置到NVIC 的中断向量偏移寄存器中)。中断向量表一般由一个数组定义或在起始代码中给出,默认采用起始代码给出,打开startup_stm32xxxxxx.s文件:

__Vectors       DCD     __initial_sp               ; Top of Stack
                DCD     Reset_Handler              ; Reset Handler
                DCD     NMI_Handler                ; NMI Handler
                DCD     HardFault_Handler          ; Hard Fault Handler
                DCD     MemManage_Handler          ; MPU Fault Handler
                DCD     BusFault_Handler           ; Bus Fault Handler
                DCD     UsageFault_Handler         ; Usage Fault Handler
                DCD     0                          ; Reserved
                DCD     0                          ; Reserved
                DCD     0                          ; Reserved
                DCD     0                          ; Reserved
                DCD     SVC_Handler                ; SVCall Handler
                DCD     DebugMon_
最低0.47元/天 解锁文章
用龙芯1c库在RT-Thread下实现外部中断(GPIO中断、按键中断
勤为本的专栏
07-21 3173
简介 先来说下,这里为什么既涉及龙芯1c库,又涉及RT-Thread中断相关函数是RT-Thread已经封装好的,比如设置中断处理函数,中断使能;但GPIO相关的函数却是使用龙芯1c库中的,比如GPIO初始化,将GPIO设为输入模式,设置GPIO中断类型(下降沿中断)等。 龙芯1c库和RT-Thread分别是什么 龙芯1c库的git是  http://git.oschina.net/cao
RT-Thread学习笔记——中断管理_rt_interrupt_enter,2024年最新Golang核心知识点
2401_84263434的博客
04-15 749
中断属于异步异常。所谓中断是指中央处理器 CPU 正在处理某件事的时候,外部发生了某一事件,请求 CPU迅速处理,CPU 暂时中断当前的工作,转入处理所发生的事件,处理完后,再回到原来被中断的地方,继续原来的工作,这样的过程称为中断中断能打断线程的运行,无论该线程具有什么样的优先级,因此中断一般用于处理比较紧急的事件,而且只做简单处理,例如标记该事件,在使用 RT-Thread 系统时,一般建议使用信号量、消息或事件标志组等标志中断的发生,将这些内核对象发布给处理线程,处理线程再做具体处理。
RT-Thread 外部中断的设置
qq_43745917的博客
10-15 3666
关于rtt的外部中断设置官网又专门的文档介绍 ,我这里就不多做介绍了 pin设备但我在使用的时候遇到一个小问题, 问题:外部中断设置边沿触发就进入不了中断,设置别的就可以;主要代码如下: void key_pin_0(void * args) { if(rt_pin_read(key_0)) { led_off(); } else { ...
RT-Thread系统的SysTick和pendSV的中断优先级
sinat_31039061的博客
08-15 4826
问题描述: SysTick和pendSV的中断优先级分别设置为0和15,这样的设置可能会存在一个问题,SysTick优先级太高会抢占用户自己设置的外设的中断。 代码证明: RT-Thread中设置pendSV中断优先级的代码在cpu文件夹下context_rvds.S的汇编部分,中断优先级设置为15,代码如下: 查阅手册得知: PendSV优先级设置寄存器地址为0xe000ed22 SysTic...
[嵌入式系统-60]:RT-Thread-内核:中断管理,线程与中断之间的协同工作与数据传送,中断管理是外部的异步事件与内核内部的线程之间的关系
文火冰糖(王文兵)的博客
05-03 957
中断屏蔽和中断disable都用于控制中断的处理,但它们的实现和范围略有不同。中断屏蔽通常是在硬件或软件级别上设置特定的屏蔽位来阻止特定中断源的中断请求,而中断disable则是通过修改处理器的状态或执行特定的指令来完全禁止所有中断的处理。
RT-Thread学习笔记——时钟管理
Sanjay_Wu的博客
01-24 3661
前言 本文记录RT-Thread的时钟相关知识,包括时钟节拍、RT-Thread定时器工作机制以及定时器的管理方式,在定时器方面有硬件定时器和软件定时器,这里不讲硬件定时器。后面进行实际的操作时采用STM32L475VET6,RTT&正点原子联合出品潘多拉发板进行实验。 一、时钟节拍 任何操作系统都需要提供一个时钟节拍,以供系统处理所有和时间有关的事件,如线程的延时、线程的时...
RT-Thread学习笔记——信号量
Sanjay_Wu的博客
01-25 1万+
前言 本文讲RT-Thread的线程间同步之信号量,包括为什么要进行线程间同步、信号量创建与删除、信号量获取与释放以及基于STM32的二值信号量示例和计算型信号量示例,采用RTT&正点原子联合出品潘多拉发板进行实验。 一、线程间同步 1、什么是线程间同步? 同步是指按预定的先后次序进行运行,线程同步是指多个线程通过特定的机制来控制线程之间的执行顺序,也可以说是在线程之间通过...
RT-Thread学习笔记——邮箱
热门推荐
Sanjay_Wu的博客
02-12 1万+
前言 前面讲了RT-Thread的信号量、互斥量以及事件集这些都是线程间的同步方式。在我们进行实际的项目发的时候,经常会涉及到一个线程更新某个全局变量值,然后另外一个线程去读取这个全局变量值,根据这个全局变量值的不同而去执行不同的操作,在RT-Thread 中则提供了更多的工具帮助在不同的线程中间传递信息,包括邮箱、消息队列、信号用于线程间的通信方式。本文将RT-Thread的邮箱服务,包括...
2024年Go最全Go异常处理——defer、panic、recover,Golang零基础
最新发布
2401_84920027的博客
05-11 404
事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!二、panic和recover(宕机和宕机恢复)
FreeRTOS中断管理中断测试实验(三)
qq_52572339的博客
04-01 966
FreeRTOS学习 文章目录前言一、中断管理二、中断测试实验1.实验要求2.相关代码问题:主要代码总结 前言 Cotex-M3 的 NVIC 最多支持 240 个 IRQ(中断请求)、1 个不可屏蔽中断(NMI)、1 个 Systick(滴 答定时器)定时器中断和多个系统异常。 提示:以下是本篇文章正文内容,下面案例可供参考 一、中断管理 一、优先级分组(区分) 如果使用 ALIENTEK 的基础例程的话默认配置的组 2,所以在将基础例程中的外设驱动移 植到 FreeRTOS 下面的时候需要修改.
嵌入式发基础之中断管理
06-18 1388
中断就是系统正在处理某一个正常事件,忽然被另一个需要马上处理的紧急事件打断,系统转而处理这个紧急事件,待处理完毕,再恢复运行刚才被打断的事件。 无论在单片机发还是嵌入式发中,中断都是一个非常重要的概念。而重要的原因,是中断的概念符合我们普世生活的场景。 你正在上班努力编程,却有一通电话打了进来,而不得不停止工作,接通完电话后,发现只是外卖到了楼下,这时候你又恢复到工作的状态,这是短期中断。 你本科毕业,因为第一年的工作经验的优先级高于考研所以你去找了份工作,干了一年后,去考研,回到学校继续学习,对你的学
RT-Thread 中断处理过程
Caramel_biscuit的博客
01-12 1131
这样在发生中断嵌套,或屏蔽了相应中断源的过程中,不会耽误嵌套的其它中断处理过程,或自身中断源的下一次中断信号。在允许中断嵌套的情况下,在执行中断服务程序的过程中,如果出现高优先级的中断,当前中断服务程序的执行将被打断,以执行高优先级中断中断服务程序,当高优先级中断的处理完成后,被打断的中断服务程序才又得到继续执行。RT-Thread采用的方式是提供独立的中断栈,即中断发生时,中断的前期处理程序会将用户的栈指针更换到系统事先留出的中断栈空间中,等中断退出时再恢复用户的栈指针。
RT-thread内核之异常与中断
weixin_33939843的博客
02-13 286
一、什么是中断中断有两种,一种是CPU本身在执行程序的过程中产生的,一种是由CPU外部产生的。 cpu外部中断,就是通常所讲的“中断”(interrupt)。对于执行程序来说,这种“中断”的发生完全是异步的,因为不知道什么时候会发生。CPU对其的响应也完全是被动的,可以通过“关中断”指令关闭对其的响应。 然而由软件产生的中断一般是由专设的指令,如X86中的“INT n”在程序中有意产生的,...
[嵌入式系统-30]:RT-Thread -15- 中断管理与编程接口
文火冰糖(王文兵)的博客
02-20 1373
说到中断,大家都不会陌生,对于裸机编程,很简单,编写指定的中断服务函数,然后添加到中断向量表中就可以了。如果工程建立在 RTOS 基础之上,中断是如何管理的呢?本文带你了解 RT-Thread中断处理过程,以及如何添加中断服务程序和相关的注意事项。在 RT-Thread 中,中断向量表是一个存储中断处理函数地址的数据结构,它提供了一个中断发生时执行相应中断处理函数的映射关系。中断向量表的具体实现方式和配置方法取决于所使用的处理器架构和编译器。处理器架构的差异。
RT-Thread学习笔记(6)- RT-Thread中断服务程序的书写注意
Eureka1024的博客
10-21 5588
RT-Thread中,中断服务程序的书写和在裸机发的写法差不多,区别是加入一组API函数,如下: rt_interrupt_enter(); //通知操作系统此时进入中断状态 rt_interrupt_leave();//通知操作系统此时离中断状态 对于使用方法,我们以系统滴答定时器中断为例,在中断服务程序的始后和最后分别加上这两个API函数,如下: /** ...
RT-Thread 中断管理学习
Caramel_biscuit的博客
10-23 237
中断是一种异常,异常是导致处理器脱离正常运行转向执行特殊代码的任何事件,如果不及时进行处理,轻则系统出错,重则会导致系统毁灭性地瘫痪。所以正确地处理异常,避免错误的发生是提高软件鲁棒性(稳定性)非常重要的一环。
RT-Thread快速入门-中断管理
一起学嵌入式
04-13 4041
首发,公众号【一起学嵌入式】 经过前面文章的学习,对于 RT-Thread 处理多任务或者说线程的处理机制,基本上入门了。能够上手用 RT-thread 进行日常发了。 但是,还有一个重要的部分,那就是 RT-Thread 如何处理中断。 说到中断,大家都不会陌生,对于裸机编程,很简单,编写指定的中断服务函数就可以了。 如果工程建立在 RTOS 基础之上,中断是如何管理的呢?本文带你了解 RT-Thread中断处理过程,以及如何添加中断服务程序和相关的注意事项。 RT-Thread 中断工作机制 .
RT-Thread学习笔记中断管理
qq_40500005的博客
01-23 2494
中断简介 异步事件:CPU外部发生的紧急事件,需要CPU进行处理 中断系统:实现CPU暂停当前任务,转而处理异步事件,处理完后再回到原来被中断地址继续工作的过程 中断源:申请CPU中断的请求源 异常:导致CPU脱离正常运行转向执行特殊代码的事件 中断是一种异常 Cortex-M系列CPU架构简介 Cortex-M系列CPU的寄存器组里由R0-R15共16个通用寄存器和若干特殊功能寄存器 其中,R13为堆栈指针寄存器(栈顶指针Stack Pointer,一般称为sp),可以是MSP(主堆栈指针),也可以是PS
写文章

热门文章

  • RT-Thread学习笔记——移植RT-Thread到STM32 35265
  • OneNET HTTP协议的使用 22191
  • 浅谈NBIOT 21147
  • RT-Thread学习笔记——邮箱 15605
  • OneNET EDP协议讲解与应用 14049

分类专栏

  • 电机控制 1篇
  • RTThread物联网操作系统 17篇
  • OneNET云平台 14篇
  • IOT 20篇
  • 数据结构与算法 7篇
  • cJSON 1篇
  • C语言 1篇
  • 嵌入式Linux 4篇
  • STM32 5篇
  • Git 2篇
  • 杂项笔记 4篇

最新评论

  • STM32串口唤醒STOP模式的实现

    打团请保护我: 时钟要重新设置

  • STM32串口唤醒STOP模式的实现

    麦麸卷: 您好我想问一下,为什么我唤醒之后,原本的串口打印数字很快,唤醒之后就变得很慢了,一秒钟才蹦出来一个,可能是什么原因呢?

  • OneNET HTTP协议的使用

    写代码的日常: 我也是这样的,请问你解决了吗?麻烦告诉我怎么做,拜托了表情包

  • 详讲OneNET HTTP请求、响应报文格式

    写代码的日常: 博主你好,我想问一下发送http报文,接收区显示的是“errno”:403,“error”:乱码。这样的怎么解决?

  • STM32串口唤醒STOP模式的实现

    afei0v0: 请问有啥办法可以解决串口唤醒后前面几个字节数据接收不正常的问题吗?

最新文章

  • 无刷直流电机换相原理
  • 数据结构手把手教学——循环队列
  • 数据结构手把手教学——链栈
2021年1篇
2020年4篇
2019年45篇
2018年11篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家常州玻璃钢人物雕塑厂家供应扬州玻璃钢广场雕塑厂家批发武汉玻璃钢雕塑加工厂家中式七夕商场美陈透明玻璃钢雕塑定做厂家电话玻璃钢仿铜人物雕塑供货商孝感景区玻璃钢雕塑厂家临沧玻璃钢雕塑直供莱阳玻璃钢仿铜雕塑宜宾玻璃钢仿真水果雕塑厂家宜阳玻璃钢雕塑定制莱莱西玻璃钢雕塑松江玻璃钢雕塑制造厂家实用的玻璃钢雕塑泰安玻璃钢雕塑价格春季商场专柜美陈抽象玻璃钢雕塑订做价格内蒙古生肖玻璃钢雕塑浙江欧式玻璃钢雕塑定制包头玻璃钢雕塑定制价格阿勒泰玻璃钢雕塑西藏玻璃钢广场雕塑厂家西双版纳玻璃钢雕塑安装卡通玻璃钢门头雕塑定制常熟商场春节美陈搭建一个商场美陈多少钱雕塑翻石膏好还是玻璃钢好新密玻璃钢人物大型不锈钢雕塑玻璃钢雕塑的别名沈阳公园玻璃钢雕塑安装香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化