stm32——外部中断及中断概念小讲(一)(初学者参考)

(零基础请看本篇,有基础的直接跳)
下一篇内容会涉及外部中断的配置代码、中断处理函数的编写,
下下篇会围绕中断控制器展开,涉及“中断向量表”和“中断嵌套”的内容。
前言
写《stm32基础项目——智能小车(红外避障)》时发现,对零基础的学弟学妹来说直接上手有些困难,因此还是讲讲有关中断的概念。
一、何为“中断”?
大白话就是:“cpu运行时被其他事件打断,然后放下手中的事转而去执行其他的事”,与中断相对应的还有个概念叫“查询”。关于这两个概念,我举个例子你就明白了。
例:消防官兵执勤
平时消防官兵都在训练,有火情发生时,热心群众会打119通报火情,消防员接到电话后立即出勤灭火。
热心群众打电话通告火情就是“中断”,那“查询”是什么情况呢?
“查询”就是消防官兵整天都在城里巡逻,上午在长安区,中午在雁塔区、下午又到了碑林区,比如这时候莲湖区发生火灾了,但没有群众打电话,那只能等消防员自己巡逻到莲湖区才知道着火了,进而才会灭火。
这个例子很恰当地展示了“中断”往往是“及时的”,而“查询”很可能发生“延迟”,延迟的后果往往是很严重的。
再举个例子,你用笔记本在刷B站视频的时候为什么点一下鼠标视频就暂停了?这起始就是一种中断(具体的实现方式也可以是使用了定时查询做法,但定时查询其实也是一种中断)。
二、何为“外部中断”
有“外部中断”其实就有“内部中断”,这个内外是相对于cpu而言的,“外部中断”对cpu来说是突发的、异步的,而“内部中断”对cpu来说是突发的、同步的。
举个例子:
cpu在给你放视频的时候,你点了下鼠标,这就是突发的、异步的,是外部中断。
cpu在放视频的时候,突然有条指令它自己不认识,这时候它不放视频了而是去执行另一段程序。这就是突发的、同步的,之所以说它是同步的,是因为cpu被打断的时候是本身执行的代码有问题,而不是外部产生的事件打断了它。
其实“内部中断”也叫异常,常见的异常有“除数为零异常”、“未定义指令异常”、“swi异常”等。
说到“swi异常”其实就又有“软中断”的概念,这个等你们学了《微机原理》跟x86汇编就懂了。在x86中还有一个“陷阱”的概念,这里就不展开了,严格来说,中断的概念属于异常,但也不用做过多的区分,你理解是什么意思就可以了。
“中断”,尤其是“外部中断”是我们控制cpu的一种重要手段,学会使用“外部中断”才能让cpu更高效地为你工作。
三、中断的机制
看完前两部分,你只要对“中断”有个概念理解就行了,至于“异常”、“软中断”什么的你可以先不用管。
中断的机制其实就是我们编程的套路,前面我们讲过“中断发生时cpu会被打断,转而去执行其他的事”,这个“其他的事”其实就是我们要编写的重要代码。等于说,外部中断发生时,cpu会去执行一段我们之前编写好的代码,这段代码可以是点亮一个灯、驱动一个蜂鸣器、显示一张图片等等。
四、中断上下文
中断发生时,cpu要放下手中的事,转而去执行其他的事,等其他的是执行完毕后还要在继续之前的事,因此这就涉及“上下文的存储和恢复”,上下文就是指寄存器里的数据,保存上下文就是把寄存器数据入栈、恢复上下文就是把数据出栈。
寄存器:你可以理解为一个个小盒子,里面是放数据的。
栈:这是个数据结构,你可以自己了解一下。
五、小结
这篇是面向零基础的、刚进班的大一、大二学弟学妹,因此讲了很多的概念,下一篇内容会涉及外部中断的配置代码、中断处理函数的编写,下下篇会围绕中断控制器展开有关“中断向量表”和“中断嵌套”的内容。
更多内容移步公众号“游侠嵌入式”,传帮带大本营,学长学姐带你飞。在这里插入图片描述

评论 1 您还未登录,请先 登录 后发表或查看评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页

打赏作者

卓越攻城狮

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值