#include "cmsis_os2.h" #include "FreeRTOS.h" #include "task.h" #include "semphr.h" #include "HIDO_Input.h" #include "HIDO_Timer.h" #include "GPS.h" #include "DBG.h" #include "Internet.h" #include "global_param.h" #include "MCUFlash.h" #include "HIDO_ATLite.h" #include "UDPClient.h" #include "bluetooth.h" static osSemaphoreId_t g_semaphoreHandle = NULL; extern uint8_t restart_num; void IdleTask(void) { if(g_com_map[CNT_RESTART]==1) { g_com_map[CNT_RESTART]=0; // printf("%s URTRestart",__debug_info__); HAL_NVIC_SystemReset(); } if(g_com_map[MAP_SIGN_INDEX]!=0x55AA) { // printf("%s URTRestart",__debug_info__); HAL_NVIC_SystemReset(); // SCB->AIRCR = 0X05FA0000|(unsigned int)0x04; //Èí¸´Î»»Øµ½bootloader } } void app_task(void *pvParameters) { g_com_map[IP_0] =103; g_com_map[IP_1] =155; g_com_map[IP_2] =76; g_com_map[IP_3] =198; g_com_map[UDP_PORT] =6666; Shell_Init(); GPS_Init(); Internet_Init(); UDPClient_Init(); while (1) { //HIDO_UINT32 timeout = HIDO_TimerGetNearestTimeout(1000); HIDO_UINT32 timeout = 100; if (xSemaphoreTake(g_semaphoreHandle, timeout / portTICK_PERIOD_MS) == pdTRUE) { } DBG_Poll(); BT_Poll(); HIDO_ATLitePoll(); Internet_Poll(); GPS_Poll(); UDPClient_Poll(); IdleTask(); HIDO_TimerPoll(); } } void app_trigger_from_isr(void) { BaseType_t xHigherPriorityTaskWoken = pdFALSE; if (g_semaphoreHandle != NULL) { BaseType_t result = xSemaphoreGiveFromISR(g_semaphoreHandle, &xHigherPriorityTaskWoken); if (xHigherPriorityTaskWoken == pdTRUE) { portYIELD_FROM_ISR(xHigherPriorityTaskWoken); } } } void app_trigger(void) { if (g_semaphoreHandle != NULL) { xSemaphoreGive(g_semaphoreHandle); } } void app_main(void) { MCUFlash_Init(); parameter_init(); printf("demo run!\r\n"); TaskHandle_t xTaskHandle = NULL; osSemaphoreAttr_t semaphore_attr = { .name = "MySemaphore", .attr_bits = 0, .cb_mem = NULL, .cb_size = 0}; // ´´½¨¶þ½øÖÆÐźÅÁ¿£¨³õʼ¼ÆÊýΪ0£¬×î´ó¼ÆÊýΪ1£© g_semaphoreHandle = osSemaphoreNew(1, 0, &semaphore_attr); xTaskCreate( app_task, "AppTask", 2048, NULL, tskIDLE_PRIORITY + 1, &xTaskHandle); }