SEM旗语模块通过对旗语的计数完成任务的同步和相互作用。
据个人了解:可以有两个功能
(1):使用信号量旗语发送消息(类似MBX)
旗语是一种DSP/BIOS内核定义的数据结构,用于任务线程之间的通信,同步以及访问共享数据。
通过SEM_pend()来等待旗语的到来,未到来前将此任务挂起。通过SEM_post发送旗语。
参考例程:semtest
该例程SEM配合QUE一起使用:定义一个队列,然后写任务和读任务轮流访问该队列。三个写任务的优先级相同,如果不调用任务切换函数(TSK_yield()或者是sleep),第一个写任务会一直执行完毕,然后第二个,第三个,如果调用了任务切换函数,三个任务轮流执行。
图形化配置里的参数:initial semaphore count 旗语计数器的初始值
主要是配合SEM_pend()使用,如果旗语计数值大于0,SEM_pend()函数简单的减少计数值并返回,如果旗语计数值为0,那么任务将等待另一线程调用SEM_post()来发送旗语。
(2):利用旗语解决冲突(区别MBX)
如果两个任务共享一个数据结构,当其中一个任务线程修改这个数据结构时,
据个人了解:可以有两个功能
(1):使用信号量旗语发送消息(类似MBX)
旗语是一种DSP/BIOS内核定义的数据结构,用于任务线程之间的通信,同步以及访问共享数据。
通过SEM_pend()来等待旗语的到来,未到来前将此任务挂起。通过SEM_post发送旗语。
参考例程:semtest
该例程SEM配合QUE一起使用:定义一个队列,然后写任务和读任务轮流访问该队列。三个写任务的优先级相同,如果不调用任务切换函数(TSK_yield()或者是sleep),第一个写任务会一直执行完毕,然后第二个,第三个,如果调用了任务切换函数,三个任务轮流执行。
图形化配置里的参数:initial semaphore count 旗语计数器的初始值
主要是配合SEM_pend()使用,如果旗语计数值大于0,SEM_pend()函数简单的减少计数值并返回,如果旗语计数值为0,那么任务将等待另一线程调用SEM_post()来发送旗语。
(2):利用旗语解决冲突(区别MBX)
如果两个任务共享一个数据结构,当其中一个任务线程修改这个数据结构时,