sysbios---软件中断

在这里插入图片描述
SWI是在单个的堆栈上运行。但也不允许被挂起,只能运行到结束。对于一些实时性要求不是很高的任务就可以放在软件中断中去执行。当HWI发布了swi_post()后,SWI会立刻准备好去运行。HWI中处理的事务是以微秒来计时的,SWI中处理的事务是以毫秒来计时的。
在这里插入图片描述
在这里插入图片描述
以下图为例,HWI用来采集外设的数据,当外设数据采集到第9次的时候,HWI将会发布一个SWI来执行,当SWI还没执行完,但又有外设数据到来时,HWI会抢断SWI去执行。 当SWI执行完毕,HWI还没被触发时,将会去执行最低优先级的空闲线程。
在这里插入图片描述
同样优先级的SWI将会根据FIFO机制来调度。
在这里插入图片描述
在下图所示的例子中,SWI将会被视为是优先级比ISR优先级更低的线程,但ISR在发布了一个SWI_B之后,立刻被SWI_b抢断,此时的ISR并没有执行完成,堆栈也不会得到保护,会发生很严重的后果。
在这里插入图片描述
为了解决上图所示的问题,我们将使用HWI线程,在执行HWI时,现在SWI给禁用,等到HWI执行完毕再重新使能SWI。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值