コード例 #1
0
ファイル: common.c プロジェクト: asna121/-Play--Command_Line
void Error_Handler(void)
{
  /* Turn LED4 on */
 // BSP_LED_On(LED4);
  while(1)
		prvNewPrintString(" #@Error@# ",12);
}
コード例 #2
0
ファイル: mutex_printf.c プロジェクト: hokim72/FreeRTOS
void prvPrintTask(void* pvParameters)
{
	char* pcStringToPrint;

	pcStringToPrint = (char*)pvParameters;

	for (;;)
	{
		prvNewPrintString(pcStringToPrint);
		vTaskDelay(rand() & 0x03FF);
	}
}
コード例 #3
0
ファイル: main.c プロジェクト: Lzyuan/STE-LPC1768-
static void prvPrintTask( void *pvParameters )
{
char *pcStringToPrint;

	/* Two instances of this task are created so the string the task will send
	to prvNewPrintString() is passed in the task parameter.  Cast this to the
	required type. */
	pcStringToPrint = ( char * ) pvParameters;

	for( ;; )
	{
		/* Print out the string using the newly defined function. */
		prvNewPrintString( pcStringToPrint );

		/* Wait a pseudo random time.  Note that rand() is not necessarily
		re-entrant, but in this case it does not really matter as the code does
		not care what value is returned.  In a more secure application a version
		of rand() that is known to be re-entrant should be used - or calls to
		rand() should be protected using a critical section. */
		vTaskDelay( ( rand() & 0x1FF ) );
	}
}
コード例 #4
0
ファイル: EPS_NanoPower_P31U.c プロジェクト: asna121/Sim_IFB
 /**
  * @brief  initial register
  * @param  None
  * @retval None
  */
static void Update_Register(void *argument)
{
    /* for the test */    
    //uint8_t buff[6] ={0,0,0,0,0,0};
    uint8_t *output_test = "popout\n";
		
	portTickType xLastWakeTime;
	
	portBASE_TYPE xStatus;
    
    xData test2;
    uint16_t* temp_int = NULL;
			
	//prvNewPrintString("Hey",3);
	xLastWakeTime = xTaskGetTickCount();
    prvNewPrintString("Update Reg\n",12);
	
    for(;;)
	{
		//prvNewPrintString("Hey",3);    
        /* for Queue Test */
        if(xQueue_EPS!=0)
        {
            //for(;;)
                if(uxQueueMessagesWaiting(xQueue_EPS) != 0)
                {
                    //prvNewPrintString("Hey",3);
                    //prvNewPrintString(output_test,7);
    
                    xStatus = xQueueReceive(xQueue_EPS, &test2 ,0);
                    if(xStatus == pdPASS)
                    {
                        //prvNewPrintString("Success ",8);
                    
                        switch(test2.refRegister)
                        {
                            case ref_envEPS_Battery_Voltage:
                    
                            temp_int = (type_envEPS_Battery_Voltage *)test2.ptrRegister;
                            /*get register value from Queue*/
                            envEPS_Battery_Voltage = *temp_int;
                            break;
                                      
                            default:
                            prvNewPrintString("Something Wrong",15); 
                        }
                
                    /* Print to Screen*/
                    //sprintf (buff, "%d", *temp_int);
                    //prvNewPrintString(buff,6);
                
                    free(temp_int);
                            
                    //Register(Port) 8
                    hk_test.bv = envEPS_Battery_Voltage;
                    
                    //Register(Port) 14
                    }
                    else
                        prvNewPrintString("Fail",4);
                    
                    //vTaskDelayUntil( &xLastWakeTime, 1000 );
                }
                else
                {
                    prvNewPrintString("Empty ",6);
                    break;
                }

        }

			
		//vTaskDelayUntil( &xLastWakeTime, (1000/portTICK_RATE_MS) );
        //prvNewPrintString(output_test,7);
            
        vTaskDelayUntil( &xLastWakeTime, 1000 );
	}
}
コード例 #5
0
ファイル: EPS_NanoPower_P31U.c プロジェクト: asna121/Sim_IFB
/**
  * @brief  EPS I2C Task
  * @param  argument: I2C's Handle
  * @retval None
  */
static void I2C_2_Slave_Mode(void *argument)
{
	
    I2C_HandleTypeDef* I2CHandle;

    uint8_t priTransferDataBuffer[50];
    
    uint8_t* default_string = "012345678996543210";
	
    I2CHandle = (I2C_HandleTypeDef*) argument;
  
    prvNewPrintString("EPS I2C Task\n",13);
  
	for(;;)
  {
		//prvNewPrintString("Hello",5);
		/*##-2- Slave receive request from master ################################*/
    while(HAL_I2C_Slave_Receive_IT(I2CHandle, priTransferDataBuffer, TRANSFERBUFFERSIZE)!= HAL_OK)
        vTaskDelay(1);
    /*  Before starting a new communication transfer, you need to check the current
    state of the peripheral; if it? busy you need to wait for the end of current
    transfer before starting a new one.
    For simplicity reasons, this example is just waiting till the end of the
    transfer, but application may perform other tasks while transfer operation
    is ongoing. */
    while (HAL_I2C_GetState(I2CHandle) != HAL_I2C_STATE_READY)
    {
        vTaskDelay(1);
				//prvNewPrintString("Chuck",5);
    }
		
		
		if(priI2C_NewCommand_2==1)
		{
		
			priI2C_NewCommand_2 =0;
			//get command number and command arguments from master device
			I2C_transfer_slave_2.priCommand = priTransferDataBuffer[0];
			I2C_transfer_slave_2.priRequestPtr = priTransferDataBuffer+1;
		
	
			switch(I2C_transfer_slave_2.priCommand)
			{
				case 0x08:
					I2C_transfer_slave_2.priErrorcode = 0;
					//reply data
				
					I2C_transfer_slave_2.priSizeofReply = 2+43;
				
					priTransferDataBuffer[0] = I2C_transfer_slave_2.priCommand;
					priTransferDataBuffer[1] = I2C_transfer_slave_2.priErrorcode;
					memcpy( (void *)(priTransferDataBuffer+2), (void *)&hk_test, 43);
				break;
			
				case 0x09:
					output_test.output_byte = *(I2C_transfer_slave_2.priRequestPtr);
			
					//print result
					//HAL_UART_Transmit(&UartHandle, &output_test, 1 , 1000);
			
					/* Flush Tx/Rx buffers */
					Flush_Buffer(priTransferDataBuffer,TRANSFERBUFFERSIZE);
				break;
                default:
                    priTransferDataBuffer[0] = 0xff;
					priTransferDataBuffer[1] = 0xEE;
                    memcpy( (void *)(priTransferDataBuffer+2), (void *)default_string, 18);
                    
			}
		
		}
    
	}
}
コード例 #6
0
ファイル: INMS_IF_board.c プロジェクト: asna121/Sim_EPS
/**
  * @brief  INMS I2C Task
  * @param  argument: I2C's Handle
  * @retval None
  */
static void I2C_2_Slave_Mode(void *argument)
{
	
    I2C_HandleTypeDef* I2CHandle;

    uint8_t priTransferDataBuffer[TRANSFERBUFFERSIZE];
    
    uint8_t* default_string = "012345678996543210";
	
    I2CHandle = (I2C_HandleTypeDef*) argument;
  
    prvNewPrintString("ADCS I2C Task\n",13);
  
	for(;;)
  {
		//prvNewPrintString("Hello",5);
		/*##-2- Slave receive request from master ################################*/
    while(HAL_I2C_Slave_Receive_IT(I2CHandle, priTransferDataBuffer, TRANSFERBUFFERSIZE)!= HAL_OK)
        vTaskDelay(1);
    /*  Before starting a new communication transfer, you need to check the current
    state of the peripheral; if it? busy you need to wait for the end of current
    transfer before starting a new one.
    For simplicity reasons, this example is just waiting till the end of the
    transfer, but application may perform other tasks while transfer operation
    is ongoing. */
    while (HAL_I2C_GetState(I2CHandle) != HAL_I2C_STATE_READY)
    {
        vTaskDelay(1);
    }
		
		
		if(priI2C_NewCommand_2==1)
		{
		
			priI2C_NewCommand_2 =0;
			//get command number and command arguments from master device
			I2C_transfer_slave_2.priCommand = priTransferDataBuffer[0];
			I2C_transfer_slave_2.priRequestPtr = priTransferDataBuffer+1;
		
/* the format of register output to master device. It can call interface format of subsystm */
          
			switch(I2C_transfer_slave_2.priCommand)
			{

                /* Channel 1 INMS 5V current*/
                case 0xb0:
					I2C_transfer_slave_2.priSizeofReply = 4;
                    
                    memset(priTransferDataBuffer,I2C_transfer_slave_2.priCommand,TRANSFERBUFFERSIZE);
                
                    priTransferDataBuffer[0] = (ifb_test.IFB_5V_Current & 0xff00)>>8;
                    priTransferDataBuffer[1] = ifb_test.IFB_5V_Current & 0xff;
                    priTransferDataBuffer[2] = 0xff;

                    break;
                /* Channel 0 INMS 3_3V current*/
                case 0x90:
                    
                    I2C_transfer_slave_2.priSizeofReply = 4;
                
                    memset(priTransferDataBuffer,I2C_transfer_slave_2.priCommand,TRANSFERBUFFERSIZE);
                    
                    priTransferDataBuffer[0] = (ifb_test.IFB_3_3V_Current & 0xff00)>>8;
                    priTransferDataBuffer[1] = ifb_test.IFB_3_3V_Current & 0xff;
                    priTransferDataBuffer[2] = 0xff;
                    
                    break;
                /* Channel 2 INMS INMS temperature*/
                case 0xd0:
                    
                    I2C_transfer_slave_2.priSizeofReply = 4;
                
                    memset(priTransferDataBuffer,I2C_transfer_slave_2.priCommand,TRANSFERBUFFERSIZE);
                    
                    priTransferDataBuffer[0] = (ifb_test.IFB_INMS_Temp & 0xff00)>>8;
                    priTransferDataBuffer[1] = ifb_test.IFB_INMS_Temp & 0xff;
                    priTransferDataBuffer[2] = 0xff;
                    
                    break;
                /* Channel 3 INMS INMS Interface Board temperature*/
                case 0xf0:
                    
                    I2C_transfer_slave_2.priSizeofReply = 4;
                    
                    memset(priTransferDataBuffer,I2C_transfer_slave_2.priCommand,TRANSFERBUFFERSIZE);
                    
                    priTransferDataBuffer[0] = (ifb_test.IFB_IFB_Temp & 0xff00)>>8;
                    priTransferDataBuffer[1] = ifb_test.IFB_IFB_Temp & 0xff;
                    priTransferDataBuffer[2] = 0xff;
                    
                    break;
                default:
                    /* send a default string to remind user*/
                    memcpy( (void *)(priTransferDataBuffer), (void *)default_string, 18);
			}
		
		}
    
	}