FreeRTOS Support Archive
The FreeRTOS support forum is used to obtain active support directly from Real
Time Engineers Ltd. In return for using our top quality software and services for
free, we request you play fair and do your bit to help others too! Sign up
to receive notifications of new support topics then help where you can.
This is a read only archive of threads posted to the FreeRTOS support forum.
The archive is updated every week, so will not always contain the very latest posts.
Use these archive pages to search previous posts. Use the Live FreeRTOS Forum
link to reply to a post, or start a new support thread.
[FreeRTOS Home] [Live FreeRTOS Forum] [FAQ] [Archive Top] [September 2008 Threads] unable to create semaphore Posted by Angel Eyes on September 2, 2008 Hi I am getting some compilation errors when I am trying to create semaphores , like "implicit declaration of function in xQueueCreate" etc
Am I going wrong somewhere , am I not including the right header files ? I am pasting the code below. This is for the Samsung S3C4510 processor, I am able to run simple tasks on it .
#include "S3C4510.h" /* Standard includes. */ #include <stdlib.h> #include <string.h> #include "semphr.h"
/* Scheduler includes. */ #include "FreeRTOS.h" #include "task.h"
/* Demo application includes. */ #include "partest.h" #include "flash.h" #include "integer.h" #include "PollQ.h" #include "comtest2.h" #include "semtest.h" #include "flop.h" #include "dynamic.h" #include "BlockQ.h" #include "serial.h" int counter = 0 ; #define mainCHECK_TASK_PRIORITY 3 #define mainCHECK_TASK_PRIORITY1 3
static void vErrorChecks( void *pvParameters );
static void vErrorChecks1( void *pvParameters ); xSemaphoreHandle xSemaphore = NULL ; void timersetup (void );
int main(void) { int i;
xTaskCreate( vErrorChecks, ( signed portCHAR * ) "Check", configMINIMAL_STACK_SIZE, NULL, mainCHECK_TASK_PRIORITY, NULL ); xTaskCreate( vErrorChecks1, ( signed portCHAR * ) "Check1", configMINIMAL_STACK_SIZE, NULL, mainCHECK_TASK_PRIORITY1, NULL ); char * hellostr=" Hi this is mr y here, Starting Scheduler! \n "; long* paddr=(long*)0x3ffd00c;
for(i=0;i<45;i++) { * paddr=hellostr;
}
vSemaphoreCreateBinary( xSemaphore );
vTaskStartScheduler();
return 0; }
void vErrorChecks( void * pvParameters ) { for (;;) { // Task code goes here. if ( cSemaphoreTake( xSemaphore, 0 ) ) {
int i; char * hellostr="Running Task T1 \n "; long* paddr=(long*)0x3ffd00c;
for(i=0;i<20;i++) { * paddr=hellostr;
} cSemaphoreGive( xSemaphore ); } } }
void vErrorChecks1( void * pvParameters ) { for (;;) { // Task code goes here. if ( cSemaphoreTake( xSemaphore, 0 ) ) {
int i; char * hellostr="Running Task T2 \n "; long* paddr=(long*)0x3ffd00c;
for(i=0;i<20;i++) { * paddr=hellostr;
} cSemaphoreGive( xSemaphore ); } } }
RE: unable to create semaphore Posted by Richard on September 2, 2008 Include FreeRTOS.h before semphr.h, then you should be ok.
Coincidentally I updated the code in SVN just yesterday to add in a #error message to inform people of just this problem.
Regards.
RE: unable to create semaphore Posted by Angel Eyes on September 2, 2008 Hi Richard,
Thanks , I will try it out . As you can see in the code I had pasted previously, I have created the semaphore in the main function and declared it before main . Will this work ?
Do I need to create a semaphore in a task explicitly ?
Regards
Copyright (C) Amazon Web Services, Inc. or its affiliates. All rights reserved.
|