Hi, ich bin gerade dabei das freeRTOS auf einem Mikrocontroller zu portieren. Der Compiler erzeugt dabei folgende Fehlermeldung: --> siehe Dateianhang Der Compiler kann anscheinend mit der Funktion "portEXIT_CRITICAL();" nichts anfangen. Weiss jemand woran dies liegen könnte?
1 | static portTASK_FUNCTION( vPolledQueueProducer, pvParameters ) |
2 | {
|
3 | unsigned short usValue = ( unsigned short ) 0; |
4 | signed portBASE_TYPE xError = pdFALSE, xLoop; |
5 | |
6 | for( ;; ) |
7 | {
|
8 | for( xLoop = 0; xLoop < pollqVALUES_TO_PRODUCE; xLoop++ ) |
9 | {
|
10 | /* Send an incrementing number on the queue without blocking. */
|
11 | if( xQueueSend( *( ( xQueueHandle * ) pvParameters ), ( void * ) &usValue, pollqNO_DELAY ) != pdPASS ) |
12 | {
|
13 | /* We should never find the queue full so if we get here there
|
14 | has been an error. */
|
15 | xError = pdTRUE; |
16 | }
|
17 | else
|
18 | {
|
19 | if( xError == pdFALSE ) |
20 | {
|
21 | /* If an error has ever been recorded we stop incrementing the
|
22 | check variable. */
|
23 | portENTER_CRITICAL(); |
24 | xPollingProducerCount++; |
25 | portEXIT_CRITICAL(); |
26 | }
|
27 | |
28 | /* Update the value we are going to post next time around. */
|
29 | usValue++; |
30 | }
|
31 | }
|
32 | |
33 | /* Wait before we start posting again to ensure the consumer runs and
|
34 | empties the queue. */
|
35 | vTaskDelay( pollqPRODUCER_DELAY ); |
36 | }
|
37 | } /*lint !e818 Function prototype must conform to API. */ |