Notas FreeRTOS
Notas que voy encontrando sobre el desarrollo de aplicaciones con FreeRTOS v9. La mayoria de las notas y ejercicios estan disponibles en los siguientes documentos (fuente: http://www.freertos.org/Documentation/RTOS_book.html) mientras otras notas las encontré en el foro (fuente: http://www.freertos.org/FreeRTOS_Support_Forum_Archive/freertos_support_forum_archive_index.html).
const TickType_t xDelay500ms = pdMS_TO_TICKS( 500 );
xDelay500ms valdrá el número de ticks que equivalen a 500ms.
Mutex
- Cuando se tiene dos tareas con la misma prioridad y utilizan el mismo mutex para acceder a un elemento, hay que hacer un taskYIELD() despues de entregar el mutex para forzar el cambio de una tarea a otra, de lo contrario solo se ejecuta una sola tarea. Fuente: freertos_mutex_never_giving
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | void vHello(void *pvParameters){ (void) pvParameters; while(1) { if ( xSemaphoreTake( myMutex, (TickType_t) 10 ) == pdTRUE ) { UART_PutString("Hello\r\n"); xSemaphoreGive(myMutex); taskYIELD(); } } } void vHola(void *pvParameters){ (void) pvParameters; while(1) { if ( xSemaphoreTake( myMutex, (TickType_t) 10 ) == pdTRUE ) { UART_PutString("Hola\r\n"); xSemaphoreGive(myMutex); taskYIELD(); } } } |
pdMS_TO_TICKS()
Este macro se puede usar para convertir un tiempo especificado en milisegundos al tiempo especificado en ticks, por ejemplo:const TickType_t xDelay500ms = pdMS_TO_TICKS( 500 );
xDelay500ms valdrá el número de ticks que equivalen a 500ms.
Muy buena toda la información que vas recopilando y mostrando aquí. Sigue así.
ResponderBorrarGracias, vere si puedo subir los proyectos que fui haciendo con FreeRTOS en los PSoCs.
Borrar