VSF Documented
common.h
Go to the documentation of this file.
1/*****************************************************************************
2 * Copyright(C)2009-2022 by VSF Team *
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#ifndef __HAL_DRIVER_ST_STM32H7XX_COMMON_H__
19#define __HAL_DRIVER_ST_STM32H7XX_COMMON_H__
20
21/* \note __common.h should only be included by device.h */
22
23/*============================ INCLUDES ======================================*/
24
25#include "hal/vsf_hal_cfg.h"
26#include "hal/arch/vsf_arch.h"
27
28/*============================ MACROS ========================================*/
29
30// CLKRST REGION
31
32#define VSF_HW_CLKRST_REGION(__WORD_OFFSET, __BIT_OFFSET, __BIT_LENGTH) \
33 (((__WORD_OFFSET) << 16) | ((__BIT_LENGTH) << 8) | ((__BIT_OFFSET) << 0))
34
35/*============================ MACROFIED FUNCTIONS ===========================*/
36
37#define vsf_hw_peripheral_clk_set vsf_hw_clkrst_region_set
38#define vsf_hw_peripheral_clk_get vsf_hw_clkrst_region_get
39
40#define vsf_hw_peripheral_rst_set vsf_hw_clkrst_region_set_bit
41#define vsf_hw_peripheral_rst_clear vsf_hw_clkrst_region_clear_bit
42#define vsf_hw_peripheral_rst_get vsf_hw_clkrst_region_get_bit
43
44#define vsf_hw_peripheral_enable vsf_hw_clkrst_region_set_bit
45#define vsf_hw_peripheral_disable vsf_hw_clkrst_region_clear_bit
46
47/*============================ TYPES =========================================*/
48
50 VSF_HW_RST_USART1 = VSF_HW_CLKRST_REGION(0x26, 4, 1), // USART1RST in RCC.APB2RSTR
51 VSF_HW_RST_USART2 = VSF_HW_CLKRST_REGION(0x24, 17, 1),// USART2RST in RCC.APB1LRSTR
52 VSF_HW_RST_USART3 = VSF_HW_CLKRST_REGION(0x24, 18, 1),// USART3RST in RCC.APB1LRSTR
53 VSF_HW_RST_UART4 = VSF_HW_CLKRST_REGION(0x24, 19, 1),// USART4RST in RCC.APB1LRSTR
54 VSF_HW_RST_UART5 = VSF_HW_CLKRST_REGION(0x24, 20, 1),// USART5RST in RCC.APB1LRSTR
55 VSF_HW_RST_USART6 = VSF_HW_CLKRST_REGION(0x26, 5, 1), // USART6RST in RCC.APB2RSTR
56 VSF_HW_RST_UART7 = VSF_HW_CLKRST_REGION(0x24, 30, 1),// USART7RST in RCC.APB1LRSTR
57 VSF_HW_RST_UART8 = VSF_HW_CLKRST_REGION(0x24, 31, 1),// USART8RST in RCC.APB1LRSTR
58
59 VSF_HW_RST_SDMMC1 = VSF_HW_CLKRST_REGION(0x1F, 16, 1),// SDMMC1RST in RCC.AHB3RSTR
60 VSF_HW_RST_SDMMC2 = VSF_HW_CLKRST_REGION(0x21, 9, 1), // SDMMC2RST in RCC.AHB2RSTR
62
64 VSF_HW_EN_GPIOA = VSF_HW_CLKRST_REGION(0x38, 0, 1), // GPIOAEN in RCC.AHB4ENR
65 VSF_HW_EN_GPIOB = VSF_HW_CLKRST_REGION(0x38, 1, 1), // GPIOBEN in RCC.AHB4ENR
66 VSF_HW_EN_GPIOC = VSF_HW_CLKRST_REGION(0x38, 2, 1), // GPIOCEN in RCC.AHB4ENR
67 VSF_HW_EN_GPIOD = VSF_HW_CLKRST_REGION(0x38, 3, 1), // GPIODEN in RCC.AHB4ENR
68 VSF_HW_EN_GPIOE = VSF_HW_CLKRST_REGION(0x38, 4, 1), // GPIOEEN in RCC.AHB4ENR
69 VSF_HW_EN_GPIOF = VSF_HW_CLKRST_REGION(0x38, 5, 1), // GPIOFEN in RCC.AHB4ENR
70 VSF_HW_EN_GPIOG = VSF_HW_CLKRST_REGION(0x38, 6, 1), // GPIOGEN in RCC.AHB4ENR
71 VSF_HW_EN_GPIOH = VSF_HW_CLKRST_REGION(0x38, 7, 1), // GPIOHEN in RCC.AHB4ENR
72 VSF_HW_EN_GPIOI = VSF_HW_CLKRST_REGION(0x38, 8, 1), // GPIOIEN in RCC.AHB4ENR
73 VSF_HW_EN_GPIOJ = VSF_HW_CLKRST_REGION(0x38, 9, 1), // GPIOJEN in RCC.AHB4ENR
74 VSF_HW_EN_GPIOK = VSF_HW_CLKRST_REGION(0x38, 10, 1),// GPIOKEN in RCC.AHB4ENR
75
76 VSF_HW_EN_USART1 = VSF_HW_CLKRST_REGION(0x3C, 4, 1), // USART1EN in RCC.APB2ENR
77 VSF_HW_EN_USART2 = VSF_HW_CLKRST_REGION(0x3A, 17, 1),// USART2EN in RCC.APB1LENR
78 VSF_HW_EN_USART3 = VSF_HW_CLKRST_REGION(0x3A, 18, 1),// USART3EN in RCC.APB1LENR
79 VSF_HW_EN_UART4 = VSF_HW_CLKRST_REGION(0x3A, 19, 1),// USART4EN in RCC.APB1LENR
80 VSF_HW_EN_UART5 = VSF_HW_CLKRST_REGION(0x3A, 20, 1),// USART5EN in RCC.APB1LENR
81 VSF_HW_EN_USART6 = VSF_HW_CLKRST_REGION(0x3C, 5, 1), // USART6EN in RCC.APB2ENR
82 VSF_HW_EN_UART7 = VSF_HW_CLKRST_REGION(0x3A, 30, 1),// USART7EN in RCC.APB1LENR
83 VSF_HW_EN_UART8 = VSF_HW_CLKRST_REGION(0x3A, 31, 1),// USART8EN in RCC.APB1LENR
84
85 VSF_HW_EN_SDMMC1 = VSF_HW_CLKRST_REGION(0x35, 16, 1),// SDMMC1EN in RCC.AHB3ENR
86 VSF_HW_EN_SDMMC2 = VSF_HW_CLKRST_REGION(0x37, 9, 1), // SDMMC2EN in RCC.AHB2ENR
88
90
91/*============================ GLOBAL VARIABLES ==============================*/
92
93extern const vsf_hw_clk_t VSF_HW_CLK_HSI;
96extern const vsf_hw_clk_t VSF_HW_CLK_LSI;
97extern const vsf_hw_clk_t VSF_HW_CLK_CSI;
99extern const vsf_hw_clk_t VSF_HW_CLK_HSE;
100extern const vsf_hw_clk_t VSF_HW_CLK_LSE;
101
111
112extern const vsf_hw_clk_t VSF_HW_CLK_SYS;
113extern const vsf_hw_clk_t VSF_HW_CLK_SYSD1;
114extern const vsf_hw_clk_t VSF_HW_CLK_HCLK;
115extern const vsf_hw_clk_t VSF_HW_CLK_PER;
116
117extern const vsf_hw_clk_t VSF_HW_CLK_PCLK1;
118extern const vsf_hw_clk_t VSF_HW_CLK_PCLK2;
119extern const vsf_hw_clk_t VSF_HW_CLK_PCLK3;
120extern const vsf_hw_clk_t VSF_HW_CLK_PCLK4;
121
122#if VSF_HAL_USE_USART == ENABLED
125#define VSF_HW_CLK_USART1 VSF_HW_CLK_USART16
126#define VSF_HW_CLK_USART2 VSF_HW_CLK_USART234578
127#define VSF_HW_CLK_USART3 VSF_HW_CLK_USART234578
128#define VSF_HW_CLK_UART4 VSF_HW_CLK_USART234578
129#define VSF_HW_CLK_UART5 VSF_HW_CLK_USART234578
130#define VSF_HW_CLK_USART6 VSF_HW_CLK_USART16
131#define VSF_HW_CLK_UART7 VSF_HW_CLK_USART234578
132#define VSF_HW_CLK_UART8 VSF_HW_CLK_USART234578
133#endif
134
135#if VSF_HAL_USE_SDIO == ENABLED
136extern const vsf_hw_clk_t VSF_HW_CLK_SDMMC;
137#define VSF_HW_CLK_SDMMC1 VSF_HW_CLK_SDMMC
138#define VSF_HW_CLK_SDMMC2 VSF_HW_CLK_SDMMC
139#endif
140
141/*============================ LOCAL VARIABLES ===============================*/
142/*============================ INCLUDES ======================================*/
143/*============================ PROTOTYPES ====================================*/
144
145extern const vsf_hw_clk_t * vsf_hw_clk_get_src(const vsf_hw_clk_t *clk);
147
150
151extern void vsf_hw_clkrst_region_set_bit(uint32_t region);
152extern void vsf_hw_clkrst_region_clear_bit(uint32_t region);
154
155#endif
156/* EOF */
vsf_hw_peripheral_rst_t
Definition common.h:56
#define VSF_HW_CLKRST_REGION(__WORD_OFFSET, __BIT_OFFSET, __BIT_LENGTH)
Definition common.h:32
vsf_hw_peripheral_en_t
Definition common.h:170
const vsf_hw_clk_t VSF_HW_CLK_SYS
Definition driver.c:323
vsf_hw_peripheral_rst_t
Definition common.h:49
@ VSF_HW_RST_USART3
Definition common.h:52
@ VSF_HW_RST_UART7
Definition common.h:56
@ VSF_HW_RST_USART2
Definition common.h:51
@ VSF_HW_RST_USART6
Definition common.h:55
@ VSF_HW_RST_SDMMC2
Definition common.h:60
@ VSF_HW_RST_UART8
Definition common.h:57
@ VSF_HW_RST_USART1
Definition common.h:50
@ VSF_HW_RST_SDMMC1
Definition common.h:59
@ VSF_HW_RST_UART5
Definition common.h:54
@ VSF_HW_RST_UART4
Definition common.h:53
const vsf_hw_clk_t VSF_HW_CLK_LSI
Definition driver.c:123
const vsf_hw_clk_t VSF_HW_CLK_HSI48
Definition driver.c:115
const vsf_hw_clk_t VSF_HW_CLK_USART16
Definition driver.c:415
void vsf_hw_clkrst_region_clear_bit(uint32_t region)
Definition driver.c:504
const vsf_hw_clk_t VSF_HW_CLK_HSI_KER
Definition driver.c:102
const vsf_hw_clk_t VSF_HW_CLK_SDMMC
Definition driver.c:433
const vsf_hw_clk_t VSF_HW_CLK_PLL1_P
Definition driver.c:204
const vsf_hw_clk_t VSF_HW_CLK_PLL1_R
Definition driver.c:226
const vsf_hw_clk_t VSF_HW_CLK_PCLK4
Definition driver.c:390
const vsf_hw_clk_t VSF_HW_CLK_PLL3_R
Definition driver.c:292
const vsf_hw_clk_t VSF_HW_CLK_PLL2_R
Definition driver.c:259
void vsf_hw_clkrst_region_set_bit(uint32_t region)
Definition driver.c:492
const vsf_hw_clk_t VSF_HW_CLK_PCLK3
Definition driver.c:378
const vsf_hw_clk_t VSF_HW_CLK_PLL3_P
Definition driver.c:270
const vsf_hw_clk_t VSF_HW_CLK_CSI_KER
Definition driver.c:135
const vsf_hw_clk_t VSF_HW_CLK_HCLK
Definition driver.c:329
const vsf_hw_clk_t VSF_HW_CLK_PLL2_Q
Definition driver.c:248
const vsf_hw_clk_t VSF_HW_CLK_PLL2_P
Definition driver.c:237
const vsf_hw_clk_t VSF_HW_CLK_USART234578
Definition driver.c:420
const vsf_hw_clk_t VSF_HW_CLK_LSE
Definition driver.c:151
const vsf_hw_clk_t VSF_HW_CLK_PCLK2
Definition driver.c:366
const vsf_hw_clk_t VSF_HW_CLK_HSI
Definition driver.c:90
uint32_t vsf_hw_clk_get_freq_hz(const vsf_hw_clk_t *clk)
Definition driver.c:580
vsf_hw_peripheral_en_t
Definition common.h:63
@ VSF_HW_EN_USART6
Definition common.h:81
@ VSF_HW_EN_GPIOH
Definition common.h:71
@ VSF_HW_EN_GPIOE
Definition common.h:68
@ VSF_HW_EN_USART3
Definition common.h:78
@ VSF_HW_EN_UART7
Definition common.h:82
@ VSF_HW_EN_USART2
Definition common.h:77
@ VSF_HW_EN_GPIOB
Definition common.h:65
@ VSF_HW_EN_GPIOC
Definition common.h:66
@ VSF_HW_EN_UART5
Definition common.h:80
@ VSF_HW_EN_GPIOD
Definition common.h:67
@ VSF_HW_EN_UART4
Definition common.h:79
@ VSF_HW_EN_GPIOA
Definition common.h:64
@ VSF_HW_EN_GPIOG
Definition common.h:70
@ VSF_HW_EN_UART8
Definition common.h:83
@ VSF_HW_EN_USART1
Definition common.h:76
@ VSF_HW_EN_GPIOJ
Definition common.h:73
@ VSF_HW_EN_SDMMC2
Definition common.h:86
@ VSF_HW_EN_GPIOK
Definition common.h:74
@ VSF_HW_EN_GPIOI
Definition common.h:72
@ VSF_HW_EN_GPIOF
Definition common.h:69
@ VSF_HW_EN_SDMMC1
Definition common.h:85
const vsf_hw_clk_t VSF_HW_CLK_PLL1_Q
Definition driver.c:215
uint_fast8_t vsf_hw_clkrst_region_get_bit(uint32_t region)
Definition driver.c:516
uint_fast8_t vsf_hw_clkrst_region_get(uint32_t region)
Definition driver.c:484
const vsf_hw_clk_t VSF_HW_CLK_HSE
Definition driver.c:143
const vsf_hw_clk_t VSF_HW_CLK_SYSD1
Definition driver.c:317
const vsf_hw_clk_t VSF_HW_CLK_PLL3_Q
Definition driver.c:281
const vsf_hw_clk_t VSF_HW_CLK_CSI
Definition driver.c:128
void vsf_hw_clkrst_region_set(uint32_t region, uint_fast8_t value)
Definition driver.c:471
const vsf_hw_clk_t VSF_HW_CLK_PCLK1
Definition driver.c:354
const vsf_hw_clk_t VSF_HW_CLK_PER
Definition driver.c:330
const vsf_hw_clk_t * vsf_hw_clk_get_src(const vsf_hw_clk_t *clk)
Definition driver.c:542
unsigned char uint_fast8_t
Definition stdint.h:23
unsigned uint32_t
Definition stdint.h:9
Definition driver.c:78
vk_av_control_value_t value
Definition vsf_audio.h:171