RTEMS 7.0-rc1
Loading...
Searching...
No Matches
rcc.h
Go to the documentation of this file.
1/* SPDX-License-Identifier: BSD-2-Clause */
2
9/*
10 * Copyright (C) 2012 Sebastian Huber
11 *
12 * Redistribution and use in source and binary forms, with or without
13 * modification, are permitted provided that the following conditions
14 * are met:
15 * 1. Redistributions of source code must retain the above copyright
16 * notice, this list of conditions and the following disclaimer.
17 * 2. Redistributions in binary form must reproduce the above copyright
18 * notice, this list of conditions and the following disclaimer in the
19 * documentation and/or other materials provided with the distribution.
20 *
21 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
22 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
25 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
26 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
27 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
28 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
29 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
30 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
31 * POSSIBILITY OF SUCH DAMAGE.
32 */
33
34#ifndef LIBBSP_ARM_STM32F4_RCC_H
35#define LIBBSP_ARM_STM32F4_RCC_H
36
37#include <stdbool.h>
38#include <bspopts.h>
39
40#ifdef __cplusplus
41extern "C" {
42#endif /* __cplusplus */
43
51#define STM32F4_RCC_INDEX(reg, idx) (((reg) << 5) | (idx))
52
53typedef enum {
54#ifdef STM32F4_FAMILY_F4XXXX
55
61 STM32F4_RCC_OTGHS = STM32F4_RCC_INDEX(0, 29),
62 STM32F4_RCC_ETHMAC = STM32F4_RCC_INDEX(0, 25),
63 STM32F4_RCC_DMA2 = STM32F4_RCC_INDEX(0, 22),
64 STM32F4_RCC_DMA1 = STM32F4_RCC_INDEX(0, 21),
65 STM32F4_RCC_CRC = STM32F4_RCC_INDEX(0, 12),
66 STM32F4_RCC_GPIOI = STM32F4_RCC_INDEX(0, 8),
67 STM32F4_RCC_GPIOH = STM32F4_RCC_INDEX(0, 7),
68 STM32F4_RCC_GPIOG = STM32F4_RCC_INDEX(0, 6),
69 STM32F4_RCC_GPIOF = STM32F4_RCC_INDEX(0, 5),
70 STM32F4_RCC_GPIOE = STM32F4_RCC_INDEX(0, 4),
71 STM32F4_RCC_GPIOD = STM32F4_RCC_INDEX(0, 3),
72 STM32F4_RCC_GPIOC = STM32F4_RCC_INDEX(0, 2),
73 STM32F4_RCC_GPIOB = STM32F4_RCC_INDEX(0, 1),
74 STM32F4_RCC_GPIOA = STM32F4_RCC_INDEX(0, 0),
75
76 STM32F4_RCC_OTGFS = STM32F4_RCC_INDEX(1, 7),
77 STM32F4_RCC_RNG = STM32F4_RCC_INDEX(1, 6),
78 STM32F4_RCC_HASH = STM32F4_RCC_INDEX(1, 5),
79 STM32F4_RCC_CRYP = STM32F4_RCC_INDEX(1, 4),
80 STM32F4_RCC_DCMI = STM32F4_RCC_INDEX(1, 0),
81
82 STM32F4_RCC_FSMCR = STM32F4_RCC_INDEX(2, 0),
83
84 STM32F4_RCC_DAC = STM32F4_RCC_INDEX(4, 29),
85 STM32F4_RCC_PWR = STM32F4_RCC_INDEX(4, 28),
86 STM32F4_RCC_CAN2 = STM32F4_RCC_INDEX(4, 26),
87 STM32F4_RCC_CAN1 = STM32F4_RCC_INDEX(4, 25),
88 STM32F4_RCC_I2C3 = STM32F4_RCC_INDEX(4, 23),
89 STM32F4_RCC_I2C2 = STM32F4_RCC_INDEX(4, 22),
90 STM32F4_RCC_I2C1 = STM32F4_RCC_INDEX(4, 21),
91 STM32F4_RCC_UART5 = STM32F4_RCC_INDEX(4, 20),
92 STM32F4_RCC_UART4 = STM32F4_RCC_INDEX(4, 19),
93 STM32F4_RCC_USART3 = STM32F4_RCC_INDEX(4, 18),
94 STM32F4_RCC_USART2 = STM32F4_RCC_INDEX(4, 17),
95 STM32F4_RCC_SPI3 = STM32F4_RCC_INDEX(4, 15),
96 STM32F4_RCC_SPI2 = STM32F4_RCC_INDEX(4, 14),
97 STM32F4_RCC_WWDG = STM32F4_RCC_INDEX(4, 11),
98 STM32F4_RCC_TIM14 = STM32F4_RCC_INDEX(4, 8),
99 STM32F4_RCC_TIM13 = STM32F4_RCC_INDEX(4, 7),
100 STM32F4_RCC_TIM12 = STM32F4_RCC_INDEX(4, 6),
101 STM32F4_RCC_TIM7 = STM32F4_RCC_INDEX(4, 5),
102 STM32F4_RCC_TIM6 = STM32F4_RCC_INDEX(4, 4),
103 STM32F4_RCC_TIM5 = STM32F4_RCC_INDEX(4, 3),
104 STM32F4_RCC_TIM4 = STM32F4_RCC_INDEX(4, 2),
105 STM32F4_RCC_TIM3 = STM32F4_RCC_INDEX(4, 1),
106 STM32F4_RCC_TIM2 = STM32F4_RCC_INDEX(4, 0),
107
108 STM32F4_RCC_TIM11 = STM32F4_RCC_INDEX(5, 18),
109 STM32F4_RCC_TIM10 = STM32F4_RCC_INDEX(5, 17),
110 STM32F4_RCC_TIM9 = STM32F4_RCC_INDEX(5, 16),
111 STM32F4_RCC_SYSCFG = STM32F4_RCC_INDEX(5, 14),
112 STM32F4_RCC_SPI1 = STM32F4_RCC_INDEX(5, 12),
113 STM32F4_RCC_SDIO = STM32F4_RCC_INDEX(5, 11),
114 STM32F4_RCC_ADC3 = STM32F4_RCC_INDEX(5, 10),
115 STM32F4_RCC_ADC2 = STM32F4_RCC_INDEX(5, 9),
116 STM32F4_RCC_ADC1 = STM32F4_RCC_INDEX(5, 8),
117 STM32F4_RCC_USART6 = STM32F4_RCC_INDEX(5, 5),
118 STM32F4_RCC_USART1 = STM32F4_RCC_INDEX(5, 4),
119 STM32F4_RCC_TIM8 = STM32F4_RCC_INDEX(5, 1),
120 STM32F4_RCC_TIM1 = STM32F4_RCC_INDEX(5, 0),
121
124#endif /* STM32F4_FAMILY_F4XXXX */
125#ifdef STM32F4_FAMILY_F10XXX
126
132 STM32F4_RCC_DMA1 = STM32F4_RCC_INDEX(0, 0),
133 STM32F4_RCC_DMA2 = STM32F4_RCC_INDEX(0, 1),
134 STM32F4_RCC_SRAM = STM32F4_RCC_INDEX(0, 2),
135 STM32F4_RCC_FLITF = STM32F4_RCC_INDEX(0, 4),
136 STM32F4_RCC_CRCEN = STM32F4_RCC_INDEX(0, 6),
137 STM32F4_RCC_FSMC = STM32F4_RCC_INDEX(0, 8),
138 STM32F4_RCC_SDIO = STM32F4_RCC_INDEX(0, 10),
139 STM32F4_RCC_OTGFS = STM32F4_RCC_INDEX(0, 12),
140 STM32F4_RCC_ETHMAC = STM32F4_RCC_INDEX(0, 14),
141 STM32F4_RCC_ETHMACTX = STM32F4_RCC_INDEX(0, 15),
142 STM32F4_RCC_ETHMACRX = STM32F4_RCC_INDEX(0, 16),
143
144 STM32F4_RCC_AFIO = STM32F4_RCC_INDEX(1, 0),
145 STM32F4_RCC_GPIOA = STM32F4_RCC_INDEX(1, 2),
146 STM32F4_RCC_GPIOB = STM32F4_RCC_INDEX(1, 3),
147 STM32F4_RCC_GPIOC = STM32F4_RCC_INDEX(1, 4),
148 STM32F4_RCC_GPIOD = STM32F4_RCC_INDEX(1, 5),
149 STM32F4_RCC_GPIOE = STM32F4_RCC_INDEX(1, 6),
150 STM32F4_RCC_GPIOF = STM32F4_RCC_INDEX(1, 7),
151 STM32F4_RCC_GPIOG = STM32F4_RCC_INDEX(1, 8),
152 STM32F4_RCC_ADC1 = STM32F4_RCC_INDEX(1, 9),
153 STM32F4_RCC_ADC2 = STM32F4_RCC_INDEX(1, 10),
154 STM32F4_RCC_TIM1 = STM32F4_RCC_INDEX(1, 11),
155 STM32F4_RCC_SPI1 = STM32F4_RCC_INDEX(1, 12),
156 STM32F4_RCC_TIM8 = STM32F4_RCC_INDEX(1, 13),
157 STM32F4_RCC_USART1 = STM32F4_RCC_INDEX(1, 14),
158 STM32F4_RCC_ADC3 = STM32F4_RCC_INDEX(1, 15),
159 STM32F4_RCC_TIM9 = STM32F4_RCC_INDEX(1, 19),
160 STM32F4_RCC_TIM10 = STM32F4_RCC_INDEX(1, 20),
161 STM32F4_RCC_TIM11 = STM32F4_RCC_INDEX(1, 21),
162
163 STM32F4_RCC_TIM2 = STM32F4_RCC_INDEX(2, 0),
164 STM32F4_RCC_TIM3 = STM32F4_RCC_INDEX(2, 1),
165 STM32F4_RCC_TIM4 = STM32F4_RCC_INDEX(2, 2),
166 STM32F4_RCC_TIM5 = STM32F4_RCC_INDEX(2, 3),
167 STM32F4_RCC_TIM6 = STM32F4_RCC_INDEX(2, 4),
168 STM32F4_RCC_TIM7 = STM32F4_RCC_INDEX(2, 5),
169 STM32F4_RCC_TIM12 = STM32F4_RCC_INDEX(2, 6),
170 STM32F4_RCC_TIM13 = STM32F4_RCC_INDEX(2, 7),
171 STM32F4_RCC_TIM14 = STM32F4_RCC_INDEX(2, 8),
172 STM32F4_RCC_WWDG = STM32F4_RCC_INDEX(2, 11),
173 STM32F4_RCC_SPI2 = STM32F4_RCC_INDEX(2, 14),
174 STM32F4_RCC_SPI3 = STM32F4_RCC_INDEX(2, 15),
175 STM32F4_RCC_USART2 = STM32F4_RCC_INDEX(2, 17),
176 STM32F4_RCC_USART3 = STM32F4_RCC_INDEX(2, 18),
177 STM32F4_RCC_UART4 = STM32F4_RCC_INDEX(2, 19),
178 STM32F4_RCC_UART5 = STM32F4_RCC_INDEX(2, 20),
179 STM32F4_RCC_I2C1 = STM32F4_RCC_INDEX(2, 21),
180 STM32F4_RCC_I2C2 = STM32F4_RCC_INDEX(2, 22),
181 STM32F4_RCC_USB = STM32F4_RCC_INDEX(2, 23),
182 STM32F4_RCC_CAN1 = STM32F4_RCC_INDEX(2, 24),
183 STM32F4_RCC_CAN2 = STM32F4_RCC_INDEX(2, 25),
184 STM32F4_RCC_BKP = STM32F4_RCC_INDEX(2, 27),
185 STM32F4_RCC_PWR = STM32F4_RCC_INDEX(2, 28),
186 STM32F4_RCC_DAC = STM32F4_RCC_INDEX(2, 29),
187
190#endif /* STM32F4_FAMILY_F10XXX */
191} stm32f4_rcc_index;
192
193void stm32f4_rcc_reset(stm32f4_rcc_index index);
194
195void stm32f4_rcc_set_reset(stm32f4_rcc_index index, bool set);
196
197void stm32f4_rcc_set_clock(stm32f4_rcc_index index, bool set);
198
199#ifdef STM32F4_FAMILY_F4XXXX
200void stm32f4_rcc_set_low_power_clock(stm32f4_rcc_index index, bool set);
201#endif /* STM32F4_FAMILY_F4XXXX */
202
205#ifdef __cplusplus
206}
207#endif /* __cplusplus */
208
209#endif /* LIBBSP_ARM_STM32F4_RCC_H */