From d00602234f4d9eecbe3a0d4d49ae7a07902088f7 Mon Sep 17 00:00:00 2001 From: Giovanni Di Sirio Date: Mon, 22 Feb 2016 13:13:23 +0000 Subject: NASA OSAL prototype. git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@8922 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- demos/STM32/NASA-OSAL-STM32F407-DISCOVERY/main.c | 70 ++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 demos/STM32/NASA-OSAL-STM32F407-DISCOVERY/main.c (limited to 'demos/STM32/NASA-OSAL-STM32F407-DISCOVERY/main.c') diff --git a/demos/STM32/NASA-OSAL-STM32F407-DISCOVERY/main.c b/demos/STM32/NASA-OSAL-STM32F407-DISCOVERY/main.c new file mode 100644 index 000000000..f2431faee --- /dev/null +++ b/demos/STM32/NASA-OSAL-STM32F407-DISCOVERY/main.c @@ -0,0 +1,70 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +#include "hal.h" +#include "osapi.h" + +/* + * This is a periodic thread that does absolutely nothing except flashing + * a LED. + * Note, the working area is created using ChibiOS/RT macro because alignment + * constraints. + */ +static THD_WORKING_AREA(wa_blinker, 128); +static void blinker(void) { + + OS_TaskRegister(); + + while (true) { + palSetPad(GPIOD, GPIOD_LED3); /* Orange. */ + OS_TaskDelay(500); + palClearPad(GPIOD, GPIOD_LED3); /* Orange. */ + OS_TaskDelay(500); + } +} + +/* + * Application entry point. + */ +int main(void) { + uint32 blinker_id; + + /* HAL initialization, this also initializes the configured device drivers + and performs the board-specific initializations.*/ + halInit(); + + /* OS initialization.*/ + (void) OS_API_Init(); + + /* Activates the serial driver 2 using the driver default configuration. + PA2(TX) and PA3(RX) are routed to USART2.*/ + sdStart(&SD2, NULL); + palSetPadMode(GPIOA, 2, PAL_MODE_ALTERNATE(7)); + palSetPadMode(GPIOA, 3, PAL_MODE_ALTERNATE(7)); + + /* Starting the blinker thread.*/ + (void) OS_TaskCreate(&blinker_id, "blinker", blinker, + (uint32 *)wa_blinker, sizeof wa_blinker, + 128, 0); + + /* In the ChibiOS/RT OSAL implementation the main() function is an + usable thread with priority 128 (NORMALPRIO), here we just sleep + in a loop printing a message on the serial port.*/ + while (true) { + sdWrite(&SD2, (uint8_t *)"Hello World!\r\n", 14); + OS_TaskDelay(500); + } +} -- cgit v1.2.3