SYSBIOS学习笔记---软件中断(SWI)的创建

本文介绍软件中断(SWI)的概念及其在SYSBIOS中的作用,并详细讲解了静态和动态创建SWI的方法。SWI由程序触发,优先级低于硬件中断但高于任务线程,适合用于需要延迟响应的中断处理。

         软件中断只有在操作系统中才有这一说,它是对硬件中断的一种克隆,在SYSBIOS中它的优先级是低于硬件中断高于任务线程的,其最多可以有32个优先级,只要系统的资源允许,理论上可以创建无穷多个软件中断,而硬件中断则是少数有限个的。由于它是由SYSBIOS内核调度管理的因此在响应的时间上是要长于硬件中断的。

        今天我就来给大家介绍一下关于软件中断(SWI)的创建方法,与硬件中断的创建的方法一样,它也有两种创建方法:静态创建和动态创建。

       下面是利用图形化配置界面来创建静态的软件中断:


相关的参数与硬件中断的创建一样,详情请查看博客SYSBIOS学习笔记---硬件中断(HWI)的创建

          下面是关于动态创建的方法,在这里要特别注意的是软件中断的创建只能在任务线程和空闲线程中创建,千万不要在软件中断线程和硬件中断线程中创建,否则会出现不可预测的后果。下面是一种典型的软件中断线程创建方法:

Void SWIInit(Void)
{
    // 动态创建软件中断
    Swi_Params swiParams;

    // 使用默认值初始化参数
    Swi_Params_init(&swiParams);
    // 触发变量 二进制 0000 0000 0000 0000 0000 0000 0000 0011
    swiParams.trigger = 3;
    swi0 = Swi_create(KEYSwi, &swiParams, NULL);
}
 
        上述的创建结果与图形化配置的结果一样,创建完了以后如果要执行相应的中断服务函数就需要发布该中断函数,这个是通过调用  Swi_post() 函数来发布该软件中断的,该函数输入的参数为被发布的软件中断的句柄。可以看到软件中断的触发是由程序触发的,而硬件中断大多数是由中断事件触发的比如串口的接收中断事件,不一定是由程序触发的

        当然要实现一定条件的软件中断发布,可以调用Swi_andn();   Swi_dec();   Swi_inc();   Swi_or(); 等这些函数来实现一定条件的发布,对于这些函数是如何使用的可以查阅相关的手册。  













评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

_IRONMAN_

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

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

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

打赏作者

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

抵扣说明:

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

余额充值