Revision 0128be0f modules/PowerManagement_1-1/board.c
modules/PowerManagement_1-1/board.c | ||
---|---|---|
17 | 17 |
*/ |
18 | 18 |
|
19 | 19 |
#include <hal.h> |
20 |
#include <stm32_gpio.h> |
|
20 | 21 |
|
21 |
#if HAL_USE_PAL || defined(__DOXYGEN__) |
|
22 | 22 |
/** |
23 |
* @brief PAL setup. |
|
24 |
* @details Digital I/O ports static configuration as defined in @p board.h. |
|
25 |
* This variable is used by the HAL when initializing the PAL driver. |
|
23 |
* @brief Type of STM32 GPIO port setup. |
|
26 | 24 |
*/ |
27 |
const PALConfig pal_default_config = { |
|
25 |
typedef struct { |
|
26 |
uint32_t moder; |
|
27 |
uint32_t otyper; |
|
28 |
uint32_t ospeedr; |
|
29 |
uint32_t pupdr; |
|
30 |
uint32_t odr; |
|
31 |
uint32_t afrl; |
|
32 |
uint32_t afrh; |
|
33 |
} gpio_setup_t; |
|
34 |
|
|
35 |
/** |
|
36 |
* @brief Type of STM32 GPIO initialization data. |
|
37 |
*/ |
|
38 |
typedef struct { |
|
39 |
#if STM32_HAS_GPIOA || defined(__DOXYGEN__) |
|
40 |
gpio_setup_t PAData; |
|
41 |
#endif |
|
42 |
#if STM32_HAS_GPIOB || defined(__DOXYGEN__) |
|
43 |
gpio_setup_t PBData; |
|
44 |
#endif |
|
45 |
#if STM32_HAS_GPIOC || defined(__DOXYGEN__) |
|
46 |
gpio_setup_t PCData; |
|
47 |
#endif |
|
48 |
#if STM32_HAS_GPIOD || defined(__DOXYGEN__) |
|
49 |
gpio_setup_t PDData; |
|
50 |
#endif |
|
51 |
#if STM32_HAS_GPIOE || defined(__DOXYGEN__) |
|
52 |
gpio_setup_t PEData; |
|
53 |
#endif |
|
54 |
#if STM32_HAS_GPIOF || defined(__DOXYGEN__) |
|
55 |
gpio_setup_t PFData; |
|
56 |
#endif |
|
57 |
#if STM32_HAS_GPIOG || defined(__DOXYGEN__) |
|
58 |
gpio_setup_t PGData; |
|
59 |
#endif |
|
60 |
#if STM32_HAS_GPIOH || defined(__DOXYGEN__) |
|
61 |
gpio_setup_t PHData; |
|
62 |
#endif |
|
63 |
#if STM32_HAS_GPIOI || defined(__DOXYGEN__) |
|
64 |
gpio_setup_t PIData; |
|
65 |
#endif |
|
66 |
#if STM32_HAS_GPIOJ || defined(__DOXYGEN__) |
|
67 |
gpio_setup_t PJData; |
|
68 |
#endif |
|
69 |
#if STM32_HAS_GPIOK || defined(__DOXYGEN__) |
|
70 |
gpio_setup_t PKData; |
|
71 |
#endif |
|
72 |
} gpio_config_t; |
|
73 |
|
|
74 |
/** |
|
75 |
* @brief STM32 GPIO static initialization data. |
|
76 |
*/ |
|
77 |
static const gpio_config_t gpio_default_config = { |
|
28 | 78 |
#if STM32_HAS_GPIOA |
29 | 79 |
{VAL_GPIOA_MODER, VAL_GPIOA_OTYPER, VAL_GPIOA_OSPEEDR, VAL_GPIOA_PUPDR, |
30 | 80 |
VAL_GPIOA_ODR, VAL_GPIOA_AFRL, VAL_GPIOA_AFRH}, |
... | ... | |
59 | 109 |
#endif |
60 | 110 |
#if STM32_HAS_GPIOI |
61 | 111 |
{VAL_GPIOI_MODER, VAL_GPIOI_OTYPER, VAL_GPIOI_OSPEEDR, VAL_GPIOI_PUPDR, |
62 |
VAL_GPIOI_ODR, VAL_GPIOI_AFRL, VAL_GPIOI_AFRH} |
|
112 |
VAL_GPIOI_ODR, VAL_GPIOI_AFRL, VAL_GPIOI_AFRH}, |
|
113 |
#endif |
|
114 |
#if STM32_HAS_GPIOJ |
|
115 |
{VAL_GPIOJ_MODER, VAL_GPIOJ_OTYPER, VAL_GPIOJ_OSPEEDR, VAL_GPIOJ_PUPDR, |
|
116 |
VAL_GPIOJ_ODR, VAL_GPIOJ_AFRL, VAL_GPIOJ_AFRH}, |
|
117 |
#endif |
|
118 |
#if STM32_HAS_GPIOK |
|
119 |
{VAL_GPIOK_MODER, VAL_GPIOK_OTYPER, VAL_GPIOK_OSPEEDR, VAL_GPIOK_PUPDR, |
|
120 |
VAL_GPIOK_ODR, VAL_GPIOK_AFRL, VAL_GPIOK_AFRH} |
|
63 | 121 |
#endif |
64 | 122 |
}; |
123 |
|
|
124 |
/** |
|
125 |
* @brief GPIO initialization. |
|
126 |
* |
|
127 |
* @param[in] gpiop GPIO register block. |
|
128 |
* @param[in] config GPIO configuration. |
|
129 |
*/ |
|
130 |
static void gpio_init(stm32_gpio_t *gpiop, const gpio_setup_t *config) { |
|
131 |
|
|
132 |
gpiop->OTYPER = config->otyper; |
|
133 |
gpiop->OSPEEDR = config->ospeedr; |
|
134 |
gpiop->PUPDR = config->pupdr; |
|
135 |
gpiop->ODR = config->odr; |
|
136 |
gpiop->AFRL = config->afrl; |
|
137 |
gpiop->AFRH = config->afrh; |
|
138 |
gpiop->MODER = config->moder; |
|
139 |
} |
|
140 |
|
|
141 |
/** |
|
142 |
* @brief GPIO initilization for all ports. |
|
143 |
*/ |
|
144 |
static void stm32_gpio_init(void) { |
|
145 |
|
|
146 |
/* Enabling GPIO-related clocks, the mask comes from the |
|
147 |
registry header file.*/ |
|
148 |
rccResetAHB1(STM32_GPIO_EN_MASK); |
|
149 |
rccEnableAHB1(STM32_GPIO_EN_MASK, true); |
|
150 |
|
|
151 |
/* Initializing all the defined GPIO ports.*/ |
|
152 |
#if STM32_HAS_GPIOA |
|
153 |
gpio_init(GPIOA, &gpio_default_config.PAData); |
|
154 |
#endif |
|
155 |
#if STM32_HAS_GPIOB |
|
156 |
gpio_init(GPIOB, &gpio_default_config.PBData); |
|
157 |
#endif |
|
158 |
#if STM32_HAS_GPIOC |
|
159 |
gpio_init(GPIOC, &gpio_default_config.PCData); |
|
160 |
#endif |
|
161 |
#if STM32_HAS_GPIOD |
|
162 |
gpio_init(GPIOD, &gpio_default_config.PDData); |
|
163 |
#endif |
|
164 |
#if STM32_HAS_GPIOE |
|
165 |
gpio_init(GPIOE, &gpio_default_config.PEData); |
|
166 |
#endif |
|
167 |
#if STM32_HAS_GPIOF |
|
168 |
gpio_init(GPIOF, &gpio_default_config.PFData); |
|
169 |
#endif |
|
170 |
#if STM32_HAS_GPIOG |
|
171 |
gpio_init(GPIOG, &gpio_default_config.PGData); |
|
172 |
#endif |
|
173 |
#if STM32_HAS_GPIOH |
|
174 |
gpio_init(GPIOH, &gpio_default_config.PHData); |
|
175 |
#endif |
|
176 |
#if STM32_HAS_GPIOI |
|
177 |
gpio_init(GPIOI, &gpio_default_config.PIData); |
|
65 | 178 |
#endif |
179 |
#if STM32_HAS_GPIOJ |
|
180 |
gpio_init(GPIOJ, &gpio_default_config.PJData); |
|
181 |
#endif |
|
182 |
#if STM32_HAS_GPIOK |
|
183 |
gpio_init(GPIOK, &gpio_default_config.PKData); |
|
184 |
#endif |
|
185 |
} |
|
66 | 186 |
|
67 | 187 |
/** |
68 | 188 |
* @brief Early initialization code. |
... | ... | |
71 | 191 |
*/ |
72 | 192 |
void __early_init(void) { |
73 | 193 |
|
194 |
stm32_gpio_init(); |
|
74 | 195 |
stm32_clock_init(); |
75 | 196 |
} |
76 | 197 |
|
Also available in: Unified diff