Paparazzi UAS  v5.14.0_stable-0-g3f680d1
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  static bool last_status = false;
222 
223  (void)sdcp;
224  return !palReadPad(GPIOB, GPIOB_SDIO_DETECT);
225 }
226 
230 bool sdc_lld_is_write_protected(SDCDriver *sdcp) {
231 
232  (void)sdcp;
233  return false;
234 }
235 #endif /* HAL_USE_SDC */
236 
237 #if HAL_USE_MMC_SPI || defined(__DOXYGEN__)
238 
241 bool mmc_lld_is_card_inserted(MMCDriver *mmcp) {
242 
243  (void)mmcp;
244  /* TODO: Fill the implementation.*/
245  return true;
246 }
247 
251 bool mmc_lld_is_write_protected(MMCDriver *mmcp) {
252 
253  (void)mmcp;
254  /* TODO: Fill the implementation.*/
255  return false;
256 }
257 #endif
258 
263 void boardInit(void) {
264 }
#define VAL_GPIOG_ODR
Definition: board.h:1466
#define VAL_GPIOB_ODR
Definition: board.h:951
#define GPIOA
Definition: gpio_arch.h:34
#define VAL_GPIOC_AFRL
Definition: board.h:1071
#define VAL_GPIOK_AFRH
Definition: board.h:1904
#define VAL_GPIOE_AFRL
Definition: board.h:1277
void __early_init(void)
Early initialization code.
Definition: board.c:210
#define VAL_GPIOB_PUPDR
Definition: board.h:934
#define GPIOG
Definition: gpio_arch.h:38
#define VAL_GPIOG_AFRL
Definition: board.h:1483
#define VAL_GPIOJ_OTYPER
Definition: board.h:1724
#define VAL_GPIOA_OSPEEDR
Definition: board.h:814
#define VAL_GPIOE_MODER
Definition: board.h:1192
uint32_t odr
Definition: board.c:45
#define GPIOC
Definition: gpio_arch.h:34
#define VAL_GPIOD_PUPDR
Definition: board.h:1140
#define VAL_GPIOB_AFRL
Definition: board.h:968
#define VAL_GPIOC_AFRH
Definition: board.h:1080
#define VAL_GPIOJ_OSPEEDR
Definition: board.h:1741
uint32_t afrh
Definition: board.c:47
#define GPIOB
Definition: gpio_arch.h:35
#define VAL_GPIOC_PUPDR
Definition: board.h:1037
uint32_t afrl
Definition: board.c:46
#define VAL_GPIOJ_ODR
Definition: board.h:1775
#define VAL_GPIOC_OSPEEDR
Definition: board.h:1020
#define VAL_GPIOJ_PUPDR
Definition: board.h:1758
#define VAL_GPIOF_AFRL
Definition: board.h:1380
#define VAL_GPIOA_MODER
Definition: board.h:780
#define VAL_GPIOE_AFRH
Definition: board.h:1286
static void gpio_init(stm32_gpio_t *gpiop, const gpio_setup_t *config)
Definition: board.c:143
static void stm32_gpio_init(void)
Definition: board.c:154
#define VAL_GPIOG_OSPEEDR
Definition: board.h:1432
#define VAL_GPIOH_ODR
Definition: board.h:1569
#define VAL_GPIOD_ODR
Definition: board.h:1157
#define VAL_GPIOH_MODER
Definition: board.h:1501
#define VAL_GPIOI_AFRL
Definition: board.h:1689
Type of STM32 GPIO port setup.
Definition: board.c:40
#define VAL_GPIOB_OSPEEDR
Definition: board.h:917
#define VAL_GPIOB_MODER
Definition: board.h:883
uint32_t otyper
Definition: board.c:42
#define VAL_GPIOF_ODR
Definition: board.h:1363
#define VAL_GPIOE_OSPEEDR
Definition: board.h:1226
#define VAL_GPIOF_PUPDR
Definition: board.h:1346
#define VAL_GPIOJ_AFRH
Definition: board.h:1801
#define VAL_GPIOK_OSPEEDR
Definition: board.h:1844
#define GPIOD
Definition: gpio_arch.h:35
#define VAL_GPIOI_OSPEEDR
Definition: board.h:1638
#define VAL_GPIOE_PUPDR
Definition: board.h:1243
#define VAL_GPIOC_ODR
Definition: board.h:1054
#define VAL_GPIOH_PUPDR
Definition: board.h:1552
static const gpio_config_t gpio_default_config
STM32 GPIO static initialization data.
Definition: board.c:92
#define VAL_GPIOD_OSPEEDR
Definition: board.h:1123
#define VAL_GPIOE_OTYPER
Definition: board.h:1209
#define VAL_GPIOC_OTYPER
Definition: board.h:1003
#define VAL_GPIOG_AFRH
Definition: board.h:1492
unsigned long uint32_t
Definition: types.h:18
#define VAL_GPIOG_MODER
Definition: board.h:1398
#define VAL_GPIOK_MODER
Definition: board.h:1810
#define VAL_GPIOH_AFRH
Definition: board.h:1595
#define VAL_GPIOE_ODR
Definition: board.h:1260
#define VAL_GPIOK_ODR
Definition: board.h:1878
#define VAL_GPIOA_PUPDR
Definition: board.h:831
#define VAL_GPIOF_MODER
Definition: board.h:1295
#define VAL_GPIOB_OTYPER
Definition: board.h:900
#define VAL_GPIOH_AFRL
Definition: board.h:1586
#define VAL_GPIOK_PUPDR
Definition: board.h:1861
#define VAL_GPIOI_AFRH
Definition: board.h:1698
#define VAL_GPIOI_MODER
Definition: board.h:1604
#define VAL_GPIOA_ODR
Definition: board.h:848
#define VAL_GPIOA_OTYPER
Definition: board.h:797
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:39
#define VAL_GPIOF_AFRH
Definition: board.h:1389
#define VAL_GPIOK_OTYPER
Definition: board.h:1827
uint32_t ospeedr
Definition: board.c:43
#define VAL_GPIOI_PUPDR
Definition: board.h:1655
#define VAL_GPIOD_MODER
Definition: board.h:1089
#define VAL_GPIOD_AFRH
Definition: board.h:1183
#define VAL_GPIOF_OTYPER
Definition: board.h:1312
#define VAL_GPIOG_OTYPER
Definition: board.h:1415
#define VAL_GPIOI_OTYPER
Definition: board.h:1621
#define VAL_GPIOJ_AFRL
Definition: board.h:1792
#define VAL_GPIOI_ODR
Definition: board.h:1672
#define VAL_GPIOD_OTYPER
Definition: board.h:1106
#define VAL_GPIOG_PUPDR
Definition: board.h:1449
#define VAL_GPIOH_OSPEEDR
Definition: board.h:1535
Type of STM32 GPIO initialization data.
Definition: board.c:53
#define GPIOE
Definition: gpio_arch.h:36
#define VAL_GPIOB_AFRH
Definition: board.h:977
#define GPIOF
Definition: gpio_arch.h:37
uint32_t pupdr
Definition: board.c:44
#define VAL_GPIOC_MODER
Definition: board.h:986
#define VAL_GPIOA_AFRH
Definition: board.h:874
#define VAL_GPIOJ_MODER
Definition: board.h:1707
uint32_t moder
Definition: board.c:41
#define VAL_GPIOK_AFRL
Definition: board.h:1895
#define VAL_GPIOH_OTYPER
Definition: board.h:1518
#define VAL_GPIOD_AFRL
Definition: board.h:1174
#define VAL_GPIOA_AFRL
Definition: board.h:865
#define VAL_GPIOF_OSPEEDR
Definition: board.h:1329