aboutsummaryrefslogtreecommitdiffstats
path: root/demos/STM32/NASA-OSAL-STM32F407-DISCOVERY/main.c
blob: 67fcacaf05b7be19f36f7e4c1450414de5f413bd (plain)
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
/*
    ChibiOS - Copyright (C) 2006..2018 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 "nasa_osal_test_root.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) {
    palSetLine(LINE_LED3);       /* Orange.  */
    OS_TaskDelay(500);
    palClearLine(LINE_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
     waiting for a button event, then the test suite is executed.*/
  while (true) {
    if (palReadLine(LINE_BUTTON))
      test_execute((BaseSequentialStream *)&SD2, &nasa_osal_test_suite);
    OS_TaskDelay(500);
  }
}
class="cp">#define MAGIC_KEY_CONSOLE C #endif #ifndef MAGIC_KEY_LAYER0_ALT1 #define MAGIC_KEY_LAYER0_ALT1 ESC #endif #ifndef MAGIC_KEY_LAYER0_ALT2 #define MAGIC_KEY_LAYER0_ALT2 GRAVE #endif #ifndef MAGIC_KEY_LAYER0 #define MAGIC_KEY_LAYER0 0 #endif #ifndef MAGIC_KEY_LAYER1 #define MAGIC_KEY_LAYER1 1 #endif #ifndef MAGIC_KEY_LAYER2 #define MAGIC_KEY_LAYER2 2 #endif #ifndef MAGIC_KEY_LAYER3 #define MAGIC_KEY_LAYER3 3 #endif #ifndef MAGIC_KEY_LAYER4 #define MAGIC_KEY_LAYER4 4 #endif #ifndef MAGIC_KEY_LAYER5 #define MAGIC_KEY_LAYER5 5 #endif #ifndef MAGIC_KEY_LAYER6 #define MAGIC_KEY_LAYER6 6 #endif #ifndef MAGIC_KEY_LAYER7 #define MAGIC_KEY_LAYER7 7 #endif #ifndef MAGIC_KEY_LAYER8 #define MAGIC_KEY_LAYER8 8 #endif #ifndef MAGIC_KEY_LAYER9 #define MAGIC_KEY_LAYER9 9 #endif #ifndef MAGIC_KEY_BOOTLOADER #define MAGIC_KEY_BOOTLOADER PAUSE #endif #ifndef MAGIC_KEY_LOCK #define MAGIC_KEY_LOCK CAPS #endif #ifndef MAGIC_KEY_EEPROM #define MAGIC_KEY_EEPROM E #endif #ifndef MAGIC_KEY_NKRO #define MAGIC_KEY_NKRO N #endif #ifndef MAGIC_KEY_SLEEP_LED #define MAGIC_KEY_SLEEP_LED Z #endif #define XMAGIC_KC(key) KC_##key #define MAGIC_KC(key) XMAGIC_KC(key) #endif