
定义一个发送事件,它的值要和已有的事件不重复,比如#define SEND_EVT 0x0004
在中断里面osal_set_event(GenericApp_TaskID,SEND_EVT)
在GenericApp的任务处理回调函数GenericApp_ProcessEvent里,加上if(events SEND_EVT)</ol> {//TODO:Send your data here
return(events ^ SEND_EVT)
}当然,你也可以把中断做成一个按键的形式,这样在按键回调函数GenericApp_HandleKeys里可以发送你的数据。
OSAL通过一个16位宽度的数组来管理事件,意味着OSAL最多可以支持16个事件,其中最高位(0x08000,SYS_EVENT_MSG)系统保留,用户可以使用的事件有15个。事件的使用很简单:
1)需要找个地方定义事件的ID,实际上是指定该事件占用事件数组的哪个位。如#define MY_EVENT 0x02,占用bit1。
2)在需要触发事件的地方调用osal_set_event( ) ,这个函数有两个参数,一个是接收事件任务的ID,另一个参数指定事件ID。
3)在相应任务的处理函数,检查该事件执行相应代码即可。
4)清除事件标识。(不知道能否自动清除事件标识,还有待研究代码)
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)