完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
2个回答
|
|
1.做智能手表的框架,暂时不完全,有时间会更新该文章
event.h文件 /* 事件标识 -------------------------------------------------------------*/ #define AppID_System 0 //系统准备 #define AppID_Timer 1 //GIF定时器 #define AppID_Main1 2 //主界面1 #define AppID_Main2 3 //主界面2 #define AppID_Main3 4 //主界面3 #define AppID_Main4 5 //主界面4 #define AppID_Max 6 //AppID最大值 /* 界面标识 -------------------------------------------------------------*/ #define UiID_None 0 #define UiID_Main1 1 //主界面1 #define UiID_Main2 2 //主界面2 #define UiID_Main3 3 //主界面3 #define UiID_Main4 4 //主界面4 /* 设置事件 ------------------------------------------------------------*/ #define MaxEventAmount 10 //表示同时可以最多执行10个事件 #define SystemEventStart(id) ((id) << 8) #define SystemEventMask(event) (((event) >> 8)&0xffffffff) /* 系统 ----------------------------------------------------------------*/ enum{ System_NoneEvent = SystemEventStart(AppID_System), System_InitEvent, //先发这个事件 System_MaxEvent }; /* 主界面1 -------------------------------------------------------------*/ enum{ Main1_NoneEvent = SystemEventStart(AppID_Main1), Main1_ShowEvent, Main1_ShowGifEvent, Main1_MaxEvent }; /* 主界面2 -------------------------------------------------------------*/ enum{ Main2_NoneEvent = SystemEventStart(AppID_Main2), Main2_ShowEvent, Main2_ShowGifEvent, Main2_MaxEvent }; /* 主界面3 -------------------------------------------------------------*/ enum{ Main3_NoneEvent = SystemEventStart(AppID_Main3), Main3_ShowEvent, Main3_ShowGifEvent, Main3_MaxEvent }; /* 主界面4 -------------------------------------------------------------*/ enum{ Main4_NoneEvent = SystemEventStart(AppID_Main4), Main4_ShowEvent, Main4_ShowGifEvent, Main4_MaxEvent }; /* GIF_TIMER -----------------------------------------------------------*/ enum{ Timer_NoneEvent = SystemEventStart(AppID_Timer), Timer_GifEvent, Timer_MaxEvent }; event.c文件 /* 事件运行 */ static uint32_t AppEventArray[MaxEventAmount] = { System_NoneEvent,System_NoneEvent,System_NoneEvent,System_NoneEvent,System_NoneEvent}; uint32_t AppIDChoose; uint16_t MenuChoose = UiID_None; static int readEventIndex = 0; static int writeEventIndex= 0; /******************************************************************************* * fuction APP_GetFirstEvent * brief 获取事件 * param 无 * return 事件标识 *******************************************************************************/ static uint32_t APP_GetFirstEvent(void) { uint32_t event = AppEventArray[readEventIndex]; if(event==System_NoneEvent) { readEventIndex++; readEventIndex%=MaxEventAmount; } return event; } /******************************************************************************* * fuction APP_SetEvent * brief 发事件 * param event:事件标识 * return 无 *******************************************************************************/ void APP_SetEvent(uint32_t event) { //AppEventArray|=event; AppEventArray[writeEventIndex]=event; writeEventIndex++; writeEventIndex%=MaxEventAmount; } /******************************************************************************* * fuction APP_ClearEvent * brief 清除事件 * param event:事件标识 * return 无 *******************************************************************************/ void APP_ClearEvent(uint32_t event) { int index; if(AppEventArray[readEventIndex]==event) { AppEventArray[readEventIndex] = System_NoneEvent; readEventIndex++; readEventIndex%=MaxEventAmount; } else { for(index=0;index { if(AppEventArray[index]==event) AppEventArray[index] = System_NoneEvent; } } //AppEventArray &= (~event); } 前面已经将框架的准备工作做好了,接下来就是搭建框架! /******************************************************************************* * fuction AppEventSystem * brief 系统跑起来前的做好准备的事件 * param event:事件标识 * return 当前事件 *******************************************************************************/ uint32_t AppEventSystem(uint32_t event) { uint32_t RetainEvent=0; if(event==System_InitEvent) { /* 这里加上开始之前的准备 */ APP_SetEvent(Main1_ShowEvent); RetainEvent=event; MenuChoose=UiID_None; } return RetainEvent; } /******************************************************************************* * fuction AppEventMain1 * brief 显示主界面1事件 * param event:事件标识 * return 当前事件 *******************************************************************************/ uint32_t AppEventMain1(uint32_t event) { uint32_t RetainEvent=0; if(event==Main1_ShowEvent) { StopAppGifTimer(); /* 这里加上显示静态界面 */ StartAppGifTimer(AppIDChoose,t_time_GIF,Main1_ShowGifEvent,1); RetainEvent=event; ClearGifCnt(); MenuChoose=UiID_Main1; } if(event==Main1_ShowGifEvent) { /* 这里加上显示动态界面 */ RetainEvent=event; MenuChoose=UiID_Main1; } return RetainEvent; } /******************************************************************************* * fuction AppEventMain2 * brief 显示主界面2事件 * param event:事件标识 * return 当前事件 *******************************************************************************/ uint32_t AppEventMain2(uint32_t event) { uint32_t RetainEvent=0; if(event==Main2_ShowEvent) { StopAppGifTimer(); /* 这里加上显示静态界面 */ StartAppGifTimer(AppIDChoose,t_time_GIF,Main2_ShowGifEvent,1); RetainEvent=event; ClearGifCnt(); MenuChoose=UiID_Main2; } if(event==Main2_ShowGifEvent) { /* 这里加上显示动态界面 */ RetainEvent=event; MenuChoose=UiID_Main2; } return RetainEvent; } /******************************************************************************* * fuction AppEventMain3 * brief 显示主界面3事件 * param event:事件标识 * return 当前事件 *******************************************************************************/ uint32_t AppEventMain3(uint32_t event) { uint32_t RetainEvent=0; if(event==Main3_ShowEvent) { StopAppGifTimer(); /* 这里加上显示静态界面 */ StartAppGifTimer(AppIDChoose,t_time_GIF,Main3_ShowGifEvent,1); RetainEvent=event; ClearGifCnt(); MenuChoose=UiID_Main3; } if(event==Main3_ShowGifEvent) { /* 这里加上显示动态界面 */ RetainEvent=event; MenuChoose=UiID_Main3; } return RetainEvent; } |
|
|
|
/*******************************************************************************
* fuction AppEventMain4 * brief 显示主界面4事件 * param event:事件标识 * return 当前事件 *******************************************************************************/ uint32_t AppEventMain4(uint32_t event) { uint32_t RetainEvent=0; if(event==Main4_ShowEvent) { StopAppGifTimer(); /* 这里加上显示静态界面 */ StartAppGifTimer(AppIDChoose,t_time_GIF,Main4_ShowGifEvent,1); RetainEvent=event; ClearGifCnt(); MenuChoose=UiID_Main4; } if(event==Main4_ShowGifEvent) { /* 这里加上显示动态界面 */ RetainEvent=event; MenuChoose=UiID_Main4; } return RetainEvent; } /******************************************************************************* * fuction AppEventTimer * brief 显示任意界面内部的包含的动态图片 * param event:事件标识 * return 当前事件 *******************************************************************************/ uint32_t AppEventTimer(uint32_t event) { uint32_t RetainEvent=0; if(event==Timer_GifEvent) { app_gif_timer_evt(); RetainEvent=event; } return RetainEvent; } /******************************************************************************* * fuction AppEventMainLoop * brief 事件循环,扔到主循环中即可 * param 无 * return 无 *******************************************************************************/ void AppEventMainLoop(void) { uint32_t RetainEvent=0; uint32_t GetEvent = APP_GetFirstEvent();/* 开始事件 */ if(GetEvent!=0) { AppIDChoose = SystemEventMask(GetEvent); if(AppID_System == AppIDChoose){ //System RetainEvent = AppEventSystem(GetEvent); }else if(AppID_Main1 == AppIDChoose){ //Main1 RetainEvent = AppEventMain1(GetEvent); }else if(AppID_Main2 == AppIDChoose){ //Main2 RetainEvent = AppEventMain2(GetEvent); }else if(AppID_Main3 == AppIDChoose){ //Main3 RetainEvent = AppEventMain3(GetEvent); }else if(AppID_Main4 == AppIDChoose){ //Main4 RetainEvent = AppEventMain4(GetEvent); }else if(AppID_Timer == AppIDChoose){ //GIF_timer RetainEvent = AppEventTimer(GetEvent); } APP_ClearEvent(RetainEvent); } } /******************************************************************************* * fuction AppKeyMianLoop * brief 按键循环,扔到主循环中即可 * param 无 * return 无 *******************************************************************************/ void AppKeyMianLoop(void) { if(KeyPressFlag)//中断里面,按键按下就置一 { if(SystemFlag)//系统运行标志位 { APP_SetEvent(System_InitEvent); AppKeyClearEvent(KeyPressFlag); if(UiID_Main1==MenuChoose) APP_SetEvent(Main2_ShowEvent); else if(UiID_Main2==MenuChoose) APP_SetEvent(Main3_ShowEvent); else if(UiID_Main3==MenuChoose) APP_SetEvent(Main4_ShowEvent); else if(UiID_Main4==MenuChoose) APP_SetEvent(Main1_ShowEvent); } AppKeyClearEvent(KeyPressFlag); } } |
|
|
|
只有小组成员才能发言,加入小组>>
3278 浏览 9 评论
2955 浏览 16 评论
3455 浏览 1 评论
8987 浏览 16 评论
4050 浏览 18 评论
1102浏览 3评论
570浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
568浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2301浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1857浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 01:31 , Processed in 1.124837 second(s), Total 81, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号