Paparazzi UAS  v5.15_devel-230-gc96ce27
Paparazzi is a free software Unmanned Aircraft System.
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
board.c
Go to the documentation of this file.
1 /*
2  ChibiOS - Copyright (C) 2006..2018 Giovanni Di Sirio
3 
4  Licensed under the Apache License, Version 2.0 (the "License");
5  you may not use this file except in compliance with the License.
6  You may obtain a copy of the License at
7 
8  http://www.apache.org/licenses/LICENSE-2.0
9 
10  Unless required by applicable law or agreed to in writing, software
11  distributed under the License is distributed on an "AS IS" BASIS,
12  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  See the License for the specific language governing permissions and
14  limitations under the License.
15 */
16 
17 /*
18  * This file has been automatically generated using ChibiStudio board
19  * generator plugin. Do not edit manually.
20  */
21 
22 #include "hal.h"
23 #include "stm32_gpio.h"
24 
25 /*===========================================================================*/
26 /* Driver local definitions. */
27 /*===========================================================================*/
28 
29 /*===========================================================================*/
30 /* Driver exported variables. */
31 /*===========================================================================*/
32 
33 /*===========================================================================*/
34 /* Driver local variables and types. */
35 /*===========================================================================*/
36 
40 typedef struct {
41  uint32_t moder;
42  uint32_t otyper;
43  uint32_t ospeedr;
44  uint32_t pupdr;
45  uint32_t odr;
46  uint32_t afrl;
47  uint32_t afrh;
48 } gpio_setup_t;
49 
53 typedef struct {
54 #if STM32_HAS_GPIOA || defined(__DOXYGEN__)
55  gpio_setup_t PAData;
56 #endif
57 #if STM32_HAS_GPIOB || defined(__DOXYGEN__)
58  gpio_setup_t PBData;
59 #endif
60 #if STM32_HAS_GPIOC || defined(__DOXYGEN__)
61  gpio_setup_t PCData;
62 #endif
63 #if STM32_HAS_GPIOD || defined(__DOXYGEN__)
64  gpio_setup_t PDData;
65 #endif
66 #if STM32_HAS_GPIOE || defined(__DOXYGEN__)
67  gpio_setup_t PEData;
68 #endif
69 #if STM32_HAS_GPIOF || defined(__DOXYGEN__)
70  gpio_setup_t PFData;
71 #endif
72 #if STM32_HAS_GPIOG || defined(__DOXYGEN__)
73  gpio_setup_t PGData;
74 #endif
75 #if STM32_HAS_GPIOH || defined(__DOXYGEN__)
76  gpio_setup_t PHData;
77 #endif
78 #if STM32_HAS_GPIOI || defined(__DOXYGEN__)
79  gpio_setup_t PIData;
80 #endif
81 #if STM32_HAS_GPIOJ || defined(__DOXYGEN__)
82  gpio_setup_t PJData;
83 #endif
84 #if STM32_HAS_GPIOK || defined(__DOXYGEN__)
85  gpio_setup_t PKData;
86 #endif
88 
93 #if STM32_HAS_GPIOA
96 #endif
97 #if STM32_HAS_GPIOB
100 #endif
101 #if STM32_HAS_GPIOC
104 #endif
105 #if STM32_HAS_GPIOD
108 #endif
109 #if STM32_HAS_GPIOE
112 #endif
113 #if STM32_HAS_GPIOF
116 #endif
117 #if STM32_HAS_GPIOG
120 #endif
121 #if STM32_HAS_GPIOH
124 #endif
125 #if STM32_HAS_GPIOI
128 #endif
129 #if STM32_HAS_GPIOJ
132 #endif
133 #if STM32_HAS_GPIOK
136 #endif
137 };
138 
139 /*===========================================================================*/
140 /* Driver local functions. */
141 /*===========================================================================*/
142 
143 static void gpio_init(stm32_gpio_t *gpiop, const gpio_setup_t *config) {
144 
145  gpiop->OTYPER = config->otyper;
146  gpiop->OSPEEDR = config->ospeedr;
147  gpiop->PUPDR = config->pupdr;
148  gpiop->ODR = config->odr;
149  gpiop->AFRL = config->afrl;
150  gpiop->AFRH = config->afrh;
151  gpiop->MODER = config->moder;
152 }
153 
154 static void stm32_gpio_init(void) {
155 
156  /* Enabling GPIO-related clocks, the mask comes from the
157  registry header file.*/
158  rccResetAHB1(STM32_GPIO_EN_MASK);
159  rccEnableAHB1(STM32_GPIO_EN_MASK, true);
160 
161  /* Initializing all the defined GPIO ports.*/
162 #if STM32_HAS_GPIOA
163  gpio_init(GPIOA, &gpio_default_config.PAData);
164 #endif
165 #if STM32_HAS_GPIOB
166  gpio_init(GPIOB, &gpio_default_config.PBData);
167 #endif
168 #if STM32_HAS_GPIOC
169  gpio_init(GPIOC, &gpio_default_config.PCData);
170 #endif
171 #if STM32_HAS_GPIOD
172  gpio_init(GPIOD, &gpio_default_config.PDData);
173 #endif
174 #if STM32_HAS_GPIOE
175  gpio_init(GPIOE, &gpio_default_config.PEData);
176 #endif
177 #if STM32_HAS_GPIOF
178  gpio_init(GPIOF, &gpio_default_config.PFData);
179 #endif
180 #if STM32_HAS_GPIOG
181  gpio_init(GPIOG, &gpio_default_config.PGData);
182 #endif
183 #if STM32_HAS_GPIOH
184  gpio_init(GPIOH, &gpio_default_config.PHData);
185 #endif
186 #if STM32_HAS_GPIOI
187  gpio_init(GPIOI, &gpio_default_config.PIData);
188 #endif
189 #if STM32_HAS_GPIOJ
190  gpio_init(GPIOJ, &gpio_default_config.PJData);
191 #endif
192 #if STM32_HAS_GPIOK
193  gpio_init(GPIOK, &gpio_default_config.PKData);
194 #endif
195 }
196 
197 /*===========================================================================*/
198 /* Driver interrupt handlers. */
199 /*===========================================================================*/
200 
201 /*===========================================================================*/
202 /* Driver exported functions. */
203 /*===========================================================================*/
204 
210 void __early_init(void) {
211 
212  stm32_gpio_init();
213  stm32_clock_init();
214 }
215 
216 #if HAL_USE_SDC || defined(__DOXYGEN__)
217 
220 bool sdc_lld_is_card_inserted(SDCDriver *sdcp) {
221  (void)sdcp;
222  return !palReadLine(LINE_SDIO_DETECT);
223 }
224 
228 bool sdc_lld_is_write_protected(SDCDriver *sdcp) {
229 
230  (void)sdcp;
231  return false;
232 }
233 #endif /* HAL_USE_SDC */
234 
235 #if HAL_USE_MMC_SPI || defined(__DOXYGEN__)
236 
239 bool mmc_lld_is_card_inserted(MMCDriver *mmcp) {
240 
241  (void)mmcp;
242  /* TODO: Fill the implementation.*/
243  return true;
244 }
245 
249 bool mmc_lld_is_write_protected(MMCDriver *mmcp) {
250 
251  (void)mmcp;
252  /* TODO: Fill the implementation.*/
253  return false;
254 }
255 #endif
256 
261 void boardInit(void) {
262 }
263 
static void stm32_gpio_init(void)
Definition: board.c:154
#define VAL_GPIOG_ODR
Definition: board.h:1557
#define VAL_GPIOB_ODR
Definition: board.h:1042
#define GPIOA
Definition: gpio_arch.h:36
#define VAL_GPIOC_AFRL
Definition: board.h:1162
#define VAL_GPIOK_AFRH
Definition: board.h:1995
#define VAL_GPIOE_AFRL
Definition: board.h:1368
void __early_init(void)
Early initialization code.
Definition: board.c:210
#define VAL_GPIOB_PUPDR
Definition: board.h:1025
#define GPIOG
Definition: gpio_arch.h:40
static void gpio_init(stm32_gpio_t *gpiop, const gpio_setup_t *config)
Definition: board.c:143
#define VAL_GPIOG_AFRL
Definition: board.h:1574
#define VAL_GPIOJ_OTYPER
Definition: board.h:1815
#define VAL_GPIOA_OSPEEDR
Definition: board.h:905
#define VAL_GPIOE_MODER
Definition: board.h:1283
uint32_t odr
Definition: board.c:45
#define LINE_SDIO_DETECT
Definition: board.h:824
#define GPIOC
Definition: gpio_arch.h:36
#define VAL_GPIOD_PUPDR
Definition: board.h:1231
#define VAL_GPIOB_AFRL
Definition: board.h:1059
#define VAL_GPIOC_AFRH
Definition: board.h:1171
#define VAL_GPIOJ_OSPEEDR
Definition: board.h:1832
uint32_t afrh
Definition: board.c:47
#define GPIOB
Definition: gpio_arch.h:37
#define VAL_GPIOC_PUPDR
Definition: board.h:1128
uint32_t afrl
Definition: board.c:46
#define VAL_GPIOJ_ODR
Definition: board.h:1866
#define VAL_GPIOC_OSPEEDR
Definition: board.h:1111
#define VAL_GPIOJ_PUPDR
Definition: board.h:1849
#define VAL_GPIOF_AFRL
Definition: board.h:1471
#define VAL_GPIOA_MODER
Definition: board.h:871
#define VAL_GPIOE_AFRH
Definition: board.h:1377
#define VAL_GPIOG_OSPEEDR
Definition: board.h:1523
#define VAL_GPIOH_ODR
Definition: board.h:1660
#define VAL_GPIOD_ODR
Definition: board.h:1248
#define VAL_GPIOH_MODER
Definition: board.h:1592
#define VAL_GPIOI_AFRL
Definition: board.h:1780
Type of STM32 GPIO port setup.
Definition: board.c:40
#define VAL_GPIOB_OSPEEDR
Definition: board.h:1008
#define VAL_GPIOB_MODER
Definition: board.h:974
uint32_t otyper
Definition: board.c:42
#define VAL_GPIOF_ODR
Definition: board.h:1454
#define VAL_GPIOE_OSPEEDR
Definition: board.h:1317
#define VAL_GPIOF_PUPDR
Definition: board.h:1437
#define VAL_GPIOJ_AFRH
Definition: board.h:1892
#define VAL_GPIOK_OSPEEDR
Definition: board.h:1935
#define GPIOD
Definition: gpio_arch.h:37
#define VAL_GPIOI_OSPEEDR
Definition: board.h:1729
#define VAL_GPIOE_PUPDR
Definition: board.h:1334
#define VAL_GPIOC_ODR
Definition: board.h:1145
#define VAL_GPIOH_PUPDR
Definition: board.h:1643
#define VAL_GPIOD_OSPEEDR
Definition: board.h:1214
#define VAL_GPIOE_OTYPER
Definition: board.h:1300
#define VAL_GPIOC_OTYPER
Definition: board.h:1094
#define VAL_GPIOG_AFRH
Definition: board.h:1583
unsigned long uint32_t
Definition: types.h:18
static const gpio_config_t gpio_default_config
STM32 GPIO static initialization data.
Definition: board.c:92
#define VAL_GPIOG_MODER
Definition: board.h:1489
#define VAL_GPIOK_MODER
Definition: board.h:1901
#define VAL_GPIOH_AFRH
Definition: board.h:1686
#define VAL_GPIOE_ODR
Definition: board.h:1351
#define VAL_GPIOK_ODR
Definition: board.h:1969
#define VAL_GPIOA_PUPDR
Definition: board.h:922
#define VAL_GPIOF_MODER
Definition: board.h:1386
#define VAL_GPIOB_OTYPER
Definition: board.h:991
#define VAL_GPIOH_AFRL
Definition: board.h:1677
#define VAL_GPIOK_PUPDR
Definition: board.h:1952
#define VAL_GPIOI_AFRH
Definition: board.h:1789
#define VAL_GPIOI_MODER
Definition: board.h:1695
#define VAL_GPIOA_ODR
Definition: board.h:939
#define VAL_GPIOA_OTYPER
Definition: board.h:888
static const struct usb_config_descriptor config
Definition: usb_ser_hw.c:199
void boardInit(void)
Board-specific initialization code.
Definition: board.c:261
#define GPIOH
Definition: gpio_arch.h:41
#define VAL_GPIOF_AFRH
Definition: board.h:1480
#define VAL_GPIOK_OTYPER
Definition: board.h:1918
uint32_t ospeedr
Definition: board.c:43
#define VAL_GPIOI_PUPDR
Definition: board.h:1746
#define VAL_GPIOD_MODER
Definition: board.h:1180
#define VAL_GPIOD_AFRH
Definition: board.h:1274
#define VAL_GPIOF_OTYPER
Definition: board.h:1403
#define VAL_GPIOG_OTYPER
Definition: board.h:1506
#define VAL_GPIOI_OTYPER
Definition: board.h:1712
#define VAL_GPIOJ_AFRL
Definition: board.h:1883
#define VAL_GPIOI_ODR
Definition: board.h:1763
#define VAL_GPIOD_OTYPER
Definition: board.h:1197
#define VAL_GPIOG_PUPDR
Definition: board.h:1540
#define VAL_GPIOH_OSPEEDR
Definition: board.h:1626
Type of STM32 GPIO initialization data.
Definition: board.c:53
#define GPIOE
Definition: gpio_arch.h:38
#define VAL_GPIOB_AFRH
Definition: board.h:1068
#define GPIOF
Definition: gpio_arch.h:39
uint32_t pupdr
Definition: board.c:44
#define VAL_GPIOC_MODER
Definition: board.h:1077
#define VAL_GPIOA_AFRH
Definition: board.h:965
#define VAL_GPIOJ_MODER
Definition: board.h:1798
uint32_t moder
Definition: board.c:41
#define VAL_GPIOK_AFRL
Definition: board.h:1986
#define VAL_GPIOH_OTYPER
Definition: board.h:1609
#define VAL_GPIOD_AFRL
Definition: board.h:1265
#define VAL_GPIOA_AFRL
Definition: board.h:956
#define VAL_GPIOF_OSPEEDR
Definition: board.h:1420