Statistics
| Branch: | Tag: | Revision:

amiro-os / modules / NUCLEO-L476RG / module.h @ 9487b4cd

History | View | Annotate | Download (5.245 KB)

1 27d0378b Simon Welzel
/*
2
AMiRo-OS is an operating system designed for the Autonomous Mini Robot (AMiRo) platform.
3 8543d0d9 Thomas Schöpping
Copyright (C) 2016..2019  Thomas Schöpping et al.
4 27d0378b Simon Welzel

5
This program is free software: you can redistribute it and/or modify
6
it under the terms of the GNU General Public License as published by
7
the Free Software Foundation, either version 3 of the License, or
8
(at your option) any later version.
9

10
This program is distributed in the hope that it will be useful,
11
but WITHOUT ANY WARRANTY; without even the implied warranty of
12
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
GNU General Public License for more details.
14

15
You should have received a copy of the GNU General Public License
16
along with this program.  If not, see <http://www.gnu.org/licenses/>.
17
*/
18
19
/**
20
 * @file
21 a0301104 Thomas Schöpping
 * @brief   Structures and constant for the STM32L476RG-NUCLEO64 module.
22 27d0378b Simon Welzel
 *
23 a0301104 Thomas Schöpping
 * @addtogroup STM32L476RG-NUCLEO64_module
24 27d0378b Simon Welzel
 * @{
25
 */
26
27 6ff06bbf Thomas Schöpping
#ifndef AMIROOS_MODULE_H
28
#define AMIROOS_MODULE_H
29 27d0378b Simon Welzel
30 8543d0d9 Thomas Schöpping
#include <amiroos.h>
31
32 27d0378b Simon Welzel
/*===========================================================================*/
33
/**
34
 * @name Module specific functions
35
 * @{
36
 */
37
/*===========================================================================*/
38
39
/** @} */
40
41
/*===========================================================================*/
42
/**
43
 * @name ChibiOS/HAL configuration
44
 * @{
45
 */
46
/*===========================================================================*/
47
48
/**
49 8543d0d9 Thomas Schöpping
 * @brief   Serial driver of the programmer interface.
50 27d0378b Simon Welzel
 */
51 8543d0d9 Thomas Schöpping
#define MODULE_HAL_PROGIF                       SD2
52 27d0378b Simon Welzel
53
/**
54 8543d0d9 Thomas Schöpping
 * @brief   Configuration for the programmer serial interface driver.
55 27d0378b Simon Welzel
 */
56 8543d0d9 Thomas Schöpping
extern SerialConfig moduleHalProgIfConfig;
57 27d0378b Simon Welzel
58
/**
59
 * @brief   Real-Time Clock driver.
60
 */
61
#define MODULE_HAL_RTC                          RTCD1
62
63
/** @} */
64
65
/*===========================================================================*/
66
/**
67
 * @name GPIO definitions
68
 * @{
69
 */
70
/*===========================================================================*/
71
72
/**
73
 * @brief   LED output signal GPIO.
74
 */
75
extern ROMCONST apalControlGpio_t moduleGpioLed;
76
77
/**
78 8543d0d9 Thomas Schöpping
 * @brief   User button input signal.
79 27d0378b Simon Welzel
 */
80 8543d0d9 Thomas Schöpping
extern ROMCONST apalControlGpio_t moduleGpioUserButton;
81 27d0378b Simon Welzel
82 8543d0d9 Thomas Schöpping
/** @} */
83 27d0378b Simon Welzel
84 8543d0d9 Thomas Schöpping
/*===========================================================================*/
85 27d0378b Simon Welzel
/**
86 8543d0d9 Thomas Schöpping
 * @name AMiRo-OS core configurations
87
 * @{
88 27d0378b Simon Welzel
 */
89 8543d0d9 Thomas Schöpping
/*===========================================================================*/
90 27d0378b Simon Welzel
91
/**
92 8543d0d9 Thomas Schöpping
 * @brief   Event flag to be set on a USER_BUTTON interrupt.
93 27d0378b Simon Welzel
 */
94 8543d0d9 Thomas Schöpping
#define MODULE_OS_IOEVENTFLAGS_USERBUTTON       AOS_IOEVENT_FLAG(GPIOC_BUTTON)
95 27d0378b Simon Welzel
96 8543d0d9 Thomas Schöpping
#if (AMIROOS_CFG_SHELL_ENABLE == true) || (AMIROOS_CFG_TESTS_ENABLE == true) || defined(__DOXYGEN__)
97 27d0378b Simon Welzel
/**
98 8543d0d9 Thomas Schöpping
 * @brief   Shell prompt text.
99 27d0378b Simon Welzel
 */
100 8543d0d9 Thomas Schöpping
extern ROMCONST char* moduleShellPrompt;
101
#endif
102 27d0378b Simon Welzel
103
/**
104 8543d0d9 Thomas Schöpping
 * @brief   Interrupt initialization macro.
105
 * @note    SSSP related interrupt signals are already initialized in 'aos_system.c'.
106 27d0378b Simon Welzel
 */
107 8543d0d9 Thomas Schöpping
#define MODULE_INIT_INTERRUPTS() {                                            \
108
  /* user button */                                                           \
109
  palSetPadCallback(moduleGpioUserButton.gpio->port, moduleGpioUserButton.gpio->pad, _intCallback, &moduleGpioUserButton.gpio->pad);  \
110
  palEnablePadEvent(moduleGpioUserButton.gpio->port, moduleGpioUserButton.gpio->pad, APAL2CH_EDGE(moduleGpioUserButton.meta.edge));   \
111
}
112 27d0378b Simon Welzel
113
/**
114 8543d0d9 Thomas Schöpping
 * @brief   Unit test initialization hook.
115 27d0378b Simon Welzel
 */
116 8543d0d9 Thomas Schöpping
#define MODULE_INIT_TESTS() {                                                 \
117
  /* add unit-test shell commands */                                          \
118
}
119 27d0378b Simon Welzel
120
/**
121 8543d0d9 Thomas Schöpping
 * @brief   Periphery communication interfaces initialization hook.
122 27d0378b Simon Welzel
 */
123 8543d0d9 Thomas Schöpping
#define MODULE_INIT_PERIPHERY_COMM() {                                        \
124
  /* serial driver */                                                         \
125
  sdStart(&MODULE_HAL_PROGIF, &moduleHalProgIfConfig);                        \
126
}
127 27d0378b Simon Welzel
128
/**
129 8543d0d9 Thomas Schöpping
 * @brief   Periphery communication interface deinitialization hook.
130 27d0378b Simon Welzel
 */
131 8543d0d9 Thomas Schöpping
#define MODULE_SHUTDOWN_PERIPHERY_COMM() {                                    \
132
}
133 27d0378b Simon Welzel
134
/**
135 8543d0d9 Thomas Schöpping
 * @brief   HOOK to toggle the LEDs when the user button is pressed.
136 27d0378b Simon Welzel
 */
137 a0301104 Thomas Schöpping
#define MODULE_MAIN_LOOP_IO_EVENT(eventflags) {                               \
138 8543d0d9 Thomas Schöpping
  if (eventflags & MODULE_OS_IOEVENTFLAGS_USERBUTTON) {                       \
139
    apalControlGpioState_t buttonstate;                                       \
140
    apalControlGpioGet(&moduleGpioUserButton, &buttonstate);                  \
141
    apalControlGpioSet(&moduleGpioLed, buttonstate);                          \
142
  }                                                                           \
143
}
144 27d0378b Simon Welzel
145
/** @} */
146
147
/*===========================================================================*/
148
/**
149 8543d0d9 Thomas Schöpping
 * @name Startup Shutdown Synchronization Protocol (SSSP)
150 27d0378b Simon Welzel
 * @{
151
 */
152
/*===========================================================================*/
153
154 8543d0d9 Thomas Schöpping
/** @} */
155 27d0378b Simon Welzel
156 8543d0d9 Thomas Schöpping
/*===========================================================================*/
157 27d0378b Simon Welzel
/**
158 8543d0d9 Thomas Schöpping
 * @name Low-level drivers
159
 * @{
160 27d0378b Simon Welzel
 */
161 8543d0d9 Thomas Schöpping
/*===========================================================================*/
162 27d0378b Simon Welzel
163 8543d0d9 Thomas Schöpping
/** @} */
164 1678f270 Simon Welzel
165 8543d0d9 Thomas Schöpping
/*===========================================================================*/
166 1678f270 Simon Welzel
/**
167 8543d0d9 Thomas Schöpping
 * @name Unit tests (UT)
168
 * @{
169 1678f270 Simon Welzel
 */
170 8543d0d9 Thomas Schöpping
/*===========================================================================*/
171
#if (AMIROOS_CFG_TESTS_ENABLE == true) || defined(__DOXYGEN__)
172 1678f270 Simon Welzel
173 8543d0d9 Thomas Schöpping
#endif /* AMIROOS_CFG_TESTS_ENABLE == true */
174
175
/** @} */
176
177 6ff06bbf Thomas Schöpping
#endif /* AMIROOS_MODULE_H */
178 27d0378b Simon Welzel
179
/** @} */