为什么不使能中断,中断标志位也会被置一

120 篇文章 22 订阅

如果了解 使能中断中断标志位发生置位的 本质,就不会产生以下疑问了,不过没时间去了解,只能先用下面的结论了

为什么不使能中断,中断标志位也会被置一

不使能中断,不影响中断标志位的变化,但是程序不会跳转到中断处理函数入口的地址处,去执行中断程序了

使能中断的情况下,中断标志位不清除, 结果是完成中断处理程序后, 它就继续再进中断, 根本不会回到主程序。

注意:中断标志位,,,置一时,由硬件置一。。置零时,可以硬件置零(即硬件置零),也可以程序员置零(软件置零)。

中断标志位硬件清零(自动清零)和软件清零(程序员用程序清零)

举一个我在项目开发中用到的实例
必须由MCU清零才能使中断复位--------他这里的意思应该是软件复位,
在这里插入图片描述

MCU与INT相连的那个GPIO口配置为输入状态,当INT引脚被mcp2515拉低时,GPOI引脚就收到一个低电平,进而使MCU产生中断
前提是你要在程序中配置好该GPIO口,当收到一个低电平时,产生中断。

那么INT引脚什么时候被MCP2515拉低,什么时候被拉高?
在中断使能位置1的前提下,中断标志位被置一,INT就会被MCP2515拉低,进而使MCU产生中断。
当MCU通过SPI总线将中断标志位清零时,MCP2515把INT拉高。
在这里插入图片描述

在这里插入图片描述

今天才发现我用了这么长时间的中断服务函数,竟然不知道中断请求标志位到底具体是什么意思~~~悲哀!!!

一般就用了定时器中断服务函数,没关心中断请求标志位,今天才发现,原来定时器中断请求标志位就是定时器溢出标志位,定时器溢出时自动跳到相应中断向量处,当主机响应该定时器中断时,该标志位由硬件自动清零。所以,我虽然写了定时器中断服务函数,而没操作定时器溢出标志位,程序还能运行,是因为单片机自己把这事儿给办了~~是典型的瞎猫碰到死老鼠

对于外部中断,其中断请求标志位跟定时器溢出标志位相似,都是主机相应中断后自动硬件清零,所以,也不必考虑需要不需要软件清零

串行口中断就不一样了,它分为发送中断标志位和接受中断标志位,在方式0中,当发送完或者接受完第八位数据后,由硬件置位,而其他工作方式下,(发送时)当发送停止位前或者(接收时)当接受到停止位的中间时刻由硬件置位。标志位置位象征着一帧数据的操作完成,继而转到中断服务函数,但是,这些标志位不能由硬件清零,只能用软件清零。

其他扩展的单片机,还有N多可以产生中断的功能,如果写中断服务函数,就要看清楚这些中断标志位了,看下到底需要不需要软件清零,需要软件清零但是不软件清零的,可能就要死在终端服务函数中了~~~~~~应该是吧,至少我这么理解

  • 2
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学无止境2022

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

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

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

打赏作者

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

抵扣说明:

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

余额充值