/*** This is the parent task entry ***/ void main_task (void) { #ifdef CYASSL_KEIL_TCP_NET init_TcpNet (); os_tsk_create (tcp_tick, 2); os_tsk_create (tcp_poll, 1); #endif #ifdef CYASSL_MDK_SHELL #ifdef HAVE_KEIL_RTX os_tsk_create_user(shell_main, 1, Shell_stack, SHELL_STACKSIZE) ; #else shell_main() ; #endif #else /************************************/ /*** USER APPLICATION HERE ***/ /************************************/ printf("USER LOGIC STARTED\n") ; #endif #ifdef HAVE_KEIL_RTX CYASSL_MSG("Terminating tcp_main\n") ; os_tsk_delete_self (); #endif }
__task void init(void) // Task #1 { os_tsk_create(task1, 1); //task1 at priority 1 os_tsk_create(task2, 1); //task2 at priority 1 os_tsk_create(task3, 1); //task3 at priority 1 os_tsk_create(task4, 1); //task4 at priority 1 os_tsk_create(getActiveTasks, 1); os_tsk_delete_self(); //must delete itself before exiting }
__task void init (void) { /* Add System initialisation code here */ init_io (); init_display (); init_TcpNet (); /* Initialize Tasks */ os_tsk_prio_self (100); os_tsk_create (blink_led, 20); os_tsk_create (timer_task, 30); os_tsk_create_user (tcp_task, 0, &tcp_stack, sizeof(tcp_stack)); os_tsk_delete_self(); }
__task void initTask(void){ //sem init os_sem_init(&semIncMin, 0); os_sem_init(&semKeyPress, 0); os_sem_init(&semIncHour, 0); os_sem_init(&semIncSec, 0); initTexts(); //mutex init os_mut_init(&mutTime); os_mut_init(&mut_msg_ptr); os_mut_init(&mut_msg_offset); //task init os_tsk_create(taskSerial, 0x82); os_tsk_create(clock_task, 0x90); os_tsk_create(taskIncHour, 0x7F); os_tsk_create(taskIncMin, 0x80); os_tsk_create(taskIncSec, 0x81); disTaskId = os_tsk_create(updateDisplay, 0x10); keyTaskId = os_tsk_create(key_task, 0x7E); joyTaskId = os_tsk_create(joy_task, 0x7D); //display stuff... os_evt_set(DIS_EVT_MSG_PTR, disTaskId); //end os_tsk_delete_self(); }
/*---------------------------------------------------------------------------- * Task 5: Credit *---------------------------------------------------------------------------*/ __task void taskCredit (void) { GPU_Image credit; GPU_ConfigureLayer(&Layer_1,LAYER1_START_ADDRESS,320,240); Display_conf.Enable =1; Display_conf.Alpha_On =1; Display_conf.Plan_Enable = 0x1; Display_conf.Test_On=0; GPU_UpdateDisplayConfig(); GPU_HScroll (&Layer_1, 0,1); GPU_VScroll (&Layer_1, 0,1); // Load the image from the SD card to the graphic card GPU_NewImage(&credit, 320, 240,"credit", 0x0500000); SD_LoadImage(&credit, 320, 240, &fil); GPU_BitBlitI2L(&credit, 0, 0, 320, 240,&Layer_1, 0,0); // Waiting the user to press the user button while(is_button_pressed(USER)); // fin de la demo, pour relancer le menu os_tsk_create(taskMenu,15); os_tsk_delete_self (); while (1){}; }
__task void taskDemo (void) { demo(); // fin de la demo, pour relancer le menu os_tsk_create(taskMenu,15); os_tsk_delete_self (); while (1){}; }
void semihost_init(void) { // Called from main task semihostEnabled = 0; os_sem_init(semihostStoppedSem,0); // Create semihost task semihostTask = os_tsk_create(sh_main, SEMIHOST_TASK_PRIORITY); return; }
__task void init(void) { os_mut_init(&g_mut_uart); os_mut_init(&procon); for( task_creator_ctr = 0; task_creator_ctr < P; task_creator_ctr++ ) { os_tsk_create(producer_task, 0); } task_creator_ctr = 0; for( task_creator_ctr = 0; task_creator_ctr < C; task_creator_ctr++ ) { os_tsk_create(consumer_task, 0); } // os_tsk_create(updater_task, 10); os_tsk_delete_self(); }
void TrapList::Initial(void) { soc_massage = udp_get_socket(0, UDP_OPT_SEND_CS | UDP_OPT_CHK_CS, udp_listen_ack); if( soc_massage == 0 ) { printf("\n!!!soc_massage = udp_get_socket failed!!!\n"); return ; } if( !udp_open( soc_massage, 162 ) ) { udp_release_socket(soc_massage); return ; } tsk_send_trap = os_tsk_create(tsk_trap, P_FILE_SYNC); inited = true; }
osThreadId_t osThreadNew(osThreadFunc_t func, void *argument, const osThreadAttr_t *attr) { OS_TID tid = 0; //first task will init the rtx if (taskCount == 0) { os_sys_init_user((void (*)(void))func, MAIN_TASK_PRIORITY, stk_main_task, MAIN_TASK_STACK); } else { tid = os_tsk_create((void (*)(void))func, MAIN_TASK_PRIORITY+1); } taskCount++; return (osThreadId_t) tid; }
/*---------------------------------------------------------------------*/ __task void init(void) { //Initialize the memory pool _init_box(box_mem, sizeof(box_mem), 4); os_mut_init(&g_mut_uart); os_mut_wait(g_mut_uart, 0xFFFF); printf("init: TID = %d\n", os_tsk_self()); os_mut_release(g_mut_uart); g_tid = os_tsk_create(task1, 1); /* task 1 at priority 1 */ os_mut_wait(g_mut_uart, 0xFFFF); printf("init: created task1 with TID %d\n", g_tid); os_mut_release(g_mut_uart); g_tid = os_tsk_create(task2, 4); /* task 2 at priority 2 */ os_mut_wait(g_mut_uart, 0xFFFF); printf("init: created task2 with TID %d\n", g_tid); os_mut_release(g_mut_uart); g_tid = os_tsk_create(task3, 3); /* task 3 at priority 3 */ os_mut_wait(g_mut_uart, 0xFFFF); printf("init: created task3 with TID %d\n", g_tid); os_mut_release(g_mut_uart); g_tid = os_tsk_create(task4, 4); /* task 4 at priority 4 */ os_mut_wait(g_mut_uart, 0xFFFF); printf("init: created task4 with TID %d\n", g_tid); os_mut_release(g_mut_uart); g_tid = os_tsk_create(task5, 1); /* task 5 at priority 1 */ os_mut_wait(g_mut_uart, 0xFFFF); printf("init: created task5 with TID %d\n", g_tid); os_mut_release(g_mut_uart); os_tsk_delete_self(); /* task MUST delete itself before exiting */ }
/*---------------------------------------------------------------------------- * Task 1: RTX Kernel starts this task with os_sys_init (task1) *---------------------------------------------------------------------------*/ __task void task1 (void) { /* Obtain own system task identification number */ id1 = os_tsk_self (); /* Assign system identification number of task2 to id2 */ id2 = os_tsk_create (task2, 1); for (;;) { /* do-this */ /* Indicate to task2 completion of do-this */ os_evt_set (0x0004, id2); /* Wait for completion of do-that (0xffff means no time-out)*/ os_evt_wait_or (0x0004, 0xffff); /* Wait now for 50 ms */ os_dly_wait (5); } }
__task void init (void) { os_mut_init(mut_GLCD); os_mut_init(mut_Gclock); GUI_UC_SetEncodeUTF8(); if(HAL_RTCEx_BKUPRead(&RtcHandle, RTC_BKP_DR6) !=1) { zhuantskid = os_tsk_create (zhuan1, 0); maintskid = os_tsk_create (Main_Task, 0); keytskid = os_tsk_create (phase_KEY, 0); servertskid = os_tsk_create (Server_Task, 0); }else { Time3Disable(); HAL_GPIO_WritePin(GPIOE,GPIO_PIN_3,GPIO_PIN_SET); HAL_GPIO_WritePin(GPIOE,GPIO_PIN_2,GPIO_PIN_RESET); HAL_GPIO_WritePin(GPIOG,GPIO_PIN_3,GPIO_PIN_RESET); HAL_GPIO_WritePin(GPIOG,GPIO_PIN_2,GPIO_PIN_SET); } os_tsk_create (power, 0); // os_tmr_create(500,2); os_tsk_delete_self (); }
/*---------------------------------------------------------------------------- * Task 7 'init': Initialize *---------------------------------------------------------------------------*/ __task void init (void) { os_mut_init(mut_GLCD); t_phaseA = os_tsk_create (phaseA, 0); /* start task phaseA */ t_phaseB = os_tsk_create (phaseB, 0); /* start task phaseB */ t_phaseC = os_tsk_create (phaseC, 0); /* start task phaseC */ t_phaseD = os_tsk_create (phaseD, 0); /* start task phaseD */ t_clock = os_tsk_create (clock, 0); /* start task clock */ t_lcd = os_tsk_create (lcd, 0); /* start task lcd */ os_evt_set (0x0001, t_phaseA); /* send signal event to task phaseA */ os_tsk_delete_self (); }
/*RTX系统初始化*/ __task void Init_task(void) { os_tsk_prio_self (100); //提升自身优先级 os_tsk_create (led_test_task,3); os_tsk_create (send_result,4); // os_tsk_create (upload_refresh_data,5); os_tsk_create(single_jb,6); os_tsk_create(u1recive,3); os_tsk_create (io_keep_time,8); os_tsk_create (get_adc_value,8); os_tsk_delete_self(); }
/*---------------------------------------------------------------------------- * Task 1: RTX Kernel starts this task with os_sys_init (taskMenu) *---------------------------------------------------------------------------*/ __task void taskMenu (void) { // Variable declaration GPU_Image background; GPU_Color aColor; GPU_Color clearColor; int stateArrow = 0; uint8_t arrowX = 0; uint8_t arrowY = 0; uint32_t joystick; int stateOutput = 1; // Set the task priority id1 = os_tsk_self (); os_tsk_prio_self (1); // Configure the layer for the console menu GPU_ConfigureLayer(&Layer_1,LAYER1_START_ADDRESS,320,240); GPU_ConfigureLayer(&Layer_2,LAYER2_START_ADDRESS,320,240); GPU_ConfigureLayer(&Layer_3,LAYER3_START_ADDRESS,320,240); GPU_ConfigureLayer(&Layer_4,LAYER4_START_ADDRESS,320,240); Display_conf.Enable =1; Display_conf.Alpha_On =1; Display_conf.Plan_Enable = 0xF; Display_conf.Test_On=0; GPU_UpdateDisplayConfig(); GPU_HScroll (&Layer_1, 0,1); GPU_VScroll (&Layer_1, 0,1); GPU_HScroll (&Layer_2, 0,1); GPU_VScroll (&Layer_2, 0,1); GPU_HScroll (&Layer_3, 0,1); GPU_VScroll (&Layer_3, 0,1); GPU_HScroll (&Layer_4, 0,1); GPU_VScroll (&Layer_4, 0,1); GPU_ConfigureOutput(MODE_VGA); GPU_ClearScreen(&Layer_1); GPU_ClearScreen(&Layer_2); clearColor.R = 0; clearColor.G = 0; clearColor.B = 0; clearColor.A = 0; GPU_FillRect (&Layer_2,0,0,320,240, clearColor); GPU_ClearScreen(&Layer_3); GPU_FillRect (&Layer_4,0,0,320,240, clearColor); GPU_ClearScreen(&Layer_4); // Load the image from the SD card to the graphic card GPU_NewImage(&background, 320, 240,"menu", 0x0500000); SD_LoadImage(&background, 320, 240, &fil); GPU_BitBlitI2L(&background, 0, 0, 320, 240,&Layer_1, 0,0); // Display the two optionnal menu aColor.R = 255; aColor.G = 255; aColor.B = 255; aColor.A = 255; GPU_WriteText(&Layer_3, 76, 188, "-> Demo", aColor); GPU_WriteText(&Layer_3, 40, 220, "Credits", aColor); GPU_WriteText(&Layer_3, 220, 220, "Output :", aColor); // Display the selector to the first programm aColor.R = 7; aColor.G = 1; aColor.B = 15; aColor.A = 15; GPU_FillRect (&Layer_2,60,108,10,10, aColor); if ( stateOutput == 1) { GPU_WriteText(&Layer_4, 270, 220, "VGA", aColor); } else { GPU_WriteText(&Layer_4, 270, 220, "LCD", aColor); } while((is_button_pressed(USER) && joystick != JOY_RIGHT) || stateArrow == 5 ) { joystick = JOY_GetKeys(); if (joystick == JOY_UP) { if (stateArrow == 0) { stateArrow = 5; } else { stateArrow--; } } if (joystick == JOY_DOWN) { stateArrow++; stateArrow = stateArrow % 6; } if (stateArrow == 4) { arrowX = 20; arrowY = 215; } else if (stateArrow == 5) { arrowX = 200; arrowY = 215; } else { arrowX = 60; arrowY = 108 + 26*stateArrow; } // Update the position of the selector GPU_ClearScreen(&Layer_2); GPU_FillRect (&Layer_2,arrowX ,arrowY,10,10, aColor); switch (stateArrow) { case 0: { Turn_Led(LED2,ON); Turn_Led(LED3,OFF); Turn_Led(LED4,OFF); Turn_Led(LED5,OFF); Turn_Led(LED6,OFF); Turn_Led(LED7,OFF); break; } case 1: { Turn_Led(LED2,OFF); Turn_Led(LED3,ON); Turn_Led(LED4,OFF); Turn_Led(LED5,OFF); Turn_Led(LED6,OFF); Turn_Led(LED7,OFF); break; } case 2: { Turn_Led(LED2,OFF); Turn_Led(LED3,OFF); Turn_Led(LED4,ON); Turn_Led(LED5,OFF); Turn_Led(LED6,OFF); Turn_Led(LED7,OFF); break; } case 3: { Turn_Led(LED2,OFF); Turn_Led(LED3,OFF); Turn_Led(LED4,OFF); Turn_Led(LED5,ON); Turn_Led(LED6,OFF); Turn_Led(LED7,OFF); break; } case 4: { Turn_Led(LED2,OFF); Turn_Led(LED3,OFF); Turn_Led(LED4,OFF); Turn_Led(LED5,OFF); Turn_Led(LED6,ON); Turn_Led(LED7,OFF); break; } case 5: { Turn_Led(LED2,OFF); Turn_Led(LED3,OFF); Turn_Led(LED4,OFF); Turn_Led(LED5,OFF); Turn_Led(LED6,OFF); Turn_Led(LED7,ON); break; } } if (stateArrow == 5 && !is_button_pressed(USER)) { GPU_ClearScreen(&Layer_4); GPU_FillRect (&Layer_4,0,0,320,240, clearColor); if ( stateOutput == 1) { stateOutput = 0; GPU_WriteText(&Layer_4, 270, 220, "VGA", aColor); GPU_ConfigureOutput(MODE_VGA); } else { stateOutput = 1; GPU_WriteText(&Layer_4, 270, 220, "LCD", aColor); GPU_ConfigureOutput(MODE_LCD); } while(!is_button_pressed(USER)); } os_dly_wait(30); } // Start the task selected switch (stateArrow) { case 0: { os_tsk_create (taskUnicorn, 10); break; } case 1: { os_tsk_create (taskSOR, 10); break; } case 2: { os_tsk_create (taskZelda, 10); break; } case 3: { os_tsk_create (taskDemo, 10); break; } case 4: { os_tsk_create (taskCredit, 10); break; } } // Destroy the task os_tsk_delete_self (); while (1){}; }
void create_LED_Control_Task(void){ //---------------------------------------------------------------- t_LED_TOGGLE = os_tsk_create (LED_TOGGLE, 0); //---------------------------------------------------------------- }
bool diag_start(void){ if(diag_task_id == 0) diag_task_id = os_tsk_create(timer_1s_task, PRIORITY_DIAG); return diag_task_id != 0; }
/*---------------------------------------------------------------------------- * Task Producer: RTX Kernel starts this task with os_sys_init (producer_task) *---------------------------------------------------------------------------*/ __task void producer_task (void) { OS_TID producer_tskid; /* assigned identification for producer */ T_NUM *random_num_tx; //Get Time A //time_a = os_time_get(); //Get current task ID producer_tskid = os_tsk_self (); // fork the child process os_tsk_create (consumer_task, 0); /* start task 2 */ os_mut_wait(procon, 0xFFFF); if(cur_producer == 0) { os_mbx_init (MsgBox, sizeof(MsgBox));/* initialize the mailbox */ os_mut_wait(g_mut_uart, 0xFFFF); printf("[producer_task [pid:(%d)] ]: Mailbox Created\n", producer_tskid); os_mut_release(g_mut_uart); cur_producer = 1; } os_mut_release(procon); //Get Time B //time_b = os_time_get() ; // Check if the number is the required one // .. And also make sure that we still have to send numbers. while (msg_counter_send < N && ( (msg_counter_send % P) == producer_tskid ) ) { random_num_tx = _alloc_box(mpool); /* Allocate a memory for the message */ if( random_num_tx == NULL ) { os_mut_wait(g_mut_uart, 0xFFFF); printf("_alloc_box failed because of no mem available!\n"); os_mut_release(g_mut_uart); exit(1); } random_num_tx->number = (U32) ( msg_counter_send ); os_mbx_send (MsgBox, random_num_tx, 0xffff); /* Send the message to the mailbox */ os_mut_wait(g_mut_uart, 0xFFFF); printf("[producer_task [pid:(%d)] ]: Sent %u\n", producer_tskid, random_num_tx->number); msg_counter_send++; os_mut_release(g_mut_uart); // os_dly_wait (100); } //msg_counter_send = 0; os_tsk_delete_self (); /* We are done here, delete this task */ }
void GUI_X_Init(void) { os_tsk_create(SysTick_Task, 1); }
__task void power (void) { unsigned int count =0; unsigned int temp; static GPIO_InitTypeDef GPIO_InitStruct; GPIO_PinState bitstatus; while(1) { GPIO_InitStruct.Pin = GPIO_PIN_2; GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Pull = GPIO_PULLUP; GPIO_InitStruct.Speed = GPIO_SPEED_FAST; HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); bitstatus = HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_2); if(bitstatus==GPIO_PIN_RESET) { os_dly_wait (200); bitstatus = HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_2); if(bitstatus==GPIO_PIN_RESET) { if(HAL_RTCEx_BKUPRead(&RtcHandle, RTC_BKP_DR6)==0) { count =0; do{ bitstatus = HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_2); count++; if(count>5000000) { Time3Disable(); GUI_Clear(); HAL_GPIO_WritePin(GPIOE,GPIO_PIN_3,GPIO_PIN_SET); HAL_GPIO_WritePin(GPIOE,GPIO_PIN_2,GPIO_PIN_RESET); if(zhuantskid !=NULL) os_tsk_delete(zhuantskid); if(maintskid !=NULL) os_tsk_delete(maintskid); if(keytskid !=NULL) os_tsk_delete(keytskid); if(servertskid !=NULL) os_tsk_delete(servertskid); if(meuntskid !=NULL) os_tsk_delete(meuntskid); if(setsystemtimetskid !=NULL) os_tsk_delete(setsystemtimetskid); if(setledlighttskid !=NULL) os_tsk_delete(setledlighttskid); if(setledtimetskid !=NULL) os_tsk_delete(setledtimetskid); if(setsoundtskid !=NULL) os_tsk_delete(setsoundtskid); if(setworkmodetskid !=NULL) os_tsk_delete(setworkmodetskid); if(yushentskid !=NULL) os_tsk_delete(yushentskid); HAL_RTCEx_BKUPWrite(&RtcHandle,RTC_BKP_DR6,1); // 说明是正常关机状态; HAL_GPIO_WritePin(GPIOG,GPIO_PIN_3,GPIO_PIN_RESET); HAL_GPIO_WritePin(GPIOG,GPIO_PIN_2,GPIO_PIN_SET); } }while(bitstatus==GPIO_PIN_RESET); }else { os_mut_init(mut_GLCD); os_mut_init(mut_Gclock); GUI_UC_SetEncodeUTF8(); zhuantskid = os_tsk_create (zhuan1, 0); maintskid = os_tsk_create (Main_Task, 0); keytskid = os_tsk_create (phase_KEY, 0); servertskid = os_tsk_create (Server_Task, 0); Time3Enable(HAL_RTCEx_BKUPRead(&RtcHandle, RTC_BKP_DR1)); HAL_GPIO_WritePin(GPIOE,GPIO_PIN_3,GPIO_PIN_RESET); HAL_GPIO_WritePin(GPIOE,GPIO_PIN_2,GPIO_PIN_SET); HAL_RTCEx_BKUPWrite(&RtcHandle,RTC_BKP_DR6,0); // 清楚掉关机状态 } } } } }
__task void phase_KEY (void) { static GPIO_InitTypeDef GPIO_InitStruct; GPIO_PinState bitstatus; __GPIOF_CLK_ENABLE(); __GPIOA_CLK_ENABLE(); while(1) { // 1 TOUCH GPIO_InitStruct.Pin = GPIO_PIN_6; GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Pull = GPIO_PULLUP; GPIO_InitStruct.Speed = GPIO_SPEED_FAST; HAL_GPIO_Init(GPIOF, &GPIO_InitStruct); bitstatus = HAL_GPIO_ReadPin(GPIOF,GPIO_PIN_6); if(bitstatus==GPIO_PIN_RESET) { os_dly_wait (2); bitstatus = HAL_GPIO_ReadPin(GPIOF,GPIO_PIN_6); if(bitstatus==GPIO_PIN_RESET) { do{ bitstatus = HAL_GPIO_ReadPin(GPIOF,GPIO_PIN_6); }while(bitstatus==GPIO_PIN_RESET); GUI_StoreKeyMsg(GUI_KEY_ENTER, 1); os_tsk_create (KEY_Sound,0); LEDCURRENTTIME =0; // 清除掉关闭背光标识 Time3Enable(HAL_RTCEx_BKUPRead(&RtcHandle, RTC_BKP_DR1)); } } // 2 TOUCH GPIO_InitStruct.Pin = GPIO_PIN_8; GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Pull = GPIO_PULLUP; GPIO_InitStruct.Speed = GPIO_SPEED_FAST; HAL_GPIO_Init(GPIOF, &GPIO_InitStruct); bitstatus = HAL_GPIO_ReadPin(GPIOF,GPIO_PIN_8); if(bitstatus==GPIO_PIN_RESET) { os_dly_wait (2); bitstatus = HAL_GPIO_ReadPin(GPIOF,GPIO_PIN_8); if(bitstatus==GPIO_PIN_RESET) { do{ bitstatus = HAL_GPIO_ReadPin(GPIOF,GPIO_PIN_8); }while(bitstatus==GPIO_PIN_RESET); GUI_StoreKeyMsg(GUI_KEY_DOWN, 1); os_tsk_create (KEY_Sound,0); LEDCURRENTTIME =0; // 清除掉关闭背光标识 Time3Enable(HAL_RTCEx_BKUPRead(&RtcHandle, RTC_BKP_DR1)); } } // 3 TOUCH GPIO_InitStruct.Pin = GPIO_PIN_0; GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Pull = GPIO_PULLUP; GPIO_InitStruct.Speed = GPIO_SPEED_FAST; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); bitstatus = HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0); if(bitstatus==GPIO_PIN_RESET) { os_dly_wait (2); bitstatus = HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0); if(bitstatus==GPIO_PIN_RESET) { do{ bitstatus = HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0); }while(bitstatus==GPIO_PIN_RESET); GUI_StoreKeyMsg(GUI_KEY_UP, 1); os_tsk_create (KEY_Sound,0); LEDCURRENTTIME =0; // 清除掉关闭背光标识 Time3Enable(HAL_RTCEx_BKUPRead(&RtcHandle, RTC_BKP_DR1)); } } // 4 TOUCH GPIO_InitStruct.Pin = GPIO_PIN_2; GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Pull = GPIO_PULLUP; GPIO_InitStruct.Speed = GPIO_SPEED_FAST; HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); bitstatus = HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_2); if(bitstatus==GPIO_PIN_RESET) { os_dly_wait (2); bitstatus = HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_2); if(bitstatus==GPIO_PIN_RESET) { do{ bitstatus = HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_2); }while(bitstatus==GPIO_PIN_RESET); GUI_StoreKeyMsg(GUI_KEY_ESCAPE, 1); os_tsk_create (KEY_Sound,0); LEDCURRENTTIME =0; // 清除掉关闭背光标识 Time3Enable(HAL_RTCEx_BKUPRead(&RtcHandle, RTC_BKP_DR1)); } } os_tsk_pass(); } }