完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
当硬件有按键按下时调用
uint8 OnBoard_SendKeys( uint8 keys, uint8 state ) [ keyChange_t *msgPtr; if ( registeredKeysTaskID != NO_TASK_ID ) [ // Send the address to the task msgPtr = (keyChange_t *)osal_msg_allocate( sizeof(keyChange_t) ); if ( msgPtr ) [ msgPtr->hdr.event = KEY_CHANGE; msgPtr->state = state; msgPtr->keys = keys; osal_msg_send( registeredKeysTaskID, (uint8 *)msgPtr ); ] return ( ZSuccess ); ] else return ( ZFailure ); ] 调用osal_msg_send( registeredKeysTaskID, (uint8 *)msgPtr ); 将消息发送个任务registeredKeysTaskID; 按键事件能且只能在一个任务中注册;我们看看registeredKeysTaskID他是在被注册到哪个任务中去了; uint8 RegisterForKeys( uint8 task_id ) [ // Allow only the first task if ( registeredKeysTaskID == NO_TASK_ID ) [ registeredKeysTaskID = task_id; return ( true ); ] else return ( false ); ] GenericApp.c中我们看到 按键事件被注册到APP任务中; RegisterForKeys( GenericApp_TaskID ); 总结下按键事件: 在应用程序中,用户将按键事件注册到应用层任务中, 当硬件检测到有按键事件发生时,将消息发送个应用层的任务ID交由应用程序处理; UINT16 GenericApp_ProcessEvent( byte task_id, UINT16 events ) [if ( events & SYS_EVENT_MSG ) [ MSGpkt = (afIncomingMSGPacket_t *)osal_msg_receive( GenericApp_TaskID ); while ( MSGpkt ) [ switch ( MSGpkt->hdr.event ) [ case KEY_CHANGE: GenericApp_HandleKeys( ((keyChange_t *)MSGpkt)->state, ((keyChange_t *)MSGpkt)->keys ); break; osal_msg_deallocate( (uint8 *)MSGpkt ); // Next MSGpkt = (afIncomingMSGPacket_t *)osal_msg_receive( GenericApp_TaskID ); ] // return unprocessed events return (events ^ SYS_EVENT_MSG); ] |
|
相关推荐
2 个讨论
|
|
我们在zstack 中常见到这样的定义
#define HAL_KEY_JOY_MOVE_BIT BV(0) BV的定义如下: #ifndef BV #define BV(n) (1 << (n)) #end (1 << (n)) 即1左移N位 相当于1乘以2的N 次方; 1 X (2^n) 所以: /* SW_6 interrupts */ #define HAL_KEY_SW_6_IEN IEN1 /* CPU interrupt mask register */ #define HAL_KEY_SW_6_IENBIT BV(5) /* Mask bit for all of Port_0 */ HAL_KEY_SW_6_IENBIT 0010 0000H |
|
|
|
|
|
只有小组成员才能发言,加入小组>>
TMS320F28377D:新做了以377d为芯片的板子,上电后芯片复位引脚出现方波请问如何解决?
1898 浏览 0 评论
TPS55340通电后输入端保险丝烧断,芯片输入和GND之间短路
3648 浏览 4 评论
5032 浏览 0 评论
请问如何用DM368对RGB格式的图片数据进行编码生成JPEG格式图片?
1736 浏览 1 评论
9382 浏览 8 评论
CC3100BOOST使用CC3200lunchXL进行烧录
669浏览 2评论
714浏览 1评论
TMS320F28034: 利用C2prog通过SCI给TMS320F28034烧录程序,出现错误提示:Bootloading... failed (invalid echo)!
676浏览 1评论
求DLPC350 Programmer’s Guide User's Guide 中文版说明书
1197浏览 1评论
1773浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-4-25 06:06 , Processed in 0.632838 second(s), Total 48, Slave 40 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号