From 4755bd8fe252ffdc07de99e11ef049402f875108 Mon Sep 17 00:00:00 2001 From: Nis Sarup Date: Tue, 21 Jun 2011 17:02:06 +0200 Subject: FreeRTOS: Added FreeRTOS 7.0.1, including hook in libmaple/systick.c and example blinky. --- libmaple/systick.c | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'libmaple') diff --git a/libmaple/systick.c b/libmaple/systick.c index 5a94d81..388f7aa 100644 --- a/libmaple/systick.c +++ b/libmaple/systick.c @@ -31,6 +31,7 @@ #include "systick.h" volatile uint32 systick_uptime_millis; +static void (*systick_user_callback)(void); /** * @brief Initialize and enable SysTick. @@ -64,10 +65,20 @@ void systick_enable() { SYSTICK_CSR_TICKINT_PEND); } +/** + * Attach a callback called each ms. + */ +void systick_attach_callback(void (*callback)(void)) { + systick_user_callback = callback; +} + /* * SysTick ISR */ void __exc_systick(void) { + if (systick_user_callback) { + systick_user_callback(); + } systick_uptime_millis++; } -- cgit v1.2.3 From 1a825f8a475f0b10c5c528cedd6c930a2f248255 Mon Sep 17 00:00:00 2001 From: Marti Bolivar Date: Fri, 24 Jun 2011 14:37:54 -0400 Subject: Make FreeRTOS changes comply with the coding standard. Don't modify the core FreeRTOS code; only change source that's specific to libmaple. --- examples/freertos-blinky.cpp | 11 ++++++++--- libmaple/systick.c | 6 ++++-- libraries/FreeRTOS/MapleFreeRTOS.cpp | 17 +++++++++-------- libraries/FreeRTOS/MapleFreeRTOS.h | 14 +++++++------- 4 files changed, 28 insertions(+), 20 deletions(-) (limited to 'libmaple') diff --git a/examples/freertos-blinky.cpp b/examples/freertos-blinky.cpp index acdfc0f..6f82d71 100755 --- a/examples/freertos-blinky.cpp +++ b/examples/freertos-blinky.cpp @@ -1,8 +1,8 @@ #include "wirish.h" #include "libraries/FreeRTOS/MapleFreeRTOS.h" -static void vLEDFlashTask( void *pvParameters ) { - for(;;) { +static void vLEDFlashTask(void *pvParameters) { + for (;;) { vTaskDelay(1000); digitalWrite(BOARD_LED_PIN, HIGH); vTaskDelay(50); @@ -14,7 +14,12 @@ void setup() { // initialize the digital pin as an output: pinMode(BOARD_LED_PIN, OUTPUT); - xTaskCreate( vLEDFlashTask, ( signed portCHAR * ) "Task1", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY + 2, NULL ); + xTaskCreate(vLEDFlashTask, + (signed portCHAR *)"Task1", + configMINIMAL_STACK_SIZE, + NULL, + tskIDLE_PRIORITY + 2, + NULL); vTaskStartScheduler(); } diff --git a/libmaple/systick.c b/libmaple/systick.c index 388f7aa..5025328 100644 --- a/libmaple/systick.c +++ b/libmaple/systick.c @@ -66,7 +66,9 @@ void systick_enable() { } /** - * Attach a callback called each ms. + * @brief Attach a callback to be called from the SysTick exception handler. + * + * To detach a callback, call this function again with a null argument. */ void systick_attach_callback(void (*callback)(void)) { systick_user_callback = callback; @@ -77,7 +79,7 @@ void systick_attach_callback(void (*callback)(void)) { */ void __exc_systick(void) { - if (systick_user_callback) { + if (systick_user_callback) { systick_user_callback(); } systick_uptime_millis++; diff --git a/libraries/FreeRTOS/MapleFreeRTOS.cpp b/libraries/FreeRTOS/MapleFreeRTOS.cpp index 2d63e0d..d235ceb 100644 --- a/libraries/FreeRTOS/MapleFreeRTOS.cpp +++ b/libraries/FreeRTOS/MapleFreeRTOS.cpp @@ -28,16 +28,17 @@ extern "C" { -void vApplicationStackOverflowHook( xTaskHandle *pxTask, signed char *pcTaskName ) -{ - /* This function will get called if a task overflows its stack. If the - parameters are corrupt then inspect pxCurrentTCB to find which was the - offending task. */ +void vApplicationStackOverflowHook(xTaskHandle *pxTask, + signed char *pcTaskName) { + /* This function will get called if a task overflows its stack. + * If the parameters are corrupt then inspect pxCurrentTCB to find + * which was the offending task. */ - ( void ) pxTask; - ( void ) pcTaskName; + (void) pxTask; + (void) pcTaskName; - for( ;; ); + while (1) + ; } } diff --git a/libraries/FreeRTOS/MapleFreeRTOS.h b/libraries/FreeRTOS/MapleFreeRTOS.h index 0fcc2ae..839e3e2 100644 --- a/libraries/FreeRTOS/MapleFreeRTOS.h +++ b/libraries/FreeRTOS/MapleFreeRTOS.h @@ -24,17 +24,17 @@ * SOFTWARE. *****************************************************************************/ -#ifndef __FREERTOS__ -#define __FREERTOS__ +#ifndef __MAPLE_FREERTOS_H__ +#define __MAPLE_FREERTOS_H__ #include "wirish.h" extern "C" { - #define GCC_ARMCM3 - #include "utility/FreeRTOS.h" - #include "utility/task.h" - #include "utility/queue.h" - #include "utility/semphr.h" +#define GCC_ARMCM3 +#include "utility/FreeRTOS.h" +#include "utility/task.h" +#include "utility/queue.h" +#include "utility/semphr.h" } #endif -- cgit v1.2.3