Statistics
| Branch: | Tag: | Revision:

amiro-os / modules / STM32F4Discovery / module.h @ 2685de93

History | View | Annotate | Download (6.584 KB)

1 07ff44a7 Thomas Schöpping
/*
2
AMiRo-OS is an operating system designed for the Autonomous Mini Robot (AMiRo) platform.
3 84f0ce9e Thomas Schöpping
Copyright (C) 2016..2019  Thomas Schöpping et al.
4 07ff44a7 Thomas Schöpping

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
 * @brief   Structures and constant for the PowerManagement module.
22
 *
23
 * @addtogroup powermanagement_module
24
 * @{
25
 */
26
27
#ifndef _AMIROOS_MODULE_H_
28
#define _AMIROOS_MODULE_H_
29
30
/*===========================================================================*/
31
/**
32
 * @name Module specific functions
33
 * @{
34
 */
35
/*===========================================================================*/
36
37
/*
38
 * @brief Makro to store data in the core coupled memory (ccm).
39
 *        Example:
40
 *        int compute_buffer[128] CCM_RAM;
41
 *
42
 * @note The ccm is not connected to any bus system.
43
 */
44
#define CCM_RAM                                 __attribute__((section(".ram4"), aligned(4)))
45
46
/*
47
 * @brief Makro to store data in the ethernet memory (eth).
48
 *        Example:
49
 *        int dma_buffer[128] ETH_RAM;
50
 *
51
 * @note The eth is a dedicated memory block with its own DMA controller.
52
 */
53
#define ETH_RAM                                 __attribute__((section(".ram2"), aligned(4)))
54
55
/*
56
 * @brief Makro to store data in the backup memory (bckp).
57
 *        Example:
58
 *        int backup_buffer[128] BCKP_RAM;
59
 *
60
 * @note The eth is a dedicated memory block with its own DMA controller.
61
 */
62
#define BCKP_RAM                                __attribute__((section(".ram5"), aligned(4)))
63
64
/** @} */
65
66
/*===========================================================================*/
67
/**
68
 * @name ChibiOS/HAL configuration
69
 * @{
70
 */
71
/*===========================================================================*/
72
73
/**
74
 * @brief   Serial driver of the programmer interface.
75
 */
76
#define MODULE_HAL_PROGIF                       SD2
77
78
/**
79
 * @brief   Configuration for the programmer serial interface driver.
80
 */
81
extern SerialConfig moduleHalProgIfConfig;
82
83
/**
84
 * @brief   Real-Time Clock driver.
85
 */
86
#define MODULE_HAL_RTC                          RTCD1
87
88
/** @} */
89
90
/*===========================================================================*/
91
/**
92
 * @name GPIO definitions
93
 * @{
94
 */
95
/*===========================================================================*/
96
#include <amiro-lld.h>
97
98
/**
99
 * @brief   Red LED output signal.
100
 */
101
extern ROMCONST apalControlGpio_t moduleGpioLedRed;
102
103
/**
104
 * @brief   Green LED output signal.
105
 */
106
extern ROMCONST apalControlGpio_t moduleGpioLedGreen;
107
108
/**
109
 * @brief   Blue LED output signal.
110
 */
111
extern ROMCONST apalControlGpio_t moduleGpioLedBlue;
112
113
/**
114
 * @brief   Orange LED output signal.
115
 */
116
extern ROMCONST apalControlGpio_t moduleGpioLedOrange;
117
118
/**
119
 * @brief   User button input signal.
120
 */
121
extern ROMCONST apalControlGpio_t moduleGpioUserButton;
122
123
/** @} */
124
125
/*===========================================================================*/
126
/**
127
 * @name AMiRo-OS core configurations
128
 * @{
129
 */
130
/*===========================================================================*/
131
132
/**
133
 * @brief   Event flag to be set on a USER_BUTTON interrupt.
134
 */
135 dada2194 Thomas Schöpping
#define MODULE_OS_IOEVENTFLAGS_USERBUTTON       AOS_IOEVENT_FLAG(GPIOA_BUTTON)
136 07ff44a7 Thomas Schöpping
137
#if (AMIROOS_CFG_SHELL_ENABLE == true) || defined(__DOXYGEN__)
138
/**
139
 * @brief   Shell prompt text.
140
 */
141
extern ROMCONST char* moduleShellPrompt;
142
#endif
143
144
/**
145
 * @brief   Interrupt initialization macro.
146
 * @note    SSSP related interrupt signals are already initialized in 'aos_system.c'.
147
 */
148
#define MODULE_INIT_INTERRUPTS() {                                            \
149
  /* user button */                                                           \
150
  palSetPadCallback(moduleGpioUserButton.gpio->port, moduleGpioUserButton.gpio->pad, _intCallback, &moduleGpioUserButton.gpio->pad);  \
151
  palEnablePadEvent(moduleGpioUserButton.gpio->port, moduleGpioUserButton.gpio->pad, APAL2CH_EDGE(moduleGpioUserButton.meta.edge));   \
152
}
153
154
/**
155
 * @brief   Unit test initialization hook.
156
 */
157
#define MODULE_INIT_TESTS() {                                                 \
158
  /* add unit-test shell commands */                                          \
159
}
160
161
/**
162
 * @brief   Periphery communication interfaces initialization hook.
163
 */
164
#define MODULE_INIT_PERIPHERY_COMM() {                                        \
165
  /* serial driver */                                                         \
166
  sdStart(&MODULE_HAL_PROGIF, &moduleHalProgIfConfig);                        \
167
}
168
169
/**
170
 * @brief   Periphery communication interface deinitialization hook.
171
 */
172
#define MODULE_SHUTDOWN_PERIPHERY_COMM() {                                    \
173
}
174
175
/**
176
 * @brief   HOOK to toggle the LEDs when the user button is pressed.
177
 */
178 514ae7d6 Thomas Schöpping
#define MODULE_MAIN_LOOP_IO_EVENT(eventflags) {                    \
179 07ff44a7 Thomas Schöpping
  if (eventflags & MODULE_OS_IOEVENTFLAGS_USERBUTTON) {                       \
180 c9cecdb6 Thomas Schöpping
    apalControlGpioState_t buttonstate;                                       \
181
    apalControlGpioGet(&moduleGpioUserButton, &buttonstate);                  \
182
    apalControlGpioSet(&moduleGpioLedRed, buttonstate);                       \
183
    apalControlGpioSet(&moduleGpioLedGreen, buttonstate);                     \
184
    apalControlGpioSet(&moduleGpioLedBlue, buttonstate);                      \
185
    apalControlGpioSet(&moduleGpioLedOrange, buttonstate);                    \
186 07ff44a7 Thomas Schöpping
  }                                                                           \
187
}
188
189
/** @} */
190
191
/*===========================================================================*/
192
/**
193
 * @name Startup Shutdown Synchronization Protocol (SSSP)
194
 * @{
195
 */
196
/*===========================================================================*/
197
198
/** @} */
199
200
/*===========================================================================*/
201
/**
202
 * @name Low-level drivers
203
 * @{
204
 */
205
/*===========================================================================*/
206
207
/** @} */
208
209
/*===========================================================================*/
210
/**
211
 * @name Unit tests (UT)
212
 * @{
213
 */
214
/*===========================================================================*/
215
#if (AMIROOS_CFG_TESTS_ENABLE == true) || defined(__DOXYGEN__)
216
217
#endif /* AMIROOS_CFG_TESTS_ENABLE == true */
218
219
/** @} */
220
221
#endif /* _AMIROOS_MODULE_H_ */
222
223
/** @} */