stm32(六)中断

什么是中断呢?可以举一个日常生活中的例子来说明,假如你正在给看书,电话铃响了。这时,你放下手中的书,记录下你看书的页数,去接电话。通话完毕,再继续从原来的位置继续看书。这个例子就表现了中断及其处理过程:电话铃声使你暂时中止当前的看书的动作,而去处理更为急需处理的事情(接电话),把急需处理的事情处理完毕之后,再回头来继续原来的事情。

在这个例子中,电话铃声称为"中断请求",你暂停看书去接电话叫作"中断响应",接电话的过程就是"中断处理",相应地,在STM32执行程序的过程中,由于出现某个特殊情况(中断异常),使得CPU中止正在执行程序,而转去执行处理中断服务程序,待中断服务程序执行完毕,再返回断点继续执行原来的程序,这个过程称为中断。

1、中断源

中断源也就是导致产生中断的原因,在STM32中打断正常工作(程序)的异常,我们就叫它为中断源。

2、中断执行的过程

  • 主程序正常运行
  • 产生中断异常,CPU保存当前程序执行的位置
  • 进入中断服务函数
  • 处理中断服务函数
  • 中断服务函数处理完成后,返回断点处
  • 程序继续运行

上图中,步骤:3~5,只有在中断异常产生是才会执行,中断异常产生则步骤3~5立即执行。

3、中断的意义

生活中的情景:假设你有一个朋友来拜访你,但是由于不知道何时到达,你只能在大门等待,于是什么事情也干不了。如果在门口装一个门铃,你就不必在门口等待而去干其它的工作,朋友来了按门铃通知你,你这时才中断你的手头上的工作去开门,这样就避免等待和浪费时间。

STM32:串口阻塞接收机制原理是只有接收到一个字节的数据,才继续往下执行。这种机制的弊端:CPU无法及时处理其他的代码。

例如:

STM32中断机制:如果用了串口中断,则不需要阻塞等待接收数据。

4、中断优先级和中断嵌套

4.1、中断优先级

生活中的情景:你正看书,如果在电话铃响的同时,门铃也响了,那么你将在"接电话"和"开门"这两个中断请求中选择,先响应哪一个请求。考虑优先级的问题。如果"开门"比"接电话"重要(或者说"开门"比"接电话"的优先级高),那么就应该先开门,然后再接电话,接完电话后再回头来继续看书。这就是说,当同时有多个中断请求时,应该先响应优先级较高的中断请求。

STM32:如果有多个中断,则每个中断都应给分配一个优先级。举例:串口1中断需要有自己的优先级,串口2的中断也要有自己优先级。

​​​​​​​4.2、中断嵌套

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值