File indexing completed on 2025-05-11 08:23:05
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015 #ifndef LIBBSP_ARM_STM32F4_RCC_H
0016 #define LIBBSP_ARM_STM32F4_RCC_H
0017
0018 #include <stdbool.h>
0019 #include <bspopts.h>
0020
0021 #ifdef __cplusplus
0022 extern "C" {
0023 #endif
0024
0025
0026
0027
0028
0029
0030
0031
0032 #define STM32F4_RCC_INDEX(reg, idx) (((reg) << 5) | (idx))
0033
0034 typedef enum {
0035 #ifdef STM32F4_FAMILY_F4XXXX
0036
0037
0038
0039
0040
0041
0042 STM32F4_RCC_OTGHS = STM32F4_RCC_INDEX(0, 29),
0043 STM32F4_RCC_ETHMAC = STM32F4_RCC_INDEX(0, 25),
0044 STM32F4_RCC_DMA2 = STM32F4_RCC_INDEX(0, 22),
0045 STM32F4_RCC_DMA1 = STM32F4_RCC_INDEX(0, 21),
0046 STM32F4_RCC_CRC = STM32F4_RCC_INDEX(0, 12),
0047 STM32F4_RCC_GPIOI = STM32F4_RCC_INDEX(0, 8),
0048 STM32F4_RCC_GPIOH = STM32F4_RCC_INDEX(0, 7),
0049 STM32F4_RCC_GPIOG = STM32F4_RCC_INDEX(0, 6),
0050 STM32F4_RCC_GPIOF = STM32F4_RCC_INDEX(0, 5),
0051 STM32F4_RCC_GPIOE = STM32F4_RCC_INDEX(0, 4),
0052 STM32F4_RCC_GPIOD = STM32F4_RCC_INDEX(0, 3),
0053 STM32F4_RCC_GPIOC = STM32F4_RCC_INDEX(0, 2),
0054 STM32F4_RCC_GPIOB = STM32F4_RCC_INDEX(0, 1),
0055 STM32F4_RCC_GPIOA = STM32F4_RCC_INDEX(0, 0),
0056
0057 STM32F4_RCC_OTGFS = STM32F4_RCC_INDEX(1, 7),
0058 STM32F4_RCC_RNG = STM32F4_RCC_INDEX(1, 6),
0059 STM32F4_RCC_HASH = STM32F4_RCC_INDEX(1, 5),
0060 STM32F4_RCC_CRYP = STM32F4_RCC_INDEX(1, 4),
0061 STM32F4_RCC_DCMI = STM32F4_RCC_INDEX(1, 0),
0062
0063 STM32F4_RCC_FSMCR = STM32F4_RCC_INDEX(2, 0),
0064
0065 STM32F4_RCC_DAC = STM32F4_RCC_INDEX(4, 29),
0066 STM32F4_RCC_PWR = STM32F4_RCC_INDEX(4, 28),
0067 STM32F4_RCC_CAN2 = STM32F4_RCC_INDEX(4, 26),
0068 STM32F4_RCC_CAN1 = STM32F4_RCC_INDEX(4, 25),
0069 STM32F4_RCC_I2C3 = STM32F4_RCC_INDEX(4, 23),
0070 STM32F4_RCC_I2C2 = STM32F4_RCC_INDEX(4, 22),
0071 STM32F4_RCC_I2C1 = STM32F4_RCC_INDEX(4, 21),
0072 STM32F4_RCC_UART5 = STM32F4_RCC_INDEX(4, 20),
0073 STM32F4_RCC_UART4 = STM32F4_RCC_INDEX(4, 19),
0074 STM32F4_RCC_USART3 = STM32F4_RCC_INDEX(4, 18),
0075 STM32F4_RCC_USART2 = STM32F4_RCC_INDEX(4, 17),
0076 STM32F4_RCC_SPI3 = STM32F4_RCC_INDEX(4, 15),
0077 STM32F4_RCC_SPI2 = STM32F4_RCC_INDEX(4, 14),
0078 STM32F4_RCC_WWDG = STM32F4_RCC_INDEX(4, 11),
0079 STM32F4_RCC_TIM14 = STM32F4_RCC_INDEX(4, 8),
0080 STM32F4_RCC_TIM13 = STM32F4_RCC_INDEX(4, 7),
0081 STM32F4_RCC_TIM12 = STM32F4_RCC_INDEX(4, 6),
0082 STM32F4_RCC_TIM7 = STM32F4_RCC_INDEX(4, 5),
0083 STM32F4_RCC_TIM6 = STM32F4_RCC_INDEX(4, 4),
0084 STM32F4_RCC_TIM5 = STM32F4_RCC_INDEX(4, 3),
0085 STM32F4_RCC_TIM4 = STM32F4_RCC_INDEX(4, 2),
0086 STM32F4_RCC_TIM3 = STM32F4_RCC_INDEX(4, 1),
0087 STM32F4_RCC_TIM2 = STM32F4_RCC_INDEX(4, 0),
0088
0089 STM32F4_RCC_TIM11 = STM32F4_RCC_INDEX(5, 18),
0090 STM32F4_RCC_TIM10 = STM32F4_RCC_INDEX(5, 17),
0091 STM32F4_RCC_TIM9 = STM32F4_RCC_INDEX(5, 16),
0092 STM32F4_RCC_SYSCFG = STM32F4_RCC_INDEX(5, 14),
0093 STM32F4_RCC_SPI1 = STM32F4_RCC_INDEX(5, 12),
0094 STM32F4_RCC_SDIO = STM32F4_RCC_INDEX(5, 11),
0095 STM32F4_RCC_ADC3 = STM32F4_RCC_INDEX(5, 10),
0096 STM32F4_RCC_ADC2 = STM32F4_RCC_INDEX(5, 9),
0097 STM32F4_RCC_ADC1 = STM32F4_RCC_INDEX(5, 8),
0098 STM32F4_RCC_USART6 = STM32F4_RCC_INDEX(5, 5),
0099 STM32F4_RCC_USART1 = STM32F4_RCC_INDEX(5, 4),
0100 STM32F4_RCC_TIM8 = STM32F4_RCC_INDEX(5, 1),
0101 STM32F4_RCC_TIM1 = STM32F4_RCC_INDEX(5, 0),
0102
0103
0104
0105 #endif
0106 #ifdef STM32F4_FAMILY_F10XXX
0107
0108
0109
0110
0111
0112
0113 STM32F4_RCC_DMA1 = STM32F4_RCC_INDEX(0, 0),
0114 STM32F4_RCC_DMA2 = STM32F4_RCC_INDEX(0, 1),
0115 STM32F4_RCC_SRAM = STM32F4_RCC_INDEX(0, 2),
0116 STM32F4_RCC_FLITF = STM32F4_RCC_INDEX(0, 4),
0117 STM32F4_RCC_CRCEN = STM32F4_RCC_INDEX(0, 6),
0118 STM32F4_RCC_FSMC = STM32F4_RCC_INDEX(0, 8),
0119 STM32F4_RCC_SDIO = STM32F4_RCC_INDEX(0, 10),
0120 STM32F4_RCC_OTGFS = STM32F4_RCC_INDEX(0, 12),
0121 STM32F4_RCC_ETHMAC = STM32F4_RCC_INDEX(0, 14),
0122 STM32F4_RCC_ETHMACTX = STM32F4_RCC_INDEX(0, 15),
0123 STM32F4_RCC_ETHMACRX = STM32F4_RCC_INDEX(0, 16),
0124
0125 STM32F4_RCC_AFIO = STM32F4_RCC_INDEX(1, 0),
0126 STM32F4_RCC_GPIOA = STM32F4_RCC_INDEX(1, 2),
0127 STM32F4_RCC_GPIOB = STM32F4_RCC_INDEX(1, 3),
0128 STM32F4_RCC_GPIOC = STM32F4_RCC_INDEX(1, 4),
0129 STM32F4_RCC_GPIOD = STM32F4_RCC_INDEX(1, 5),
0130 STM32F4_RCC_GPIOE = STM32F4_RCC_INDEX(1, 6),
0131 STM32F4_RCC_GPIOF = STM32F4_RCC_INDEX(1, 7),
0132 STM32F4_RCC_GPIOG = STM32F4_RCC_INDEX(1, 8),
0133 STM32F4_RCC_ADC1 = STM32F4_RCC_INDEX(1, 9),
0134 STM32F4_RCC_ADC2 = STM32F4_RCC_INDEX(1, 10),
0135 STM32F4_RCC_TIM1 = STM32F4_RCC_INDEX(1, 11),
0136 STM32F4_RCC_SPI1 = STM32F4_RCC_INDEX(1, 12),
0137 STM32F4_RCC_TIM8 = STM32F4_RCC_INDEX(1, 13),
0138 STM32F4_RCC_USART1 = STM32F4_RCC_INDEX(1, 14),
0139 STM32F4_RCC_ADC3 = STM32F4_RCC_INDEX(1, 15),
0140 STM32F4_RCC_TIM9 = STM32F4_RCC_INDEX(1, 19),
0141 STM32F4_RCC_TIM10 = STM32F4_RCC_INDEX(1, 20),
0142 STM32F4_RCC_TIM11 = STM32F4_RCC_INDEX(1, 21),
0143
0144 STM32F4_RCC_TIM2 = STM32F4_RCC_INDEX(2, 0),
0145 STM32F4_RCC_TIM3 = STM32F4_RCC_INDEX(2, 1),
0146 STM32F4_RCC_TIM4 = STM32F4_RCC_INDEX(2, 2),
0147 STM32F4_RCC_TIM5 = STM32F4_RCC_INDEX(2, 3),
0148 STM32F4_RCC_TIM6 = STM32F4_RCC_INDEX(2, 4),
0149 STM32F4_RCC_TIM7 = STM32F4_RCC_INDEX(2, 5),
0150 STM32F4_RCC_TIM12 = STM32F4_RCC_INDEX(2, 6),
0151 STM32F4_RCC_TIM13 = STM32F4_RCC_INDEX(2, 7),
0152 STM32F4_RCC_TIM14 = STM32F4_RCC_INDEX(2, 8),
0153 STM32F4_RCC_WWDG = STM32F4_RCC_INDEX(2, 11),
0154 STM32F4_RCC_SPI2 = STM32F4_RCC_INDEX(2, 14),
0155 STM32F4_RCC_SPI3 = STM32F4_RCC_INDEX(2, 15),
0156 STM32F4_RCC_USART2 = STM32F4_RCC_INDEX(2, 17),
0157 STM32F4_RCC_USART3 = STM32F4_RCC_INDEX(2, 18),
0158 STM32F4_RCC_UART4 = STM32F4_RCC_INDEX(2, 19),
0159 STM32F4_RCC_UART5 = STM32F4_RCC_INDEX(2, 20),
0160 STM32F4_RCC_I2C1 = STM32F4_RCC_INDEX(2, 21),
0161 STM32F4_RCC_I2C2 = STM32F4_RCC_INDEX(2, 22),
0162 STM32F4_RCC_USB = STM32F4_RCC_INDEX(2, 23),
0163 STM32F4_RCC_CAN1 = STM32F4_RCC_INDEX(2, 24),
0164 STM32F4_RCC_CAN2 = STM32F4_RCC_INDEX(2, 25),
0165 STM32F4_RCC_BKP = STM32F4_RCC_INDEX(2, 27),
0166 STM32F4_RCC_PWR = STM32F4_RCC_INDEX(2, 28),
0167 STM32F4_RCC_DAC = STM32F4_RCC_INDEX(2, 29),
0168
0169
0170
0171 #endif
0172 } stm32f4_rcc_index;
0173
0174 void stm32f4_rcc_reset(stm32f4_rcc_index index);
0175
0176 void stm32f4_rcc_set_reset(stm32f4_rcc_index index, bool set);
0177
0178 void stm32f4_rcc_set_clock(stm32f4_rcc_index index, bool set);
0179
0180 #ifdef STM32F4_FAMILY_F4XXXX
0181 void stm32f4_rcc_set_low_power_clock(stm32f4_rcc_index index, bool set);
0182 #endif
0183
0184
0185
0186 #ifdef __cplusplus
0187 }
0188 #endif
0189
0190 #endif