这篇教程C++ vSemaphoreCreateBinary函数代码示例写得很实用,希望能帮到您。
本文整理汇总了C++中vSemaphoreCreateBinary函数的典型用法代码示例。如果您正苦于以下问题:C++ vSemaphoreCreateBinary函数的具体用法?C++ vSemaphoreCreateBinary怎么用?C++ vSemaphoreCreateBinary使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。 在下文中一共展示了vSemaphoreCreateBinary函数的29个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。 示例1: low_level_outputstatic err_t low_level_output(struct netif *netif, struct pbuf *p){ static xSemaphoreHandle xTxSemaphore = NULL; struct pbuf *q; u32_t l = 0; if( xTxSemaphore == NULL ) { vSemaphoreCreateBinary( xTxSemaphore ); }#if ETH_PAD_SIZE pbuf_header(p, -ETH_PAD_SIZE); /* drop the padding word */#endif /* Access to the EMAC is guarded using a semaphore. */ if( xSemaphoreTake( xTxSemaphore, netifGUARD_BLOCK_TIME ) ) { for(q = p; q != NULL; q = q->next) { /* Send the data from the pbuf to the interface, one pbuf at a time. The size of the data in each pbuf is kept in the ->len variable. */ memcpy(&TxBuff[l], (u8_t*)q->payload, q->len); l += q->len; } ENET_TxPkt(0, l); #if ETH_PAD_SIZE pbuf_header(p, ETH_PAD_SIZE); /* reclaim the padding word */ #endif #if LINK_STATS lwip_stats.link.xmit++; #endif /* LINK_STATS */ xSemaphoreGive( xTxSemaphore ); } return ERR_OK;}
开发者ID:Dzenik,项目名称:FreeRTOS_TEST,代码行数:43,
示例2: STBT_Initvoid STBT_Init(COM_TypeDef SerialCOM){ USART_InitTypeDef USART_InitStruct; BT_State=Active_Command_mode; BTCOM=SerialCOM; USART_InitStruct.USART_BaudRate=115200; USART_InitStruct.USART_HardwareFlowControl=USART_HardwareFlowControl_None; USART_InitStruct.USART_Mode=USART_Mode_Rx|USART_Mode_Tx; USART_InitStruct.USART_Parity=USART_Parity_No; USART_InitStruct.USART_StopBits=USART_StopBits_1; USART_InitStruct.USART_WordLength=USART_WordLength_8b; CU_COMInit(SerialCOM,&USART_InitStruct); vSemaphoreCreateBinary(BT_UART_sem); BT_UART_RX_Queue = xQueueCreate( 100, sizeof( uint8_t ) ); xTaskCreate(STBT_Task, "BlueTooth", 5*configMINIMAL_STACK_SIZE, NULL, 9, NULL);}
开发者ID:yerpj,项目名称:F3000,代码行数:19,
示例3: PIOS_mallocstruct pios_semaphore *PIOS_Semaphore_Create(void){ struct pios_semaphore *sema = PIOS_malloc(sizeof(struct pios_semaphore)); if (sema == NULL) return NULL; /* * The initial state of a binary semaphore is "given". * FreeRTOS executes a "give" upon creation. */#if defined(PIOS_INCLUDE_FREERTOS) vSemaphoreCreateBinary(sema->sema_handle);#else sema->sema_count = 1;#endif return sema;}
开发者ID:1heinz,项目名称:TauLabs,代码行数:19,
示例4: mainint main( void ){ /* Setup the peripheral bus to be the same as the PLL output. */ VPBDIV = mainBUS_CLK_FULL; /* Create the queue used to pass message to vPrintTask. */ xPrintQueue = xQueueCreate( mainQUEUE_SIZE, sizeof( char * ) ); /* Create the semaphore used to wake vButtonHandlerTask(). */ vSemaphoreCreateBinary( xButtonSemaphore ); xSemaphoreTake( xButtonSemaphore, 0 ); /* Start the standard demo tasks. */ vStartIntegerMathTasks( tskIDLE_PRIORITY ); vStartPolledQueueTasks( mainQUEUE_POLL_PRIORITY ); vStartSemaphoreTasks( mainSEM_TEST_PRIORITY ); vStartDynamicPriorityTasks(); vStartBlockingQueueTasks( mainBLOCK_Q_PRIORITY ); #if configUSE_PREEMPTION == 1 { /* The timing of console output when not using the preemptive scheduler causes the block time tests to detect a timing problem. */ vCreateBlockTimeTasks(); } #endif vStartRecursiveMutexTasks(); /* Start the tasks defined within this file. */ xTaskCreate( vLEDTask, "LED", configMINIMAL_STACK_SIZE, NULL, mainLED_TASK_PRIORITY, NULL ); xTaskCreate( vCheckTask, "Check", configMINIMAL_STACK_SIZE, NULL, mainCHECK_TASK_PRIORITY, NULL ); xTaskCreate( vPrintTask, "Print", configMINIMAL_STACK_SIZE, NULL, mainPRINT_TASK_PRIORITY, NULL ); xTaskCreate( vButtonHandlerTask, "Button", configMINIMAL_STACK_SIZE, NULL, mainCHECK_TASK_PRIORITY, NULL ); /* Start the scheduler. */ vTaskStartScheduler(); /* The scheduler should now be running, so we will only ever reach here if we ran out of heap space. */ return 0;}
开发者ID:HclX,项目名称:freertos,代码行数:43,
示例5: mainint main(void){ //Start the HW initHardware(); ciaaWriteOutput(3,0); // Create a semaphore vSemaphoreCreateBinary(xSemaphore); xSemaphoreTake(xSemaphore,0); //Create task to read the button xTaskCreate(taskReadButton, (const char *)"taskReadButton", configMINIMAL_STACK_SIZE*2, 0, tskIDLE_PRIORITY+1, 0); //Create task to blick the led xTaskCreate(taskBlickLed, (const char *)"taskReadButton", configMINIMAL_STACK_SIZE*2, 0, tskIDLE_PRIORITY+1, 0); //Start the Scheduler vTaskStartScheduler(); while (1) { }}
开发者ID:mdarino,项目名称:LSE_SistOper1,代码行数:20,
示例6: SHT10Initvoid SHT10Init(void) { GPIO_InitTypeDef GPIO_InitStructure; if (__semaphore != NULL) { return; } vSemaphoreCreateBinary(__semaphore); GPIO_InitStructure.GPIO_Pin = CLK_GPIO_PIN; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD; GPIO_Init(CLK_GPIO_PORT, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = DAT_GPIO_PIN; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD; GPIO_Init(DAT_GPIO_PORT, &GPIO_InitStructure); __clkSetLow(); __clkDataLow();}
开发者ID:masuchen,项目名称:stm32_led,代码行数:20,
示例7: mainint main(){ init_rs232(); enable_rs232_interrupts(); enable_rs232(); fs_init(); fio_init(); //register_fs(&ramfs_r); register_devfs(); register_ramfs(); fs_mount(NULL, RAMFS_TYPE, NULL);// register_romfs("romfs", &_sromfs);// register_ramfs("ramfs"); /* Create the queue used by the serial task. Messages for write to * the RS232. */ vSemaphoreCreateBinary(serial_tx_wait_sem); /* Add for serial input * Reference: www.freertos.org/a00116.html */ serial_rx_queue = xQueueCreate(1, sizeof(char)); /* Create a task to output text read from romfs. */ xTaskCreate(command_prompt, "CLI", 512 /* stack size */, NULL, tskIDLE_PRIORITY + 2, NULL);#if 0 /* Create a task to record system log. */ xTaskCreate(system_logger, (signed portCHAR *) "Logger", 1024 /* stack size */, NULL, tskIDLE_PRIORITY + 1, NULL);#endif /* Start running the tasks. */ vTaskStartScheduler(); return 0;}
开发者ID:sonicyang,项目名称:freertos-stm32,代码行数:41,
示例8: xNetworkInterfaceInitialiseportBASE_TYPE xNetworkInterfaceInitialise( void ){EMAC_CFG_Type Emac_Config;PINSEL_CFG_Type xPinConfig;portBASE_TYPE xStatus, xReturn;extern uint8_t ucMACAddress[ 6 ]; /* Enable Ethernet Pins */ boardCONFIGURE_ENET_PINS( xPinConfig ); Emac_Config.Mode = EMAC_MODE_AUTO; Emac_Config.pbEMAC_Addr = ucMACAddress; xStatus = EMAC_Init( &Emac_Config ); LPC_EMAC->IntEnable &= ~( EMAC_INT_TX_DONE ); if( xStatus != ERROR ) { vSemaphoreCreateBinary( xEMACRxEventSemaphore ); configASSERT( xEMACRxEventSemaphore ); /* The handler task is created at the highest possible priority to ensure the interrupt handler can return directly to it. */ xTaskCreate( prvEMACHandlerTask, ( const signed char * const ) "EMAC", configMINIMAL_STACK_SIZE, NULL, configMAX_PRIORITIES - 1, NULL ); /* Enable the interrupt and set its priority to the minimum interrupt priority. */ NVIC_SetPriority( ENET_IRQn, configMAC_INTERRUPT_PRIORITY ); NVIC_EnableIRQ( ENET_IRQn ); xReturn = pdPASS; } else { xReturn = pdFAIL; } configASSERT( xStatus != ERROR ); return xReturn;}
开发者ID:afconsult-south,项目名称:dragonfly-fcb,代码行数:41,
示例9: low_level_initstatic void low_level_init( struct netif *pnetif ){ // set MAC hardware address length pnetif->hwaddr_len = ETHARP_HWADDR_LEN; // set MAC hardware address //MACStrToBin( DEFAULT_MAC_ADDR, pnetif->hwaddr ); pnetif->hwaddr[ 0 ] = 0x00; pnetif->hwaddr[ 1 ] = 0x04; pnetif->hwaddr[ 2 ] = 0xa3; pnetif->hwaddr[ 3 ] = 0x00; pnetif->hwaddr[ 4 ] = 0x00; pnetif->hwaddr[ 5 ] = 0x02; // maximum transfer unit pnetif->mtu = netifMTU; // device capabilities. // don't set NETIF_FLAG_ETHARP if this device is not an ethernet one pnetif->flags |= NETIF_FLAG_BROADCAST | NETIF_FLAG_ETHARP; // Do whatever else is needed to initialize interface. if ( s_xSemaphore == NULL ) { vSemaphoreCreateBinary( s_xSemaphore ); xSemaphoreTake( s_xSemaphore, 0); } // Initialise the MAC. enc28j60_MACInit( pnetif ); pnetif->flags |= NETIF_FLAG_LINK_UP; // Create the task that handles the EMAC. sys_thread_new( ( signed portCHAR *)"eth", ethernetif_input, (void *)pnetif, netifINTERFACE_TASK_STACK_SIZE, netifINTERFACE_TASK_PRIORITY );}
开发者ID:grodansparadis,项目名称:sweetbox,代码行数:41,
示例10: setup_debug_port_peri//---------------------------------------------------------------------------------------------static void setup_debug_port_peri(void){ USART_InitTypeDef USART_InitStructure; GPIO_InitTypeDef GPIO_InitStructure; txchars_queue = xQueueCreate(100, sizeof(signed char)); vSemaphoreCreateBinary(xRxCompleteSemaphore); xSemaphoreTake(xRxCompleteSemaphore, 0); /* Enable USART1 clock */ RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA, ENABLE); /* Configure USART1 Rx (PA10) as input floating */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOA, &GPIO_InitStructure); /* Configure USART1 Tx (PA9) as alternate function push-pull */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_Init(GPIOA, &GPIO_InitStructure); USART_InitStructure.USART_BaudRate = 115200; USART_InitStructure.USART_WordLength = USART_WordLength_8b; USART_InitStructure.USART_StopBits = USART_StopBits_1; USART_InitStructure.USART_Parity = USART_Parity_No; USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; USART_ITConfig(USART1, USART_IT_RXNE, ENABLE); USART_ITConfig(USART1, USART_IT_TXE, DISABLE); /* Configure the USARTx */ USART_Init(USART1, &USART_InitStructure); NVIC_EnableIRQ(USART1_IRQn); /* Enable the USARTx */ USART_Cmd(USART1, ENABLE);}
开发者ID:yangk,项目名称:FreeRTOS_BOARD_DEMO,代码行数:42,
示例11: UAVTalkInitialize/** * Initialize the UAVTalk library * /param[in] connection UAVTalkConnection to be used * /param[in] outputStream Function pointer that is called to send a data buffer * /return 0 Success * /return -1 Failure */UAVTalkConnection UAVTalkInitialize(UAVTalkOutputStream outputStream){ // allocate object UAVTalkConnectionData * connection = pvPortMalloc(sizeof(UAVTalkConnectionData)); if (!connection) return 0; connection->canari = UAVTALK_CANARI; connection->iproc.rxPacketLength = 0; connection->iproc.state = UAVTALK_STATE_SYNC; connection->outStream = outputStream; connection->lock = xSemaphoreCreateRecursiveMutex(); connection->transLock = xSemaphoreCreateRecursiveMutex(); // allocate buffers connection->rxBuffer = pvPortMalloc(UAVTALK_MAX_PACKET_LENGTH); if (!connection->rxBuffer) return 0; connection->txBuffer = pvPortMalloc(UAVTALK_MAX_PACKET_LENGTH); if (!connection->txBuffer) return 0; vSemaphoreCreateBinary(connection->respSema); xSemaphoreTake(connection->respSema, 0); // reset to zero UAVTalkResetStats( (UAVTalkConnection) connection ); return (UAVTalkConnection) connection;}
开发者ID:01iv3r,项目名称:OpenPilot,代码行数:28,
示例12: sv_initint sv_init(uint32_t initial_timeout) { /* Init list semaphore */ vSemaphoreCreateBinary(sv_sem); if (sv_sem == NULL) { printf("Failed to create supervisor semaphore/r/n"); return -1; } /* Set maximum timeout */ interval = initial_timeout; /* Start task */ if (xTaskCreate(&sv_task, (signed char *)"SV", 1024, NULL, configMAX_PRIORITIES - 1, NULL) != pdPASS) { printf("Failed to create supervisor task/r/n"); return -1; } return 0;}
开发者ID:lirihe,项目名称:arm,代码行数:21,
示例13: prvSetupEMACInterruptstatic void prvSetupEMACInterrupt( void ){ /* Create the semaphore used to trigger the EMAC task. */ vSemaphoreCreateBinary( xSemaphore ); if( xSemaphore ) { /* We start by 'taking' the semaphore so the ISR can 'give' it when the first interrupt occurs. */ xSemaphoreTake( xSemaphore, emacNO_DELAY ); portENTER_CRITICAL(); { /* We want to interrupt on Rx and Tx events. */ AT91C_BASE_EMAC->EMAC_IER = AT91C_EMAC_RCOMP | AT91C_EMAC_TCOMP; /* Enable the interrupts in the AIC. */ AT91F_AIC_ConfigureIt( AT91C_ID_EMAC, emacINTERRUPT_LEVEL, AT91C_AIC_SRCTYPE_INT_HIGH_LEVEL, ( void (*)( void ) ) vEMACISR_Wrapper ); AT91C_BASE_AIC->AIC_IECR = 0x1 << AT91C_ID_EMAC; } portEXIT_CRITICAL(); }}
开发者ID:InSoonPark,项目名称:FreeRTOS,代码行数:21,
示例14: setup_uart//---------------------------------------------------------------------------------------------static void setup_uart(struct UartPort *port){ port->cache_tx.queue = xQueueCreate(port->cache_tx.queue_length, sizeof(uint8_t)); port->cache_rx.queue = xQueueCreate(port->cache_rx.queue_length, sizeof(uint8_t)); vSemaphoreCreateBinary(port->sem); xSemaphoreTake(port->sem, 0); RCC_APB1PeriphClockCmd(port->peri->periph, ENABLE); setup_uart_port(&port->peri->tx, &port->peri->rx); setup_uart_setting(port->peri, port->setting); /* Enable USART2 Receive and Transmit interrupts */ USART_ITConfig(port->peri->uart, USART_IT_RXNE, ENABLE); USART_ITConfig(port->peri->uart, USART_IT_TXE, DISABLE); NVIC_EnableIRQ(port->peri->irq); /* Enable the USARTx */ USART_Cmd(port->peri->uart, ENABLE);}
开发者ID:yangk,项目名称:FreeRTOS_BOARD_DEMO,代码行数:22,
示例15: vCDCCommandConsoleStartvoid vCDCCommandConsoleStart( uint16_t usStackSize, unsigned portBASE_TYPE uxPriority ){ /* Create the semaphores and mutexes used by the CDC to task interface. */ xCDCMutex = xSemaphoreCreateMutex(); vSemaphoreCreateBinary( xNewDataSemaphore ); configASSERT( xCDCMutex ); configASSERT( xNewDataSemaphore ); /* Add the semaphore and mutex to the queue registry for viewing in the kernel aware state viewer. */ vQueueAddToRegistry( xCDCMutex, "CDCMu" ); vQueueAddToRegistry( xNewDataSemaphore, "CDCDat" ); /* Create that task that handles the console itself. */ xTaskCreate( prvCDCCommandConsoleTask, /* The task that implements the command console. */ "CDCCmd", /* Text name assigned to the task. This is just to assist debugging. The kernel does not use this name itself. */ usStackSize, /* The size of the stack allocated to the task. */ NULL, /* The parameter is not used, so NULL is passed. */ uxPriority, /* The priority allocated to the task. */ NULL ); /* A handle is not required, so just pass NULL. */}
开发者ID:jbalcerz,项目名称:Stm32Discovery_FreeRTOS,代码行数:21,
示例16: init_threshold_controlvoid init_threshold_control(void){ xTaskHandle task; threshold_queue = xQueueCreate(1, sizeof(struct threshold)); if (threshold_queue == NULL) panic("xQueueCreate failed"); vSemaphoreCreateBinary(threshold_sem); if (threshold_sem == NULL) panic("vSemaphoreCreateBinary failed"); xTaskCreate(threshold_control_task, "threshold_control", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY+1, &task); // initialise ps2 (keyboard) device, register keyboard irq alt_up_ps2_dev *ps2_device = alt_up_ps2_open_dev(PS2_NAME); if (ps2_device == NULL) panic("unable to open ps2 device"); alt_up_ps2_clear_fifo (ps2_device); alt_irq_register(PS2_IRQ, ps2_device, do_keyboard_irq); // register the PS/2 interrupt IOWR_8DIRECT(PS2_BASE,4,1);}
开发者ID:cl91,项目名称:freq-relay,代码行数:21,
示例17: mainint main( void ){ LPC_IOCON->PIO0_7 = 0x30; // configure PIO0_7 as an input with hysteresis LPC_GPIO0->IS &= ~(1<<7); // edge trigger LPC_GPIO0->IBE &= ~(1<<7); // control based on IEV register LPC_GPIO0->IEV &= ~(1<<7); // falling edge LPC_GPIO0->IE |= (1<<7); // enable interrupt LPC_GPIO0->DIR |= (1<<6); /* Set up P0.7 as output */ LPC_GPIO0->DATA &= ~(1<<6); /* Turn off LED2 on LPCXpresso board */ init_lcd();//--------- Lab edit begin --------- vSemaphoreCreateBinary(ButtonSemaphore); /* Create one of the three tasks. */ xTaskCreate( vTaskLEDBlinker1, /* Pointer to the function that implements the task. */ (const signed portCHAR *)"Blinker 1", /* Text name for the task. This is to facilitate debugging only. */ configMINIMAL_STACK_SIZE, /* Stack depth in words. */ NULL, /* We are not using the task parameter. */ 3, /* This task will run at priority 3. */ NULL ); /* We are not using the task handle. */ /* Create the other tasks in exactly the same way. */ xTaskCreate( vTaskDebuggerHeartbeat, (const signed portCHAR *)"Heartbeat", configMINIMAL_STACK_SIZE, NULL, 3, NULL); xTaskCreate( vTaskLcdDisplay, (const signed portCHAR *)"Display", configMINIMAL_STACK_SIZE, NULL, 3, NULL); NVIC_SetPriority( EINT0_IRQn, 0); NVIC_EnableIRQ( EINT0_IRQn ); /* Start the scheduler so our tasks start executing. */ vTaskStartScheduler(); /* If all is well we will never reach here as the scheduler will now be running. If we do reach here then it is likely that there was insufficient heap available for the idle task to be created. */ for( ;; ); return 0;}
开发者ID:ande8331,项目名称:SEIS740_FinalProject,代码行数:40,
示例18: AT91F_TWI_Init//===============================================================================================//*----------------------------------------------------------------------------//* /fn AT91F_TWI_Open//* /brief Initializes TWI device//*----------------------------------------------------------------------------void AT91F_TWI_Init(void){ TWI_QUEUE = xQueueCreate( 1, sizeof( unsigned int ) ); TWI_NACK_Error = ErrorCreate("TWI Nack"); TWI_TMO_Error = ErrorCreate("TWI TimeOut"); TWI_SEM_Error = ErrorCreate("TWI Access"); TWI_WriteData_Error = ErrorCreate("TWI Write"); TWI_OVRE_Error = ErrorCreate("TWI OVRE"); vSemaphoreCreateBinary( TWI_Semaphore ); while( TWI_QUEUE == 0 ) ; // Queue was not created and must not be used. portENTER_CRITICAL(); { // Configure TWI in master mode AT91F_TWI_Configure (AT91C_BASE_TWI); // Configure TWI PIOs AT91F_PIO_CfgOutput(AT91C_BASE_PIOA, AT91C_PA1_TWCK ); AT91F_PIO_CfgOpendrain(AT91C_BASE_PIOA, // PIO controller base address ((unsigned int) AT91C_PA1_TWCK ) | ((unsigned int) AT91C_PA0_TWD ) ); AT91F_TWI_CfgPIO(); // Configure PMC by enabling TWI clock AT91F_TWI_CfgPMC (); // AT91F_PMC_EnablePeriphClock ( AT91C_BASE_PMC, 1<<AT91C_ID_TWI ) ; // Set TWI Clock Waveform Generator Register AT91F_SetTwiClock(); AT91F_AIC_ConfigureIt ( AT91C_BASE_AIC, AT91C_ID_TWI, TWI_INTERRUPT_LEVEL, AT91C_AIC_SRCTYPE_INT_LEVEL_SENSITIVE, ( void (*)( void ) )AT91_TWI_ISR_ENTRY); AT91F_AIC_EnableIt (AT91C_BASE_AIC, AT91C_ID_TWI); TWI_TransferStatus = FREE; } portEXIT_CRITICAL();}
开发者ID:FlameN,项目名称:STM32RUNO,代码行数:45,
示例19: ActivateTaskTaskToken ActivateTask(TaskID enTaskID, portCHAR *pcTaskName, TASK_TYPE enTaskType, unsigned portBASE_TYPE uxPriority, unsigned portSHORT usStackSize, pdTASK_CODE pvTaskFunction){ TaskToken taskToken = NULL; //catch NO task name input if (pcTaskName == NULL) return NULL; taskENTER_CRITICAL(); { //detect task already exist if (TaskTokens[enTaskID].pcTaskName == NULL) { //create task xTaskCreate(pvTaskFunction, (signed portCHAR *)pcTaskName, usStackSize, NULL, uxPriority, &TaskHandles[enTaskID]); //store task profile in array TaskTokens[enTaskID].pcTaskName = pcTaskName; TaskTokens[enTaskID].enTaskType = enTaskType; TaskTokens[enTaskID].enTaskID = enTaskID; //create semaphore for task vSemaphoreCreateBinary(TaskSemphrs[enTaskID]); //exhaust task semaphore xSemaphoreTake(TaskSemphrs[enTaskID], NO_BLOCK); taskToken = &TaskTokens[enTaskID]; } } taskEXIT_CRITICAL(); //return pointer to task profile return taskToken;}
开发者ID:bluesat,项目名称:csc-software,代码行数:39,
示例20: ff_cre_syncobjint ff_cre_syncobj ( /* !=0:Function succeeded, ==0:Could not create due to any error */ BYTE vol, /* Corresponding logical drive being processed */ _SYNC_t *sobj /* Pointer to return the created sync object */){ int ret;//// *sobj = CreateMutex(NULL, FALSE, NULL); /* Win32 */// ret = (int)(*sobj != INVALID_HANDLE_VALUE);// *sobj = SyncObjects[vol]; /* uITRON (give a static created 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); vSemaphoreCreateBinary( (*sobj) ); /* FreeRTOS */ ret = (int)(*sobj != NULL); return ret;}
开发者ID:Tanganelli,项目名称:micropython,代码行数:22,
示例21: mainint main(void) { prvSetupHardware(); vSemaphoreCreateBinary(sem); xSemaphoreTake(sem, portMAX_DELAY); xTaskCreate(task_pwm, (signed char * ) "task_pwm", configMINIMAL_STACK_SIZE, NULL, (tskIDLE_PRIORITY + 1UL), (xTaskHandle *) NULL); xTaskCreate(task_pwm_alt, (signed char * ) "task_pwm_alt", configMINIMAL_STACK_SIZE, NULL, (tskIDLE_PRIORITY + 1UL), (xTaskHandle *) NULL); xTaskCreate(task_control, (signed char * ) "task_control", configMINIMAL_STACK_SIZE, NULL, (tskIDLE_PRIORITY + 1UL), (xTaskHandle *) NULL); vTaskStartScheduler(); return 1;}
开发者ID:damianpri,项目名称:RTOS-FreeRTOS,代码行数:22,
示例22: phy_initvoid phy_init(xSemaphoreHandle spi_m, phy_rx_callback_t callback, uint8_t channel, enum phy_tx_power power) { // Store the SPI mutex spi_mutex = spi_m; // Store the callback rx_cb = callback; // Store the channel radio_channel = channel; // Store the TX power switch (power) { case PHY_TX_0dBm: radio_power = CC1101_868MHz_TX_0dBm; break; case PHY_TX_m5dBm: radio_power = CC1101_868MHz_TX_m6dBm; // No exact match so using the nearest break; case PHY_TX_m10dBm: radio_power = CC1101_868MHz_TX_m10dBm; break; case PHY_TX_m20dBm: radio_power = CC1101_868MHz_TX_m20dBm; break; default: radio_power = CC1101_868MHz_TX_0dBm; break; } // Initialize the semaphore vSemaphoreCreateBinary(rx_sem); // Set initial state state = IDLE; // Create the task xTaskCreate(cc1101_task, (const signed char*) "phy_cc1101", configMINIMAL_STACK_SIZE, NULL, configMAX_PRIORITIES-1, NULL);}
开发者ID:EDAyele,项目名称:wsn430,代码行数:39,
示例23: sys_sem_new/** Create a new semaphore * @param sem pointer to the semaphore to create * @param count initial count of the semaphore * @return ERR_OK if successful, another err_t otherwise */err_t sys_sem_new(sys_sem_t *sem, u8_t count){ err_t ercd = ERR_MEM; vSemaphoreCreateBinary((*sem)); if (sys_sem_valid(sem)) { if (count == 0) { if (xSemaphoreTake(*sem, 1) == pdPASS) { ercd = ERR_OK; SYS_STATS_INC_USED(sem); } } else { ercd = ERR_OK; SYS_STATS_INC_USED(sem); } } else { SYS_STATS_INC(sem.err); } return ercd;}
开发者ID:NCTU-ivan,项目名称:embarc_osp,代码行数:26,
示例24: gmac_dev_init/** * /brief Initialize the GMAC driver. * * /param p_gmac Pointer to the GMAC instance. * /param p_gmac_dev Pointer to the GMAC device instance. * /param p_opt GMAC configure options. */void gmac_dev_init(Gmac* p_gmac, gmac_device_t* p_gmac_dev, gmac_options_t* p_opt){ /* Disable TX & RX and more */ gmac_network_control(p_gmac, 0); gmac_disable_interrupt(p_gmac, ~0u); gmac_clear_statistics(p_gmac); /* Clear all status bits in the receive status register. */ gmac_clear_rx_status(p_gmac, GMAC_RSR_RXOVR | GMAC_RSR_REC | GMAC_RSR_BNA | GMAC_RSR_HNO); /* Clear all status bits in the transmit status register */ gmac_clear_tx_status(p_gmac, GMAC_TSR_UBR | GMAC_TSR_COL | GMAC_TSR_RLE | GMAC_TSR_TXGO | GMAC_TSR_TFC | GMAC_TSR_TXCOMP | GMAC_TSR_HRESP ); /* Enable the copy of data into the buffers ignore broadcasts, and not copy FCS. */ gmac_set_config(p_gmac, gmac_get_config(p_gmac) | GMAC_NCFGR_FD | GMAC_NCFGR_DBW(0) | GMAC_NCFGR_MAXFS | GMAC_NCFGR_RFCS | GMAC_NCFGR_PEN); gmac_enable_copy_all(p_gmac, p_opt->uc_copy_all_frame); gmac_disable_broadcast(p_gmac, p_opt->uc_no_boardcast); gmac_init_queue(p_gmac, p_gmac_dev); gmac_set_address(p_gmac, 0, p_opt->uc_mac_addr);#ifdef FREERTOS_USED /* Asynchronous operation requires a notification semaphore. First, * create the semaphore. */ vSemaphoreCreateBinary(netif_notification_semaphore); vQueueAddToRegistry(netif_notification_semaphore, "GMAC Sem"); /* Then set the semaphore into the correct initial state. */ xSemaphoreTake(netif_notification_semaphore, 0);#endif}
开发者ID:thegeek82000,项目名称:asf,代码行数:46,
示例25: sys_sem_new// Creates and returns a new semaphore. The "count" argument specifies// the initial state of the semaphore. TBD finish and testsys_sem_tsys_sem_new(u8_t count){ xSemaphoreHandle xSemaphore; portENTER_CRITICAL(); vSemaphoreCreateBinary( xSemaphore ); if(count == 0) // Means it can't be taken { xSemaphoreTake(xSemaphore,1); } portEXIT_CRITICAL(); if( xSemaphore == NULL ) { return NULL; // TBD need assert } else { return xSemaphore; }}
开发者ID:svn2github,项目名称:freertos,代码行数:24,
示例26: mainint main( void ){ trace_printf("--------/n"); trace_printf("FreeRTOS/n"); trace_printf("--------/n"); MboxQueue = xQueueCreate( 32, sizeof( unsigned int* ) ); vSemaphoreCreateBinary(InitDoneSemaphore); xSemaphoreTake(InitDoneSemaphore, portMAX_DELAY); xTaskCreate(IpcTask, "IpcTask", 100, NULL, 2, NULL); xTaskCreate(RdaemonTask, "RdaemonTask", 100, NULL, 2, NULL); /* Start the scheduler. */ vTaskStartScheduler(); while(1); return 0;}
开发者ID:vstehle,项目名称:ducati_FreeRTOS,代码行数:22,
示例27: mainint main(void){ SystemInit(); /* Initialize the controller */ UART_Init(38400); /* Initialize the Uart module */ LPC_GPIO2->FIODIR = 0xffffffffu; vSemaphoreCreateBinary(Sem_A); /* Create binary semaphore */ if(Sem_A != NULL) { UART_Printf("/n/r/n/nSemaphore successfully created, Creating low priority task"); xTaskCreate( My_LPT, ( signed char * )"LowTask", configMINIMAL_STACK_SIZE, NULL, 1, &LPT_Handle ); vTaskStartScheduler(); } else UART_Printf("/n/rFailed to create Semaphore"); while(1); return 0;}
开发者ID:Amritach,项目名称:FreeRTOS-Examples-on-LPC1768-,代码行数:22,
示例28: i2c_initint i2c_init() { volatile AT91PS_TWI pTWI = AT91C_BASE_TWI; pTWI->TWI_CR = AT91C_TWI_SWRST; pTWI->TWI_CR &= ~(AT91C_TWI_SWRST); uint32_t s; s = pTWI->TWI_SR; TRACE_I2C("TWI_SR %x/r/n", s); s = pTWI->TWI_SR; TRACE_I2C("TWI_SR %x/r/n", s); pTWI->TWI_CWGR = 0x048585; //I2C clk cca 9kHz //i2c_mutex = xSemaphoreCreateMutex(); i2c_mutex = MUTEX_CREATE(); if(i2c_mutex == NULL) { panic("i2c_init"); }#if I2C_IRQ vSemaphoreCreateBinary(i2c_semaphore); xSemaphoreTake(i2c_semaphore, -1); // Initialize the interrupts pTWI->TWI_IDR = 0xffffffff; unsigned int mask = 0x1 << AT91C_ID_TWI; // Disable the interrupt controller & register our interrupt handler AT91C_BASE_AIC->AIC_IDCR = mask ; AT91C_BASE_AIC->AIC_SVR[ AT91C_ID_TWI ] = (unsigned int)i2c_Isr_Wrapper; AT91C_BASE_AIC->AIC_SMR[ AT91C_ID_TWI ] = AT91C_AIC_SRCTYPE_INT_HIGH_LEVEL | IRQ_I2C_PRI; AT91C_BASE_AIC->AIC_ICCR = mask; AT91C_BASE_AIC->AIC_IECR = mask;#endif return 0;}
开发者ID:ArakniD,项目名称:dynawa,代码行数:38,
示例29: prvDataReceiveTaskvoid prvDataReceiveTask( void *pvParameters ){ uint8_t m,n; pvParameters = pvParameters; PumpsInit(); vSemaphoreCreateBinary( xSerialSemaphore ); if(xSerialSemaphore == 0) { while(1); } for(n=0;n<8;n++) NewSpeed[n] = 0; PumpsSetSpeed(1, NewSpeed[0]); for(;;) { if( xSemaphoreTake( xSerialSemaphore, portMAX_DELAY ) == pdTRUE ) { if (InLength == 16) { for (n = 0; n < 8; n++) { m = (InBuff+3) & 0x3; NewSpeed[n] = InputPayload[m][2 * n]; NewSpeed[n] += (((uint16_t) (InputPayload[m][2* n + 1])) << 8); } PumpsSetSpeed(1, NewSpeed[0]); PumpsSetSpeed(2, NewSpeed[1]); PumpsSetSpeed(3, NewSpeed[2]); PumpsSetSpeed(4, NewSpeed[3]); PumpsSetSpeed(5, NewSpeed[4]); PumpsSetSpeed(6, NewSpeed[5]); PumpsSetSpeed(7, NewSpeed[6]); PumpsSetSpeed(8, NewSpeed[7]); GPIOToggle(LED_PORT,LED_RED_BIT); } } }}
开发者ID:Cheng-SG,项目名称:BubbleCode,代码行数:38,
注:本文中的vSemaphoreCreateBinary函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 C++ vStartCountingSemaphoreTasks函数代码示例 C++ vQueueAddToRegistry函数代码示例 |