diff options
| author | tanek liang <[email protected]> | 2017-07-30 19:24:39 +0800 |
|---|---|---|
| committer | tanek liang <[email protected]> | 2017-07-30 19:24:39 +0800 |
| commit | 96e9504438a8cf52373cf31a1b7f960617eeb9f2 (patch) | |
| tree | 8b46899d6c857a69e1fabdfc306b913aae128681 /bsp/lpc824 | |
| parent | 47c7d947998f84c1fe9680c0039cfef18adda596 (diff) | |
[bsp] add led task to easy confirm kernel is running
Diffstat (limited to 'bsp/lpc824')
| -rw-r--r-- | bsp/lpc824/applications/application.c | 49 |
1 files changed, 47 insertions, 2 deletions
diff --git a/bsp/lpc824/applications/application.c b/bsp/lpc824/applications/application.c index 4391f38bf0..8d408d717b 100644 --- a/bsp/lpc824/applications/application.c +++ b/bsp/lpc824/applications/application.c @@ -16,11 +16,20 @@ #include <board.h> #include <rtthread.h> +#include "peri_driver.h" + +#define INIT_STACK_SIZE 512 +#define LED_STACK_SIZE 256 + #ifndef RT_USING_HEAP /* if there is not enable heap, we should use static thread and stack. */ ALIGN(8) -static rt_uint8_t init_stack[512]; +static rt_uint8_t init_stack[INIT_STACK_SIZE]; static struct rt_thread init_thread; + +ALIGN(8) +static rt_uint8_t led_stack[LED_STACK_SIZE]; +static struct rt_thread led_thread; #endif void rt_init_thread_entry(void* parameter) @@ -31,6 +40,24 @@ void rt_init_thread_entry(void* parameter) #endif } + +void rt_led_thread_entry(void *parameter) +{ + /* Initialize GPIO */ + Chip_GPIO_Init(LPC_GPIO_PORT); + Chip_GPIO_PinSetDIR(LPC_GPIO_PORT, 0, 7, 1); + Chip_GPIO_PinSetState(LPC_GPIO_PORT, 0, 7, true); + + while (1) + { + Chip_GPIO_PinSetState(LPC_GPIO_PORT, 0, 7, true); + rt_thread_delay(RT_TICK_PER_SECOND / 2); + + Chip_GPIO_PinSetState(LPC_GPIO_PORT, 0, 7, false); + rt_thread_delay(RT_TICK_PER_SECOND / 2); + } +} + int rt_application_init() { rt_thread_t tid; @@ -38,7 +65,7 @@ int rt_application_init() #ifdef RT_USING_HEAP tid = rt_thread_create("init", rt_init_thread_entry, RT_NULL, - 2048, RT_THREAD_PRIORITY_MAX/3, 20); + INIT_STACK_SIZE, RT_THREAD_PRIORITY_MAX/3, 20); #else { @@ -52,6 +79,24 @@ int rt_application_init() #endif if (tid != RT_NULL) rt_thread_startup(tid); + +#ifdef RT_USING_HEAP + tid = rt_thread_create("led", + rt_led_thread_entry, RT_NULL, + LED_STACK_SIZE, RT_THREAD_PRIORITY_MAX/3, 20); +#else + { + + rt_err_t result; + + tid = &led_thread; + result = rt_thread_init(tid, "led", rt_led_thread_entry, RT_NULL, + led_stack, sizeof(led_stack), RT_THREAD_PRIORITY_MAX / 4, 20); + RT_ASSERT(result == RT_EOK); + } +#endif + if (tid != RT_NULL) + rt_thread_startup(tid); return 0; } |
