void USART2_IRQHandler(void) { u8 RS485_RX_BUF[64]; #ifdef OS_TICKS_PER_SEC //如果时钟节拍数定义了,说明要使用ucosII了. OSIntEnter(); #endif if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET) //接收到数据 { RS485_RX_BUF[RS485_RX_CNT++]=USART_ReceiveData(USART2); //读取接收到的数据 if(RS485_RX_BUF[RS485_RX_CNT-1]=='&'){RS485_RX_BUF[0]='&'; RS485_RX_CNT=1;} if(RS485_RX_BUF[RS485_RX_CNT-1]=='*') { RS485_RX_CNT=0; if(RS485_RX_BUF[1]=='#'){OSMboxPost(RS485_STUTAS_MBOX,(void*)&RS485_RX_BUF);} else OSMboxPost(RS485_MBOX,(void*)&RS485_RX_BUF); } } #ifdef OS_TICKS_PER_SEC //如果时钟节拍数定义了,说明要使用ucosII了. OSIntExit(); #endif }
void Task_UART0Rx(void *pdata){ INT8U err; INT32U Recv = 0; Recv = Recv; while(1){ Recv = (INT32U)OSMboxPend(Mbox_UART0Rx,0,&err); OSMboxPost(Mbox_UART0Tx,(void*)PackageRx0.iData); OSMboxPost(Mbox_BEEPMAN,(void*)PackageRx0.iType); } }
void TaskCarLaneSensors(void *pdata) { pdata = pdata; while(1) { if ((car1Pos.y == Y_SENSOR1 && car1Direction == DOWN) || (car1Pos.y == Y_SENSOR2 && car1Direction == UP)) OSMboxPost(CarMbox, (void *)trafficSignals[0]); //send request to cross signal to the controller if ((car3Pos.y == Y_SENSOR2 && car3Direction == DOWN) || (car3Pos.y == Y_SENSOR1 && car3Direction == UP)) OSMboxPost(CarMbox, (void *)trafficSignals[1]); //send finish crossing signal to the controller OSTimeDly(1); //delay here for the kernel to switch to another task } }
void TaskPedLaneSensors(void *pdata) { pdata = pdata; while(1) { if ((pedPos.x == X_SENSOR1 && pedDirection == RIGHT) || (pedPos.x == X_SENSOR2 && pedDirection == LEFT)) OSMboxPost(PedMbox, (void *)trafficSignals[2]); //send request to cross signal to the controller if ((pedPos.x == X_SENSOR2 && pedDirection == RIGHT) || (pedPos.x == X_SENSOR1 && pedDirection == LEFT)) OSMboxPost(PedMbox, (void *)trafficSignals[3]); //send finish crossing signal to the controller OSTimeDly(1); } }
void GoRoute1(void)//从发车位到取树叶位置 { //uint16 sonic_dist; //uint8 flag=0; //static uint8 count=0; //int flaglidar=1; //fp64 robot_radian,y_record,y_scan; //extern fp64 Lidar_Dist1; Route_Num=1; // SetPointPath(0,Route[1],PointRoute[Route[1]].selfangle,PointRoute[Route[1]].position); while(RouteFinish) { if(Point_NowNum>=Point_EndNum-1) { RouteFinish=0; Route_Num++; OSMboxPost(ArmMbox,&Route_Num); LCD_SetXY(0,0); LCD_WriteString("route1 done"); } OSTimeDly(1); } }
void IsrEint1(void) { pMsgTask->cnt = 255-t5; pMsgTask->msg = "uCOS2"; OSMboxPost(Tmbox, (void *)pMsgTask); }
void IRQ_UART1(void){ INT32U drop,id,cont; drop = drop; if(rSUBSRCPND&(B5)){//Exception delay(10); rSUBSRCPND = (B3)|(B4)|(B5); rSRCPND = rINTPND; rINTPND = rINTPND; drop = rUERSTAT1; flush1(); } else if(rSUBSRCPND&(B3)){//RXD1 rSUBSRCPND = (B3); rSRCPND = rINTPND; rINTPND = rINTPND; while(!RxF1COUNT); delay(10); drop = rURXH1; id = 0; for(cont = 1000000000;cont > 0;cont = cont/10) id += ((rURXH1-0x30)*cont); flush1(); OSMboxPost(Mbox_UART0Tx,(void*)id); } }
void lcd_output(http_conn* conn) { alt_u8* delimiter_token; alt_u8* temp_pos; delimiter_token = strtok(conn->rx_rd_pos, "&"); while( delimiter_token != NULL ) { if (strstr(delimiter_token, "lcd_text")) { temp_pos = strstr(delimiter_token, "="); ++temp_pos; //printf("\n--%s--\n",delimiter_token); /* LCD_TEXT is limited to 20 characters...limiting string to that size. */ strncpy( board_funcs.LCD_TEXT, temp_pos, 20 ); } delimiter_token = strtok( NULL, "&" ); } /* Clean up the HTTP-formatted text string. For now this just replaces '+'s with spaces. */ http_cleanup_lcd_text(); /* Post the updated LCD_TEXT to the board_control_mbox. */ OSMboxPost(board_control_mbox, (void*)&board_funcs); }
void IRQ_UART0(void){ INT32U drop; drop = drop; if(rSUBSRCPND&(B2)){//Exception delay(10); rSUBSRCPND = (B0)|(B1)|(B2); rSRCPND = rINTPND; rINTPND = rINTPND; drop = rUERSTAT0; flush0(); } else if(rSUBSRCPND&(B0)){//RXD0 rSUBSRCPND = (B0); rSRCPND = rINTPND; rINTPND = rINTPND; while(!RxF0COUNT); delay(10); recbin0((INT8U*)&PackageRx0,16); flush0(); OSMboxPost(Mbox_UART0Rx,(void*)&PackageRx0); } }
// added by Peli 04-06-2010 void sweep2(http_conn* conn) { alt_u8* delimiter_token; alt_u8* temp_pos; /* Set board_funcs to be off, by default. */ board_funcs.SSD_ON = 0; //board_funcs.LED_ON = 0; segnum = 0; delimiter_token = strtok(conn->rx_rd_pos, "&"); // printf("\n--%s--\n",delimiter_token); while( delimiter_token != NULL ) { if (strstr(delimiter_token, "seg_num")) { board_funcs.SSD_ON = 1; temp_pos = strstr(delimiter_token, "="); ++temp_pos; //printf("\n--%s--\n",delimiter_token); /* SEG_NUM is limited to 2 characters...limiting string to that size. */ strncpy( board_funcs.SEG_NUM, temp_pos, 20 ); } delimiter_token = strtok( NULL, "&" ); } http_cleanup_seg_num(); OSMboxPost(board_control_mbox, (void*)&board_funcs); }
/***************************************************************************** ** Function name: LiftTableHandle ** Descriptions: 给设备管理任务发送升降机控制邮箱 ** parameters: HandleType:操作类型1:出货操作 2:检查状态 3:查询出货结果 ChannelNum:逻辑货道编号 LevelNum:层编号 Binnum:箱柜编号 BackMsg:返回的数据 ** Returned value: 0:成功;1:失败; *****************************************************************************/ unsigned char LiftTableHandle(unsigned char HandleType,unsigned char ChannelNum,unsigned char LevelNum,unsigned char Binnum,unsigned char *BackMsg) { MessagePack *RecvBoxPack; uint8_t err,i; MsgAccepterPack.ChnlHandleType = HandleType; MsgAccepterPack.ChannelNum = ChannelNum; MsgAccepterPack.Binnum = Binnum; MsgAccepterPack.LevelNum = LevelNum; TraceChannel("LiftTableHandle[start]:type = %d\r\n",HandleType); liftSetReady(0); OSMboxPost(g_LiftTableMail,&MsgAccepterPack); RecvBoxPack = OSMboxPend(g_LiftTableBackMail,LIFT_HANDLE_TIMEOUT,&err); liftSetReady(1); if(err == OS_NO_ERR){ TraceChannel("LiftTableHandle[pend]:type=%d\r\n",HandleType); for(i=0;i<10;i++){ BackMsg[i] = RecvBoxPack->LiftTablePack[i]; } return RecvBoxPack->HandleResult; } TraceChannel("LiftTableHandle[pend]:timeout!\r\n"); return 0xFF; }
void sweep(http_conn* conn) { char *delimiter_token; /* Set board_funcs to be off, by default. */ board_funcs.LED_ON = 0; board_funcs.SSD_ON = 0; delimiter_token = strtok(conn->rx_rd_pos, "&"); while(delimiter_token != NULL) { if (strstr(delimiter_token, "LED")) { board_funcs.LED_ON = 1; } else if (strstr(delimiter_token, "seven")) { board_funcs.SSD_ON = 1; } delimiter_token = strtok( NULL, "&" ); } OSMboxPost(board_control_mbox, (void*)&board_funcs); }
void feed_task(void *pvParam) { while(1) { if(KEY_Pressed(KEY_State(), key_service)) { post_trace("feed data box"); OSMboxPost(watcher_data->mbox_data, (void *)NULL); } } }
void Task_ADC1(void *p_arg) { (void)p_arg; //'p_arg'没有用到,防止编译器警告 while(1) { ADC_ConvertedValueLocal =(float) ADC_ConvertedValue/4096*10; OSMboxPost(adc_MBOX,&ADC_ConvertedValueLocal); OSTimeDlyHMSM(0,0,0,500); } }
unsigned char TestLiftTablePost(unsigned char HandleType,unsigned char ChannelNum,unsigned char LevelNum,unsigned char Binnum) { switch(HandleType) { case 1: MsgAccepterPack.ChnlHandleType = HandleType; MsgAccepterPack.ChannelNum = ChannelNum; MsgAccepterPack.Binnum = Binnum; MsgAccepterPack.LevelNum = LevelNum; //发送邮箱给DevieTask让其操作Hopper做出币操作 OSMboxPost(g_LiftTableMail,&MsgAccepterPack); break; case 2: MsgAccepterPack.ChnlHandleType = HandleType; MsgAccepterPack.ChannelNum = ChannelNum; MsgAccepterPack.Binnum = Binnum; MsgAccepterPack.LevelNum = LevelNum; //发送邮箱给DevieTask让其操作Hopper做出币操作 OSMboxPost(g_LiftTableMail,&MsgAccepterPack); break; case 3: MsgAccepterPack.ChnlHandleType = HandleType; MsgAccepterPack.ChannelNum = ChannelNum; MsgAccepterPack.Binnum = Binnum; MsgAccepterPack.LevelNum = LevelNum; //发送邮箱给DevieTask让其操作Hopper做出币操作 OSMboxPost(g_LiftTableMail,&MsgAccepterPack); break; case 4: MsgAccepterPack.ChnlHandleType = HandleType; MsgAccepterPack.ChannelNum = ChannelNum; MsgAccepterPack.Binnum = Binnum; MsgAccepterPack.LevelNum = LevelNum; //发送邮箱给DevieTask让其操作Hopper做出币操作 OSMboxPost(g_LiftTableMail,&MsgAccepterPack); break; } return 1; }
/* ******************************************************************************* ** ** This function sends a message to a given mailbox. ** ******************************************************************************* */ RTOS_Status RTOS_MailboxSend( RTOS_Mailbox mailbox, RTOS_Message message ) { if( ! RTOS_MailboxIsValid( mailbox ) ) return( RTOS_MAILBOX_FAILURE ); if( ! RTOS_MessageIsValid( message ) ) return( RTOS_MESSAGE_FAILURE ); if( OSMboxPost( (OS_EVENT*)mailbox, (void*) message ) != OS_NO_ERR ) return( RTOS_FAILURE ); return( RTOS_OK ); }
//邮箱投递,信号量投递任务 void AppPostTask(void *pdata) { static uint8_t key='A'; uint16_t task_counter=0; while(1) { key++; task_counter++; if(key > 'Z') key='A'; //改变邮箱投递的数据 OSMboxPost(msg_test, &key); //发送消息 OSSemPost(sem_test); //发送信号量 printf("App Post Message&Sem:%d times\r\n", task_counter); OSTimeDlyHMSM(0, 0, 0, 300); } }
//邮箱投递,信号量投递任务 void AppPostTask(void *pdata) { uint8_t key='A'; uint16_t TaskCtr=0; while(1) { key++; TaskCtr++; if(key > 'Z') key='A'; //改变邮箱投递的数据 OSMboxPost(msg_test,(void*)key); //发送消息 OSSemPost(sem_test); //发送信号量 UART_printf("App Post Message&Sem:%d times\r\n", TaskCtr); OSTimeDlyHMSM(0, 0, 0, 300); } }
void Task_UART0TX(void *pdata){ INT8U err; INT32U Recv = 0; while(1){ Recv = (INT32U)OSMboxPend(Mbox_UART0Tx,0,&err); PackageTx0.iSave = 0x0; PackageTx0.iType = iOPcode; PackageTx0.iData = Recv; PackageTx0.iMagicNumber = MAGIC; sendbin0((INT8U*)&PackageTx0,sizeof(PackageFormat)); itos_dec(Recv,vBuffer,10); OSTimeDlyResume(15); OSMboxPost(Mbox_LCDMAN,(void*)vBuffer); } }
void CCD_TASK(void *p_arg) { (void)p_arg; uint8_t Track_Midline_value,A; CCD_Restet(); while(1) { CCD_gather(); CCD_Filtering(); Data_binarization(averaging()); Track_Midline_value = Track_Midline(); A = Track_Midline_value; printf("Track_Midline_value = %d\n",A); OSMboxPost(Str_Box_2,&Track_Midline_value); OSTimeDlyHMSM(0,0,0,30); } }
void Task5(void *pdata) { unsigned char err = 0; MsgTask *p = (MsgTask *)0; pdata=pdata; while(1) { p = (MsgTask *)OSMboxPend(Tmbox,0,&err); t5 = p->cnt; com_putstring(p->msg, 5); com_putenter(); p->msg = "Task5"; OSMboxPost(Tmbox, (void *)p); PA_OUT_REV(LED5); } }
/* ------------------------------------------------------------------------------------------------------ * TcpClientTask() * * Description : main function. * * Argument(s) : none. * */ static void TcpClientMainProc(void) { struct in_addr g_sClientIP; switch(g_bNetStatus) { case NETS_INIT: do { g_sClientIP.s_addr = lwIPLocalIPAddrGet(); OSTimeDly(10); }while(0 == g_sClientIP.s_addr); OSMboxPost(App_LcdMbox, (void *)&g_sClientIP.s_addr); /* Send lcd txt.*/ g_bNetStatus = NETS_LOCIP; /* Net mode charge LOCIP.*/ TaskSocket_Create(); /* Create Socket task and init.*/ break; case NETS_LOCIP: // TcpGetLocalIp(); break; case NETS_SRVIP: // TcpGetServerIp(); break; case NETS_LOGIN: // TcpClientRelogin(); break; case NETS_NORMAL: // TcpNormalProc(); break; default: break; } }
/* 复位按键检测,实现对管理员密码和系统管理员密码复位 长按复位键5s可实现复位操作 time: LC 2013.8.13 */ void RestKeyCheck() { /*检测复位键是否按下,低有效*/ if(!RESETKEY) { u8 i; LED2ON; for(i=0;i<100;i++) { OSTimeDlyHMSM(0, 0, 0,50);//循环检测,按下时长超过3s if(RESETKEY) { LED2OFF; break; } if(i == 99) { CAB_MSG cab_msg; TIM_Cmd(TIM2,DISABLE);//禁能TIM2,禁止键盘输入 RefreshLCD(); Dis1LineMid("初始化中、、、" , 1); RefreshLCD();//刷新屏幕 ReadCabinetMsg(&cab_msg);//读取系统信息 memset(cab_msg.sys_password , '8' , 6);//改变箱子系统管理员密码 888888 memset(cab_msg.comm_password , '6' , 6);//改变箱子系统管理员密码 666666 WriteCabinetMsg(&cab_msg);//写入系统信息 OSTimeDlyHMSM(0, 0, 2,0);//显示时间2s LED2OFF; TIM_Cmd(TIM2,ENABLE);//使能TIM2 pfunBlock = mainFunBlock; OSMboxPost(display_box , pfunBlock);// 发送邮箱,刷新显示,回到主屏 } } } }
static void OSView_RxPkt (void) { #if OS_VIEW_PARSE_TASK > 0 #if OS_SEM_EN > 0 OSSemPost(OSView_Sem); /* We have a whole packet, signal task to parse it! */ #else #if OS_MBOX_EN > 0 OSMboxPost(OSView_Mbox, (void *)1); #endif #endif #else INT16U len; len = OSView_CmdParsePkt(); /* We have a whole packet, parse it! */ if (len > 0) { OSView_TxLen = len; OSView_TxStart(); } #endif }
/** * @brief This function handles TIM3 interrupt request. * @param None * @retval None */ void TIM2_IRQHandler(void) { uint8_t retval = OS_ERR_NONE; static TASK1_MBOX_TypeDef mbox; OSIntEnter(); LEDS_Toggle(LED_7); // // Clear the timer. Failure to do so and you will just // stay here since the timer will keep the IRQ asserted // //TIM2->SR &= ~TIM_SR_UIF; TIM_ClearFlag(TIM2, TIM_SR_UIF); // // Clear the interrupt at the NVIC level // NVIC_ClearPendingIRQ(TIM2_IRQn); // // Wake up task 1 // mbox.action = 0x01; retval = OSMboxPost(task1_mbox, (void *) &mbox); if (retval != OS_ERR_NONE){ //Uh oh....?????? // while(1); } OSIntExit(); return; }
void Task3(void *pdata) { pdata = pdata; //adc_init(); unsigned char err = 0; MsgTask *p = (MsgTask *)0; while(1) { //adc_switch_channel(ADC_VOLTAGE); //START_ADC(); PA_OUT_REV(LED3); //t5 = ADC; //com_printf("ADC = %d\n", t5); pMsgTask->cnt = 255-t5; pMsgTask->msg = "Task3"; OSMboxPost(Tmbox, (void *)pMsgTask); p = (MsgTask *)OSMboxPend(Tmbox,0,&err); com_putstring(p->msg, 5); com_putenter(); OSTimeDly(OS_TICKS_PER_SEC); } }
/* Notes :(1) The first line of code is used to prevent a compiler warning because 'p_arg' is not * used. The compiler should not generate any code for this statement. * * ********************************************************************************************************* */ void APP_TaskTwo(void *p_arg) { static char taskMsg[CHAR_BUFFER_SIZE]; /* buffer for received characters to be passed to TaskThree */ signed int taskCharBuffer = -1; /* Character buffer for receiving */ unsigned char bufIndex = 0; (void)p_arg; /* Note(1) */ while (1) { /* Task body, always written as an infinite loop */ /* Load character received on serial to character buffer */ taskCharBuffer = UART1_ReadChar(); /* If the character in the buffer is valid... */ if ( (taskCharBuffer >= 32) && (taskCharBuffer < 128) ) { /* ...cast and copy it to message buffer variable... */ taskMsg[bufIndex] = (char)taskCharBuffer; /* ...and post the message to the mailbox */ if(OS_ERR_NONE != OSMboxPost(pSerialMsgObj, &taskMsg[bufIndex])) { /* Error has occured, handle can be done here */ } bufIndex++; if(bufIndex >= CHAR_BUFFER_SIZE) bufIndex = 0; } /* Delay task for 1 system tick (uC/OS-II suspends this task and executes * the next most important task) */ OSTimeDly(1); } }
void GUI_X_SignalEvent(void) { (void)OSMboxPost(EventMbox,(void *)1); }
/********************************************************************* * * _cbDialog */ static void _cbDialog(WM_MESSAGE * pMsg) { WM_HWIN hItem; int NCode; int Id; int SelNum; int i; switch (pMsg->MsgId) { case WM_INIT_DIALOG: // // Initialization of 'Listbox' // hItem = WM_GetDialogItem(pMsg->hWin, ID_LISTBOX_0); for(i = 0;i < 6;i++) { LISTBOX_AddString(hItem, pTextPreamble[i]); } switch(g_rom_para.preamble) { case 0xFC: LISTBOX_SetSel(hItem,0); break; case 0xFA: LISTBOX_SetSel(hItem,1); break; case 0xFB: LISTBOX_SetSel(hItem,2); break; case 0xFD: LISTBOX_SetSel(hItem,3); break; case 0xFF: LISTBOX_SetSel(hItem,4); break; case 0xFE: LISTBOX_SetSel(hItem,5); break; } // // Initialization of 'Listbox' // hItem = WM_GetDialogItem(pMsg->hWin, ID_LISTBOX_1); for(i = 0;i < 7;i++) { LISTBOX_AddString(hItem, pTextSpeed[i]); } switch(g_rom_para.plc_freq) { case PLC_270_III: LISTBOX_SetSel(hItem,0); break; case PLC_270_III_5: LISTBOX_SetSel(hItem,1); break; case PLC_270_II: LISTBOX_SetSel(hItem,2); break; case PLC_421_50BPS: LISTBOX_SetSel(hItem,3); break; case PLC_421_100BPS: LISTBOX_SetSel(hItem,4); break; case PLC_421_600BPS: LISTBOX_SetSel(hItem,5); break; case PLC_421_1200BPS: LISTBOX_SetSel(hItem,6); break; } hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_0); WIDGET_AndState(hItem,WIDGET_STATE_FOCUSSABLE); BUTTON_SetBkColor(hItem,0,GUI_GREEN); hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_1); WIDGET_AndState(hItem,WIDGET_STATE_FOCUSSABLE); BUTTON_SetBkColor(hItem,0,GUI_YELLOW); break; case WM_KEY: if((((WM_KEY_INFO *)(pMsg->Data.p))->PressedCnt) == 1) { switch(((WM_KEY_INFO *)(pMsg->Data.p))->Key) { case GUI_KEY_GREEN: if(g_rom_para.channel != CHANNEL_PLC) { ERR_NOTE(g_hWin_monitor,GUI_MSBOX_FUN_DISALE_ERROR); } else { if(g_hWin_ReadMeter > 0) { hItem = WM_GetDialogItem(pMsg->hWin,ID_LISTBOX_0); SelNum = LISTBOX_GetSel(hItem); if(SelNum != 5) //前导符不是FE { hItem = RMD_Get_Speed(); EDIT_SetText(hItem,pTextPreamble[SelNum]); } else if(SelNum == 5) { hItem = WM_GetDialogItem(pMsg->hWin,ID_LISTBOX_1); SelNum = LISTBOX_GetSel(hItem); hItem = RMD_Get_Speed(); EDIT_SetText(hItem,pTextSpeed[SelNum]); } } else if(g_hWin_ProtoDbg > 0) { hItem = WM_GetDialogItem(pMsg->hWin,ID_LISTBOX_0); SelNum = LISTBOX_GetSel(hItem); if(SelNum != 5) //前导符不是FE { hItem = CPT_Get_Speed(); EDIT_SetText(hItem,pTextPreamble[SelNum]); } else if(SelNum == 5) { hItem = WM_GetDialogItem(pMsg->hWin,ID_LISTBOX_1); SelNum = LISTBOX_GetSel(hItem); hItem = CPT_Get_Speed(); EDIT_SetText(hItem,pTextSpeed[SelNum]); } } else if(g_hWin_para > 0) { //保留 } FRQ_PreamSel(pMsg); if(0xFE == g_rom_para.preamble) { FRQ_FreqSel(pMsg); g_gui_para.cmd = GUI_CMD_PLC_FREQ_SET; g_gui_para.state = GUI_STATE_PLC_FREQ_SET; OSMboxPost(g_sys_ctrl.up_mbox, (void*)&g_gui_para); } DEV_Parameters_Write();//保存数据 WM_DeleteWindow(g_hWin_freq); FRQ_SetFocus(); g_hWin_freq = HBWIN_NULL; } break; case GUI_KEY_YELLOW: WM_DeleteWindow(g_hWin_freq); FRQ_SetFocus(); g_hWin_freq = HBWIN_NULL; break; } } break; // USER START (Optionally insert additional message handling) // USER END default: WM_DefaultProc(pMsg); break; } }
//++++++++++++COM1处理任务++++++++++++++++++++++++++ static void Task_Com1(void *p_arg) { INT8U err; INT8U *s; INT8U i; INT8U flag=0; static unsigned long d=0; static unsigned int freq_tmp=0; static unsigned int freq_tmp1=0; INT8U ADD_x=FREQ_LCD_ADD_X; s=OSMboxPend(Com1_MBOX,0,&err); //Init_AD9850(); (void)p_arg; while(1) { //USART_OUT(USART1,"Task_Com1\r\n"); if(*s=='L') { for(i=1;i<50;i++) { if(*(s+i)!='F') { d=d*10+(*(s+i)-0x30); } else { //AD9850_Write_Serial(d,0,0); //KEY_FLAG=0; //Freq_SET=d; //if(d/1000000>0) //{ freq_tmp=d/1000000; if(freq_tmp>0)flag=1; if(flag==1) { USART_OUT(USART1,"USART is %d",freq_tmp); //TFT_PutChar12x24(ADD_x,FREQ_LCD_ADD_Y,freq_tmp+0x30,0xffff,0x0000); } //else GUI_Text12x24(ADD_x,FREQ_LCD_ADD_Y," ",1,0xffff,0x0000); ADD_x+=12; freq_tmp=d%1000000/1000; freq_tmp1=(freq_tmp)/100; if(freq_tmp1>0)flag=1; if(flag==1) { //USART_OUT(USART1,"%d",freq_tmp1); //TFT_PutChar12x24(ADD_x,FREQ_LCD_ADD_Y,freq_tmp1+0x30,0xffff,0x0000); } //else GUI_Text12x24(ADD_x,FREQ_LCD_ADD_Y," ",1,0xffff,0x0000); ADD_x+=12; freq_tmp1=(freq_tmp%100)/10; if(freq_tmp1>0)flag=1; if(flag==1) { USART_OUT(USART1,"%d",freq_tmp1); //TFT_PutChar12x24(ADD_x,FREQ_LCD_ADD_Y,freq_tmp1+0x30,0xffff,0x0000); } //else GUI_Text12x24(ADD_x,FREQ_LCD_ADD_Y," ",1,0xffff,0x0000); ADD_x+=12; freq_tmp1=(freq_tmp%100)%10; if(freq_tmp1>0)flag=1; if(flag==1) { USART_OUT(USART1,"%d",freq_tmp1); //TFT_PutChar12x24(ADD_x,FREQ_LCD_ADD_Y,freq_tmp1+0x30,0xffff,0x0000); } //else GUI_Text12x24(ADD_x,FREQ_LCD_ADD_Y," ",1,0xffff,0x0000); ADD_x+=12; freq_tmp=d%1000; freq_tmp1=(freq_tmp)/100; if(freq_tmp1>0)flag=1; if(flag==1) { USART_OUT(USART1,"%d",freq_tmp1); //TFT_PutChar12x24(ADD_x,FREQ_LCD_ADD_Y,freq_tmp1+0x30,0xffff,0x0000); } //else GUI_Text12x24(ADD_x,FREQ_LCD_ADD_Y," ",1,0xffff,0x0000); ADD_x+=12; freq_tmp1=(freq_tmp%100)/10; if(freq_tmp1>0)flag=1; if(flag==1) { USART_OUT(USART1,"%d",freq_tmp1); //TFT_PutChar12x24(ADD_x,FREQ_LCD_ADD_Y,freq_tmp1+0x30,0xffff,0x0000); } //else GUI_Text12x24(ADD_x,FREQ_LCD_ADD_Y," ",1,0xffff,0x0000); ADD_x+=12; freq_tmp1=(freq_tmp%100)%10; if(freq_tmp1>0)flag=1; if(flag==1) { USART_OUT(USART1,"%dHz\r\n",freq_tmp1); //TFT_PutChar12x24(ADD_x,FREQ_LCD_ADD_Y,freq_tmp1+0x30,0xffff,0x0000); } //else GUI_Text12x24(ADD_x,FREQ_LCD_ADD_Y," ",1,0xffff,0x0000); ADD_x+=12; //GUI_Text12x24(ADD_x,FREQ_LCD_ADD_Y,"Hz",2,0xffff,0x0000); //} //TFT_PutChar12x24(00,200-24,tmp+0x30,0xffff,0x0000); //GUI_Text12x24(48,200-24,"KHz",3,0xffff,0x0000); // Select_DA(); // SPI_SendData(d<<6); // NotSelect_DA(); break; } } *s=0; d=0; ADD_x=FREQ_LCD_ADD_X; flag=0; OSMboxPost(Com1_MBOX,(void *)&s); } OSTimeDlyHMSM(0, 0, 0, 200); } }