您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ vSemaphoreCreateBinary函数代码示例

51自学网 2021-06-03 09:31:03
  C++
这篇教程C++ vSemaphoreCreateBinary函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中vSemaphoreCreateBinary函数的典型用法代码示例。如果您正苦于以下问题:C++ vSemaphoreCreateBinary函数的具体用法?C++ vSemaphoreCreateBinary怎么用?C++ vSemaphoreCreateBinary使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了vSemaphoreCreateBinary函数的29个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: low_level_output

static 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_Init

void 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_malloc

struct 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: main

int 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: main

int 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: SHT10Init

void 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: main

int 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: xNetworkInterfaceInitialise

portBASE_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_init

static 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_init

int 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: prvSetupEMACInterrupt

static 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: vCDCCommandConsoleStart

void 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_control

void 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: main

int 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: ActivateTask

TaskToken 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_syncobj

int 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: main

int 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_init

void 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: main

int 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: main

int 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_init

int 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: prvDataReceiveTask

void 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函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。