X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=examples%2Flpc2378%2Fmain.c;h=ef67627ec4487e6177d6871665e9de8c787be3f4;hb=391b4f8d9c82c413f2cd11fb3ba3aeb311f62184;hp=213e96117f2c6c3294002cacc539b1781f126419;hpb=751e05a8c44d88d8676527b2dcc377ba28735e0d;p=bertos.git diff --git a/examples/lpc2378/main.c b/examples/lpc2378/main.c index 213e9611..ef67627e 100644 --- a/examples/lpc2378/main.c +++ b/examples/lpc2378/main.c @@ -2,11 +2,14 @@ #include #include #include +#include #include +#include "hw/hw_led.h" -#define STATUS_LED (1<<19) -#define LED_ON() do { IOCLR1 = STATUS_LED; } while (0) -#define LED_OFF() do { IOSET1 = STATUS_LED; } while (0) +#define PRIO_HIGH 1 +#define PRIO_LOW 0 + +static Serial ser_port; static void init(void) { @@ -14,17 +17,37 @@ static void init(void) kdbg_init(); timer_init(); proc_init(); + timer_delay(3000); kprintf("NXP LPC2378 BeRTOS port test\n"); timer_delay(3000); /* Turn off boot led */ - IODIR0 = (1<<21); - IOCLR0 = (1<<21); + IODIR0 = (1<<21); + IOCLR0 = (1<<21); /* Init status led */ - IODIR1 |= STATUS_LED; + LED_INIT(); LED_OFF(); } +static void NORETURN ser_prompt(void) +{ + char buf[32]; + int i; + + ser_init(&ser_port, SER_UART1); + ser_setbaudrate(&ser_port, 115200); + + /* BeRTOS "echo" terminal */ + kfile_printf(&ser_port.fd, "\n\rBeRTOS echo terminal\n\r"); + proc_setPri(proc_current(), PRIO_HIGH); + for (i = 0; ; i++) + { + kfile_printf(&ser_port.fd, "\n\r[%03d] BeRTOS:~$ ", i); + kfile_gets_echo(&ser_port.fd, buf, sizeof(buf), true); + kfile_printf(&ser_port.fd, "%s", buf); + } +} + static void NORETURN bertos_up(void) { char spinner[] = {'/', '-', '\\', '|'}; @@ -46,7 +69,7 @@ static void NORETURN status(void) { LED_ON(); timer_delay(250); - + LED_OFF(); timer_delay(250); } @@ -58,6 +81,7 @@ int main(void) init(); proc_testRun(); proc_new(bertos_up, NULL, KERN_MINSTACKSIZE * 3, NULL); + proc_new(ser_prompt, NULL, KERN_MINSTACKSIZE * 3, NULL); proc_new(status, NULL, 0, NULL); while (1) { @@ -65,4 +89,3 @@ int main(void) return 0; } -