Status OS_TimeInit(void) { Status s = S_OK; os_time_mutex = OS_MutexCreate(); if (OS_NULL == os_time_mutex) { return S_INVALID_PTR; } return s; }
Status OS_StorageItemCreate(const void* data_p, const U16 size, OS_StorageItem** item_pp) { if (OS_NULL == item_pp) { return S_INVALID_PTR; } OS_StorageItem* item_p = OS_Malloc(sizeof(OS_StorageItem)); if (OS_NULL == item_p) { return S_OUT_OF_MEMORY; } item_p->mutex = OS_MutexCreate(); if (OS_NULL == item_p->mutex) { return S_INVALID_PTR; } *item_pp = item_p; item_p->data_p = (void*)data_p; item_p->size = size; item_p->owners = 1; return S_OK; }
int ff_cre_syncobj ( /* 1:Function succeeded, 0:Could not create the sync object */ BYTE vol, /* Corresponding volume (logical drive number) */ _SYNC_t *sobj /* Pointer to return the created sync object */ ) { #ifdef FF_USE_STATIC_MUTEX if (!ff_mutex_init) { ff_mutex_init = 1; if (OS_MutexCreate(&ff_mutex) != OS_OK) { return 0; } } return 1; #else int ret = 1; // *sobj = CreateMutex(NULL, FALSE, NULL); /* Win32 */ // ret = (int)(*sobj != INVALID_HANDLE_VALUE); // *sobj = SyncObjects[vol]; /* uITRON (give a static sync object) */ // ret = 1; /* The initial value of the semaphore must be 1. */ // *sobj = OSMutexCreate(0, &err); /* uC/OS-II */ // ret = (int)(err == OS_NO_ERR); // *sobj = xSemaphoreCreateMutex(); /* FreeRTOS */ // ret = (int)(*sobj != NULL); *sobj = malloc(sizeof(**sobj)); memset(*sobj, 0, sizeof(**sobj)); if (OS_MutexCreate(*sobj) != OS_OK) ret = 0; return ret; #endif }
HAL_Status SSD1306_SPI_Init(SSD1306_t *SSD1306config) { SPI_Global_Config gconfig; gconfig.cs_level = 0; gconfig.mclk = SSD1306config->SSD1306_SPI_MCLK; HAL_Status sta = HAL_SPI_Init(SSD1306config->SSD1306_SPI_ID, &gconfig); if (sta != HAL_OK) COMPONENT_WARN("spi init error %d\n", sta); if(OS_MutexCreate(&SSD1306_SPI_WR_LOCK) != OS_OK) COMPONENT_WARN("OS_MutexCreate error\n"); SPI_Config spi_Config; spi_Config.firstBit = SPI_TCTRL_FBS_MSB; spi_Config.mode = SPI_CTRL_MODE_MASTER; spi_Config.opMode = SPI_OPERATION_MODE_POLL; spi_Config.sclk = SSD1306config->SSD1306_SPI_MCLK; spi_Config.sclkMode = SPI_SCLK_Mode0; sta = HAL_SPI_Open(SSD1306config->SSD1306_SPI_ID, SSD1306config->SSD1306_SPI_CS, &spi_Config, 1); SSD1306_SPI_ID = SSD1306config->SSD1306_SPI_ID; if (sta != HAL_OK) COMPONENT_WARN("spi open error error %d\n", sta); GPIO_InitParam io_Param; io_Param.driving = GPIO_DRIVING_LEVEL_3; io_Param.mode = GPIOx_Pn_F1_OUTPUT; io_Param.pull = GPIO_PULL_NONE; HAL_GPIO_Init(SSD1306config->SSD1306_dsPort, SSD1306config->SSD1306_dsPin, &io_Param); SSD1306_dsPort = SSD1306config->SSD1306_dsPort; SSD1306_dsPin = SSD1306config->SSD1306_dsPin; SSD1306config->SSD1306_Write = SSD1306_SPI_Write; sta = HAL_SPI_CS(SSD1306_SPI_ID, 1); if (sta != HAL_OK) COMPONENT_WARN("spi cs init error %d\n", sta); COMPONENT_TRACK("end\n"); return sta; }
static enum cmd_status cmd_mqtt_init_exec(char *cmd) { int32_t cnt; uint32_t buf_size; uint32_t alive_interval; uint32_t clean; char *tmp; /* get param */ cnt = cmd_sscanf(cmd, "bufsize=%u alive=%u clean=%u", &buf_size, &alive_interval, &clean); /* check param */ if (cnt != 3) { CMD_ERR("invalid param number %d\n", cnt); return CMD_STATUS_INVALID_ARG; } if (clean > 1) { CMD_ERR("invalid clean %d\n", clean); return CMD_STATUS_INVALID_ARG; } if (OS_MutexCreate(&lock) != OS_OK) return CMD_STATUS_FAIL;; if ((tmp = cmd_strrchr(cmd, '\"')) == NULL) return CMD_STATUS_INVALID_ARG; *tmp = '\0'; if ((tmp = cmd_strchr(cmd, '\"')) == NULL) return CMD_STATUS_INVALID_ARG; tmp++; client_name = cmd_malloc(cmd_strlen(tmp) + 1); cmd_memcpy(client_name, tmp, cmd_strlen(tmp) + 1); CMD_DBG("client name = %s\n", client_name); connectData.clientID.cstring = client_name; connectData.keepAliveInterval = alive_interval; connectData.cleansession = clean; send_buf = cmd_malloc(buf_size); if (send_buf == NULL) { CMD_ERR("no memory\n"); OS_MutexDelete(&lock); return CMD_STATUS_FAIL; } recv_buf = cmd_malloc(buf_size); if (recv_buf == NULL) { cmd_free(send_buf); CMD_ERR("no memory\n"); OS_MutexDelete(&lock); return CMD_STATUS_FAIL; } NewNetwork(&network); MQTTClient(&client, &network, 6000, send_buf, buf_size, recv_buf, buf_size); return CMD_STATUS_OK; }
void QSYS_Init(void) { u8 *ptr1; u8 *ptr2; // FIL *ptr3; OS_CPU_SysTickInit();//Initialize the SysTick. #if OS_USE_UCOS CPU_IntSrcPrioSet(CPU_INT_PENDSV,15); CPU_IntSrcPrioSet(CPU_INT_SYSTICK,15); #endif SetupHardware(); Debug("sizeof(INPUT_EVENT)=%d\n\r",sizeof(INPUT_EVENT));//for debug by karlno Debug("sizeof(PAGE_ATTRIBUTE)=%d\n\r",sizeof(PAGE_ATTRIBUTE));//for debug by karlno Debug("sizeof(IMG_BUTTON_OBJ)=%d\n\r",sizeof(IMG_BUTTON_OBJ));//for debug by karlno Debug("sizeof(CHAR_BUTTON_OBJ)=%d\n\r",sizeof(CHAR_BUTTON_OBJ));//for debug by karlno Debug("sizeof(MUSIC_EVENT)=%d\n\r",sizeof(MUSIC_EVENT));//for debug by karlno //Debug("sizeof(QSYS_MSG_BOX)=%d\n\r",sizeof(QSYS_MSG_BOX));//for debug by karlno if(SysEvt_MaxNum>32) { Debug("Error:SysEvt_MaxNum(%d) is too big!!!\n\r",SysEvt_MaxNum); Q_ErrorStopScreen("Error:SysEvt_MaxNum is too big!!!\n\r"); } gLCD_Mutex=OS_MutexCreate(); //创建触摸输入中断发生信号量 gTouchHandler_Sem=OS_SemaphoreCreate(0); gAllowTchHandler_Sem=OS_SemaphoreCreate(0); gVsDreq_Sem=OS_SemaphoreCreate(0); gRfRecvHandler_Sem=OS_SemaphoreCreate(0); //创建事件传递数据 gInputHandler_Queue=OS_MsgBoxCreate("Input Event",sizeof(INPUT_EVENT),16); gMusicHandler_Queue=OS_MsgBoxCreate("MusicKV Event",sizeof(MUSIC_EVENT),8); #if 0//debug OS_TaskCreate((void (*) (void *)) T1_Task,(void *) 0, (OS_STK *) &T1_TaskStack[OS_MINIMAL_STACK_SIZE - 1],T1_TASK_pRIORITY); //OS_TaskCreate(T2_Task , ( signed OS_CHAR * ) "T2 Handler", OS_MINI_STACK_SIZE, NULL, MUSIC_HANDLER_TASK_PRIORITY, NULL ); OS_TaskDelete(SYSTEM_TASK_PRIORITY); #endif #if 1 //首次下载完成后可关闭此处代码,防止误下载 Debug("\n\r-------------------SPI FLASH DOWNLOAD FROM SD------------------\n\r"); ptr1=(u8 *)Q_Mallco(CfgFileSize); ptr2=(u8 *)Q_Mallco(SPI_FLASH_PAGE_SIZE); SpiFlashDownFromSD(FALSE,"System/Down.cfg",ptr1,ptr2); Q_Free(ptr2); Q_Free(ptr1); Debug("-------------------SPI FLASH DOWNLOAD FROM SD------------------\n\r\n\r"); #endif Debug("----------------DATABASE SETTING INITIALIZATION----------------\n\r"); DB_Init(); Debug("----------------DATABASE SETTING INITIALIZATION----------------\n\r\n\r"); RTC_SetUp(); Gui_Init(); //图像库初始化 Gui_SetBgLight(Q_DB_GetValue(Setting_BgLightScale,NULL));//设置背光亮度 OS_TaskCreate(MusicHandler_Task,"Music",OS_MINIMAL_STACK_SIZE*8,NULL,MUSIC_TASK_PRIORITY,&MusicHandler_Task_Handle); OS_TaskCreate(TouchHandler_Task,"Touch",OS_MINIMAL_STACK_SIZE*3,NULL,TOUCH_TASK_PRIORITY,&TouchHandler_Task_Handle); OS_TaskCreate(KeysHandler_Task,"Keys",OS_MINIMAL_STACK_SIZE*2,NULL,KEYS_TASK_PRIORITY,&KeysHandler_Task_Handle); OS_TaskCreate(QWebHandler_Task,"QWeb",OS_MINIMAL_STACK_SIZE*8,NULL,RF_DATA_TASK_PRIORITY,&QWebHandler_Task_Handle); OS_TaskDelay(100); OS_TaskStkCheck(FALSE); if(GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_2)==0) //如果没按下Key-PE2,就正常启动串口中断 { #if !QXW_RELEASE_VER//for debug USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);//release版本请关掉此句,免得不懂的用户说板卡老死机。 USART_ITConfig(USART3, USART_IT_RXNE, ENABLE); #endif } }