创龙科技
直播中

冯媛媛

7年用户 225经验值
私信 关注

关于软件中断的问题(以基于sys/bios下GPIO_LED_SWI)为例

[tr]关于软件中断的问题(以基于sys/bios下GPIO_LED_SWI)为例
1、中断源启动的问题,
这个例程中主程序应该是通过Task_create(taskMain, NULL, NULL);创建了taskMain任务,然后在taskMain中通过语句Swi_post(swi0);执行swi0(led7)任务,Swi_post()这个函数Swi_post is used to post a software interrupt regardless of the trigger value.意思是立即启动中断任务,既然软中断是由Swi_post()函数启动的,任务的运行先后顺序应该和中断优先级没有关系了啊?另外由于是Swi_post()函数启动中断,也应该和中断无关了吧?(体现不出中断作用)
2、swiParams.trigger = 1;trigger这个参数有什么用途,根据定义Initial Swi trigger value,但是我不明白这句话的意思,是触发中断吗(我看例程上的注释这么写的)

3、假设我做串口中断接收发送(应该属于软中断范畴),中断标志位(TI,RI)作为一种中断源触发中断?如何编写代码?能不能这么写?
    if(ti=1)
   swiParams.trigger = 1;



[/tr]

回帖(3)

刘羽扬

2019-5-15 15:04:10



你是完完全全没有搞清楚软件中断到底是什么~

举报

金鼎

2019-5-15 15:32:58

你这么没教养 怪不得什么都不会~

举报

王俊

2019-5-15 15:42:50
1、软件中断时通过在程序中调用SWI函数来触发,我们一般会在硬件中断中发布软件中断。优先级:
HWI>SWI>TSK>IDL,软件中断用于处理那些时间限制比任务线程严格,但比硬件中断宽松的作业,SWI可以使得HWI可以将一些不太关键的处理交给一个优先级比它低的SWI来完成,从而减少CPU在中断服务程序中花费太多时间而影响其他硬件中断的执行。
2、使用Swi_post来发布软件中断可以忽略这个参数swiParams.trigger = 1;,这个参数不产生影响
3、串口中断可以参考starterware的历程来移植


举报

更多回帖

发帖
×
20
完善资料,
赚取积分