📄 main.c
字号:
#include"..\ucos-ii\includes.h" /* uC/OS interface */#include "..\inc\drv.h"#include "..\ucos-ii\add\osaddition.h"#include "..\inc\OSFile.h"#include "..\inc\drv\Ustring.h"#include <string.h>///******************任务定义***************///OS_STK Main_Stack[STACKSIZE*8]={0, }; //Main_Test_Task堆栈void Main_Task(void *Id); //Main_Test_Task#define Main_Task_Prio 12OS_STK Led_Flash_Stack[STACKSIZE]= {0, }; //LED闪烁任务堆栈void Led_Flash_Task(void *Id); //LED闪烁任务#define Led_Flash_Prio 60/**************已经定义的OS任务*************#define Touch_Screen_Task_Prio 9#define Main_Task_Prio 12#define Key_Scan_Task_Prio 58#define Lcd_Fresh_prio 59#define Led_Flash_Prio 60***************************************////////////*****************事件定义*****************///OS_EVENT *Nand_Rw_Sem; //Nand_Flash读写控制权旗语//and you can use it as folloeing:// Nand_Rw_Sem=OSSemCreate(1); //创建Nand-Flash读写控制权旗语,初值为1满足互斥条件//// OSSemPend(Nand_Rw_Sem,0,&err);// OSSemPost(Nand_Rw_Sem);OS_EVENT *Uart_Rw_Sem; //Uart读写控制权旗语//and you can use it as folloeing:// Uart_Rw_Sem=OSSemCreate(1); //创建Uart读写控制权旗语,初值为1满足互斥条件//// OSSemPend(Uart_Rw_Sem,0,&err);// OSSemPost(Uart_Rw_Sem);//////////////////////////////////////////////////////////void Led_Flash_Task(void *Id)//指示RTOS处于正常工作中{ unsigned char led_state; Uart_Printf(0,"\n10"); for (;;) { Led_Display(led_state); led_state=~led_state; OSTimeDly(250); }}//Led_Flash_Taskvoid initOSGUI() //初始化操作系统的图形界面{ initOSMessage(); initOSList(); initOSDC(); initOSCtrl(); initOSFile();}/////////////////////////////////////////////////////// Main function. //////////////////////////////////////////////////////int Main(int argc, char **argv){ ARMTargetInit(); // do target (uHAL based ARM system) initialisation // OSInit(); // needed by uC/OS-II // uHALr_ResetMMU(); LCD_Init(); //初始化LCD模块 LCD_printf("LCD initialization is OK\n"); LCD_printf("320 x 240 Text Mode\n"); LoadFont(); LoadConfigSys(); // create the tasks in uC/OS and assign increasing // // priorities to them so that Task3 at the end of // // the pipeline has the highest priority. // LCD_printf("Create task on uCOS-II...\n"); OSTaskCreate(Main_Task, (void *)0, (OS_STK *)&Main_Stack[STACKSIZE*8-1], Main_Task_Prio);// 1 OSTaskCreate(Led_Flash_Task, (void *)0, (OS_STK *)&Led_Flash_Stack[STACKSIZE-1], Led_Flash_Prio );// 10 OSAddTask_Init(); LCD_printf("Starting uCOS-II...\n"); LCD_printf("Entering graph mode...\n"); LCD_ChangeMode(DspGraMode); initOSGUI(); InitRtc(); Nand_Rw_Sem=OSSemCreate(1); //创建Nand-Flash读写控制权旗语,初值为1满足互斥条件// ARMTargetStart(); //Start the (uHAL based ARM system) system running // OSStart(); // start the game // // never reached // return 0;}//main//////////////////////////////////////////////////////////////////////////////////////////////////////////////////PTextCtrl pTextCtrl;#define ID_MainTextCtrl 101int sysnumber;char sysfilename [ ]={'S','Y','S',' ',' ',' ',' ',' ','D','A','T'};void LoadSysNumber(){ FILE *pfile; pfile=OpenOSFile(sysfilename,FILEMODE_READ); if(pfile==NULL){ sysnumber=0; return; } ReadOSFile(pfile,(U8*)&sysnumber,sizeof(int)); CloseOSFile(pfile);}void SaveSysNumber(){ FILE *pfile; pfile=OpenOSFile(sysfilename,FILEMODE_WRITE); if(pfile==NULL){ return; } WriteOSFile(pfile,(U8*)&sysnumber,sizeof(int)); CloseOSFile(pfile);}void CreateText(){ structRECT rect; int i=0; U16 str[20]; LoadSysNumber(); SetRect(&rect, 100,30,160,50); //设置PID参数轴1P的文本框 pTextCtrl=CreateTextCtrl(ID_MainTextCtrl, &rect, FONTSIZE_MIDDLE, CTRL_STYLE_FRAME, NULL, NULL); Int2Unicode(sysnumber,str); SetWndCtrlFocus(NULL, ID_MainTextCtrl); SetTextCtrlText(pTextCtrl, str,TRUE);}U8 onKey(int nkey, int fnkey);void Main_Task(void *Id) //Main_Test_Task{ POSMSG pMsg=0; ClearScreen(); CreateText(); //创建文本框 //消息循环 for(;;){ POS_Ctrl pCtrl; pMsg=WaitMessage(0); if(pMsg->pOSCtrl){ if(pMsg->pOSCtrl->CtrlMsgCallBk) (*pMsg->pOSCtrl->CtrlMsgCallBk)(pMsg); } else{ switch(pMsg->Message){ case OSM_KEY: pCtrl=GetCtrlfromID(NULL, GetWndCtrlFocus(NULL)); if(pCtrl->CtrlType==CTRLTYPE_WINDOW){ if((((PWnd)pCtrl)->style&WND_STYLE_MODE)==WND_STYLE_MODE){ //焦点是有模式窗口,消息直接传递过去 OSOnSysMessage(pMsg); break; } } if(onKey(pMsg->WParam,pMsg->LParam) ) break; default: OSOnSysMessage(pMsg); break; } } DeleteMessage(pMsg); }}U8 onKey(int nkey, int fnkey){ PDC pdc; U16 str[20]; static U8 input=FALSE; switch(nkey){ case 11://OK if(!input){ pTextCtrl->text[0]=0; //清空文本框 SetTextCtrlEdit(pTextCtrl, TRUE); DrawTextCtrl(pTextCtrl); input=TRUE; } else{ sysnumber=Unicode2Int(pTextCtrl->text); SetTextCtrlEdit(pTextCtrl, FALSE); DrawTextCtrl(pTextCtrl); SaveSysNumber(); input=FALSE; } return TRUE; case 15://Cancel SetTextCtrlEdit(pTextCtrl, FALSE); Int2Unicode(sysnumber,str); SetTextCtrlText(pTextCtrl, str,TRUE); input=FALSE; return TRUE; } return FALSE;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -