全球旧事资料 分类
到邮箱值为0才分派。当SWI执行前被触发多次,通常只执行一次,如果想执行被触发的次数就需要用到函数SWI_i
c;如果想过个条件同时满足时触发,如两个不同设备准备好数据,则需要用到SWI_a
d
;当在一个SWI线程中想根据触发事件而执行不同的函数时,需要SWI_or;当需要一个事件有效多次才触发SWI时需要用到SWI_dec。17、如果ISR将改变一个数据结构而它正被执行的task访问,则需要在task执行时将中断屏蔽
f18、一个长的ISR通常被分解为两段,第一段为ISR,第二段为SWI,SWI处理不怎么严格的请求。19、TSK_setpri在ISR中不能调用,但可以在task和SWI中调用,而用SWI更节省资源,且切换更高效,因为task有独立的stack。20、SWI_disable不仅禁止了SWI抢占,也禁止了task抢占21、SWI_delete可以删除一个SWI线程,但只能在task中执行22、Task有15个优先级,最低级0保留给IDL23、确定一个task所需的堆栈可以先设一个足够大的,在用CCS查看实际占用多少24、可以用动态和静态两种方式创建task25、TSK_delete可以清除task、释放stack的空间,但不能释放信号量、邮箱和其它被task获得的资源,因而这些动作要在TSK_delete之前运行。当删除一个task,而它拥有其它task所需资源时将发生致命的错误。TSK_delete只能删除动态建立的task26、任务有四个状态,为ru
i
g、ready、blocked和termi
ated,用TSK_stat函数可以返回任务的状态,如果一个运行的任务被SWI或HWI抢占,返回的状态还是TSK_RUNNING27、IDL中不能调用阻塞的函数,如SEM_pe
d、TSK_sleep28、运行的TASK变成TSK_BLOCKED,条件是调用了SEM_pe
d、TSK_sleep函数,一般是为了等待IO操作或者共享数据的准备29、TSK_yield函数是正在执行的函数主动把CPU让给就绪队列里的task,就绪队列都是同优先级的task,主动让出的task排到队列的最后,如果它的优先级也可队列里的一样,队列是先进先出30、用TSK_checkstacks和TSK_stat函数可以看stack大小以防堆栈溢出
fr
好听全球资料 返回顶部