首页 理论教育 如何添加一个SWI函数

如何添加一个SWI函数

时间:2023-06-23 理论教育 版权反馈
【摘要】:为了添加一个SWI函数,接下来的步骤和添加PRD和HWI是一样的。首先,在主函数main.c中生成一个名为SWI_function的函数,这个函数用于触发LED#3,代码如下。这将建立一个新的SWI函数,此函数能够被调度。为了让DSP/BIOS真正调度SWI0,我们将在HWI函数内部传递SWI。我们将用这个函数SWI_post,这个函数使用了一个指向SWI_obj的指针。这个SWI_obj是在文件threadscfg.s62中通过DSP/BIOS自动生成的,是一个汇编语言文件。然而DSP/BIOS提供了一些方便的途径来控制基于SWI相关邮箱的传递。

如何添加一个SWI函数

为了添加一个SWI函数,接下来的步骤和添加PRD和HWI是一样的。首先,在主函数main.c中生成一个名为SWI_function的函数,这个函数用于触发LED#3,代码如下。

在DSP/BIOS配置文件中展开“Scheduling→SWI-Software Interrupt Manager”。右击“SWI-Software Interrupt Manager”并选择“Insert SWI”。这将生成一个新的入口SWI0。编辑SWI0的特性传递函数到“_SWI_function”函数,优先级是2,并且接受其他的默认值。这将建立一个新的SWI函数,此函数能够被调度。

为了让DSP/BIOS真正调度SWI0,我们将在HWI函数内部传递SWI。我们将用这个函数SWI_post,这个函数使用了一个指向SWI_obj的指针。这个SWI_obj是在文件threadscfg.s62中通过DSP/BIOS自动生成的,是一个汇编语言文件。为了在我们的代码中引用,它必须作为extern加以声明,这些在threadscfg.h中通过DSP/BIOS方便的完成。暗含着这些参考的位置。

为了真正传递SWI,添加下面的代码到你的HWI中。(www.xing528.com)

编译并运行这个代码。每次HWI运行,它都会传递我们的SWI,并且SWI也会运行。所以LED#3的闪动频率和LED#2的闪动频率一样。

通常情况下,我们可能要传递SWI每隔n个HWI的引用。我们能够在HWI中加入代码完成这项工作。然而DSP/BIOS提供了一些方便的途径来控制基于SWI相关邮箱的传递。编辑SWI0给它一个值为8的邮箱,然后使用一个SWI_dec的函数代替SWI_post,代码如下。

每次调用函数SWI_dec,都会减少邮箱中的值,当邮箱中的值变为0时才传递SWI函数,然后它随后用值为8重新加载邮箱。再次构建和运行代码。注意,LED#3现在闪烁的频率比LED#2慢,因为现在每调用HWI 8次才运行SWI一次。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈