18#ifndef __HAL_DRIVER_ARTERY_AT32F402_405_COMMON_H__
19#define __HAL_DRIVER_ARTERY_AT32F402_405_COMMON_H__
36#define VSF_HW_REG_REGION(__WORD_OFFSET, __BIT_OFFSET, __BIT_LENGTH) \
37 (((__WORD_OFFSET) << 16) | ((__BIT_LENGTH) << 8) | ((__BIT_OFFSET) << 0))
38#define VSF_HW_CLKRST_REGION VSF_HW_REG_REGION
42#define vsf_hw_peripheral_clk_set vsf_hw_clkrst_region_set
43#define vsf_hw_peripheral_clk_get vsf_hw_clkrst_region_get
45#define vsf_hw_peripheral_rst_set vsf_hw_clkrst_region_set_bit
46#define vsf_hw_peripheral_rst_clear vsf_hw_clkrst_region_clear_bit
47#define vsf_hw_peripheral_rst_get vsf_hw_clkrst_region_get_bit
49#define vsf_hw_peripheral_enable vsf_hw_clkrst_region_set_bit
50#define vsf_hw_peripheral_disable vsf_hw_clkrst_region_clear_bit
52#define VSF_SYSTIMER_FREQ vsf_hw_clk_get_freq_hz(&VSF_HW_CLK_CPU)
58#if defined(VSF_HW_USB_OTG_MASK) && (VSF_HW_USB_OTG_MASK & (1 << 1))
64#if defined(VSF_HW_GPIO_PORT_MASK) && (VSF_HW_GPIO_PORT_MASK & (1 << 5))
68#if defined(VSF_HW_GPIO_PORT_MASK) && (VSF_HW_GPIO_PORT_MASK & (1 << 3))
72#if defined(VSF_HW_GPIO_PORT_MASK) && (VSF_HW_GPIO_PORT_MASK & (1 << 2))
76#if defined(VSF_HW_GPIO_PORT_MASK) && (VSF_HW_GPIO_PORT_MASK & (1 << 1))
80#if defined(VSF_HW_GPIO_PORT_MASK) && (VSF_HW_GPIO_PORT_MASK & (1 << 0))
86#if defined(VSF_HW_USB_OTG_MASK) && (VSF_HW_USB_OTG_MASK & (1 << 0))
94#if defined(VSF_HW_USART_MASK) && (VSF_HW_USART_MASK & (1 << 8))
97#if defined(VSF_HW_USART_MASK) && (VSF_HW_USART_MASK & (1 << 7))
102#if defined(VSF_HW_I2C_MASK) && (VSF_HW_I2C_MASK & (1 << 3))
105#if defined(VSF_HW_I2C_MASK) && (VSF_HW_I2C_MASK & (1 << 2))
108#if defined(VSF_HW_I2C_MASK) && (VSF_HW_I2C_MASK & (1 << 1))
111#if defined(VSF_HW_USART_MASK) && (VSF_HW_USART_MASK & (1 << 5))
114#if defined(VSF_HW_USART_MASK) && (VSF_HW_USART_MASK & (1 << 4))
117#if defined(VSF_HW_USART_MASK) && (VSF_HW_USART_MASK & (1 << 3))
120#if defined(VSF_HW_USART_MASK) && (VSF_HW_USART_MASK & (1 << 2))
123#if defined(VSF_HW_SPI_MASK) && (VSF_HW_SPI_MASK & (1 << 3))
126#if defined(VSF_HW_SPI_MASK) && (VSF_HW_SPI_MASK & (1 << 2))
145#if defined(VSF_HW_SPI_MASK) && (VSF_HW_SPI_MASK & (1 << 1))
149#if defined(VSF_HW_USART_MASK) && (VSF_HW_USART_MASK & (1 << 6))
152#if defined(VSF_HW_USART_MASK) && (VSF_HW_USART_MASK & (1 << 1))
160#if defined(VSF_HW_USB_OTG_MASK) && (VSF_HW_USB_OTG_MASK & (1 << 1))
166#if defined(VSF_HW_GPIO_PORT_MASK) && (VSF_HW_GPIO_PORT_MASK & (1 << 5))
170#if defined(VSF_HW_GPIO_PORT_MASK) && (VSF_HW_GPIO_PORT_MASK & (1 << 3))
174#if defined(VSF_HW_GPIO_PORT_MASK) && (VSF_HW_GPIO_PORT_MASK & (1 << 2))
178#if defined(VSF_HW_GPIO_PORT_MASK) && (VSF_HW_GPIO_PORT_MASK & (1 << 1))
182#if defined(VSF_HW_GPIO_PORT_MASK) && (VSF_HW_GPIO_PORT_MASK & (1 << 0))
188#if defined(VSF_HW_USB_OTG_MASK) && (VSF_HW_USB_OTG_MASK & (1 << 0))
196#if defined(VSF_HW_USART_MASK) && (VSF_HW_USART_MASK & (1 << 8))
199#if defined(VSF_HW_USART_MASK) && (VSF_HW_USART_MASK & (1 << 7))
204#if defined(VSF_HW_I2C_MASK) && (VSF_HW_I2C_MASK & (1 << 3))
207#if defined(VSF_HW_I2C_MASK) && (VSF_HW_I2C_MASK & (1 << 2))
210#if defined(VSF_HW_I2C_MASK) && (VSF_HW_I2C_MASK & (1 << 1))
213#if defined(VSF_HW_USART_MASK) && (VSF_HW_USART_MASK & (1 << 5))
216#if defined(VSF_HW_USART_MASK) && (VSF_HW_USART_MASK & (1 << 4))
219#if defined(VSF_HW_USART_MASK) && (VSF_HW_USART_MASK & (1 << 3))
222#if defined(VSF_HW_USART_MASK) && (VSF_HW_USART_MASK & (1 << 2))
225#if defined(VSF_HW_SPI_MASK) && (VSF_HW_SPI_MASK & (1 << 3))
228#if defined(VSF_HW_SPI_MASK) && (VSF_HW_SPI_MASK & (1 << 2))
247#if defined(VSF_HW_SPI_MASK) && (VSF_HW_SPI_MASK & (1 << 1))
251#if defined(VSF_HW_USART_MASK) && (VSF_HW_USART_MASK & (1 << 6))
254#if defined(VSF_HW_USART_MASK) && (VSF_HW_USART_MASK & (1 << 1))
260#if defined(VSF_HW_USB_OTG_MASK) && (VSF_HW_USB_OTG_MASK & (1 << 1))
266#if defined(VSF_HW_GPIO_PORT_MASK) && (VSF_HW_GPIO_PORT_MASK & (1 << 5))
270#if defined(VSF_HW_GPIO_PORT_MASK) && (VSF_HW_GPIO_PORT_MASK & (1 << 3))
274#if defined(VSF_HW_GPIO_PORT_MASK) && (VSF_HW_GPIO_PORT_MASK & (1 << 2))
278#if defined(VSF_HW_GPIO_PORT_MASK) && (VSF_HW_GPIO_PORT_MASK & (1 << 1))
282#if defined(VSF_HW_GPIO_PORT_MASK) && (VSF_HW_GPIO_PORT_MASK & (1 << 0))
288#if defined(VSF_HW_USB_OTG_MASK) && (VSF_HW_USB_OTG_MASK & (1 << 0))
296#if defined(VSF_HW_USART_MASK) && (VSF_HW_USART_MASK & (1 << 8))
299#if defined(VSF_HW_USART_MASK) && (VSF_HW_USART_MASK & (1 << 7))
304#if defined(VSF_HW_I2C_MASK) && (VSF_HW_I2C_MASK & (1 << 3))
307#if defined(VSF_HW_I2C_MASK) && (VSF_HW_I2C_MASK & (1 << 2))
310#if defined(VSF_HW_I2C_MASK) && (VSF_HW_I2C_MASK & (1 << 1))
313#if defined(VSF_HW_USART_MASK) && (VSF_HW_USART_MASK & (1 << 5))
316#if defined(VSF_HW_USART_MASK) && (VSF_HW_USART_MASK & (1 << 4))
319#if defined(VSF_HW_USART_MASK) && (VSF_HW_USART_MASK & (1 << 3))
322#if defined(VSF_HW_USART_MASK) && (VSF_HW_USART_MASK & (1 << 2))
325#if defined(VSF_HW_SPI_MASK) && (VSF_HW_SPI_MASK & (1 << 3))
328#if defined(VSF_HW_SPI_MASK) && (VSF_HW_SPI_MASK & (1 << 2))
347#if defined(VSF_HW_SPI_MASK) && (VSF_HW_SPI_MASK & (1 << 1))
351#if defined(VSF_HW_USART_MASK) && (VSF_HW_USART_MASK & (1 << 6))
354#if defined(VSF_HW_USART_MASK) && (VSF_HW_USART_MASK & (1 << 1))
365#define VSF_HW_CLK_HEXT VSF_HW_CLK_HSE
369#define VSF_HW_CLK_HICK VSF_HW_CLK_HSI
371#define VSF_HW_CLK_LEXT VSF_HW_CLK_LSE
373#define VSF_HW_CLK_LICK VSF_HW_CLK_LSI
380#define VSF_HW_CLK_SCLK VSF_HW_CLK_SYS
382#define VSF_HW_CLK_HCLK VSF_HW_CLK_AHB
383#define VSF_HW_CLK_CPU VSF_HW_CLK_AHB
389#define VSF_HW_CLK_I2S1 VSF_HW_CLK_SYS
390#define VSF_HW_CLK_I2S2 VSF_HW_CLK_SYS
391#define VSF_HW_CLK_I2S3 VSF_HW_CLK_SYS
393#if defined(VSF_HW_USART_MASK) && (VSF_HW_USART_MASK & (1 << 1))
394# define VSF_HW_CLK_USART1 VSF_HW_CLK_APB2
396#if defined(VSF_HW_USART_MASK) && (VSF_HW_USART_MASK & (1 << 2))
397# define VSF_HW_CLK_USART2 VSF_HW_CLK_APB1
399#if defined(VSF_HW_USART_MASK) && (VSF_HW_USART_MASK & (1 << 3))
400# define VSF_HW_CLK_USART3 VSF_HW_CLK_APB1
402#if defined(VSF_HW_USART_MASK) && (VSF_HW_USART_MASK & (1 << 4))
403# define VSF_HW_CLK_USART4 VSF_HW_CLK_APB1
405#if defined(VSF_HW_USART_MASK) && (VSF_HW_USART_MASK & (1 << 5))
406# define VSF_HW_CLK_USART5 VSF_HW_CLK_APB1
408#if defined(VSF_HW_USART_MASK) && (VSF_HW_USART_MASK & (1 << 6))
409# define VSF_HW_CLK_USART6 VSF_HW_CLK_APB2
411#if defined(VSF_HW_USART_MASK) && (VSF_HW_USART_MASK & (1 << 7))
412# define VSF_HW_CLK_USART7 VSF_HW_CLK_APB1
413# define VSF_HW_CLK_UART7 VSF_HW_CLK_USART7
415#if defined(VSF_HW_USART_MASK) && (VSF_HW_USART_MASK & (1 << 8))
416# define VSF_HW_CLK_USART8 VSF_HW_CLK_APB1
417# define VSF_HW_CLK_UART8 VSF_HW_CLK_USART8
420#if defined(VSF_HW_SPI_MASK) && (VSF_HW_SPI_MASK & (1 << 1))
421# define VSF_HW_CLK_SPI1 VSF_HW_CLK_APB2
423#if defined(VSF_HW_SPI_MASK) && (VSF_HW_SPI_MASK & (1 << 2))
424# define VSF_HW_CLK_SPI2 VSF_HW_CLK_APB1
426#if defined(VSF_HW_SPI_MASK) && (VSF_HW_SPI_MASK & (1 << 3))
427# define VSF_HW_CLK_SPI3 VSF_HW_CLK_APB1
430#if defined(VSF_HW_I2C_MASK) && (VSF_HW_I2C_MASK & (1 << 1))
431# define VSF_HW_CLK_I2C1 VSF_HW_CLK_APB1
433#if defined(VSF_HW_I2C_MASK) && (VSF_HW_I2C_MASK & (1 << 2))
434# define VSF_HW_CLK_I2C2 VSF_HW_CLK_APB1
436#if defined(VSF_HW_I2C_MASK) && (VSF_HW_I2C_MASK & (1 << 3))
437# define VSF_HW_CLK_I2C3 VSF_HW_CLK_APB1
vsf_err_t
Definition __type.h:42
const vsf_hw_clk_t VSF_HW_CLK_SYS
Definition driver.c:190
vsf_hw_peripheral_rst_t
Definition common.h:56
@ VSF_HW_RST_TMR14
Definition common.h:130
@ VSF_HW_RST_TMR7
Definition common.h:132
@ VSF_HW_RST_TMR10
Definition common.h:142
@ VSF_HW_RST_TMR4
Definition common.h:134
@ VSF_HW_RST_QSPI1
Definition common.h:91
@ VSF_HW_RST_TMR3
Definition common.h:135
@ VSF_HW_RST_DMA1
Definition common.h:62
@ VSF_HW_RST_DMA2
Definition common.h:61
@ VSF_HW_RST_ADC
Definition common.h:148
@ VSF_HW_RST_I2SF5
Definition common.h:140
@ VSF_HW_RST_TMR2
Definition common.h:136
@ VSF_HW_RST_SCFG
Definition common.h:144
@ VSF_HW_RST_TMR11
Definition common.h:141
@ VSF_HW_RST_CRC
Definition common.h:63
@ VSF_HW_RST_TMR6
Definition common.h:133
@ VSF_HW_RST_PWC
Definition common.h:100
@ VSF_HW_RST_WWDT
Definition common.h:129
@ VSF_HW_RST_CAN1
Definition common.h:101
@ VSF_HW_RST_TMR13
Definition common.h:131
@ VSF_HW_RST_ACC
Definition common.h:139
@ VSF_HW_RST_TMR1
Definition common.h:155
@ VSF_HW_RST_TMR9
Definition common.h:143
const vsf_hw_clk_t VSF_HW_CLK_LSI
Definition driver.c:127
const vsf_hw_clk_t VSF_HW_CLK_HSI48
Definition driver.c:94
const vsf_hw_clk_t VSF_HW_CLK_PLL
Definition driver.c:152
const vsf_hw_clk_t VSF_HW_CLK_APB2
Definition driver.c:230
vsf_err_t vsf_hw_pll_config(const vsf_hw_clk_t *clk, const vsf_hw_clk_t *clksrc, uint16_t mul, uint16_t div, uint32_t out_freq_hz)
Definition driver.c:537
const vsf_hw_clk_t VSF_HW_CLK_HSI8
Definition driver.c:103
const vsf_hw_clk_t VSF_HW_CLK_AHB
Definition driver.c:202
bool vsf_hw_clk_is_ready(const vsf_hw_clk_t *clk)
Definition driver.c:440
vsf_err_t vsf_hw_clk_config(const vsf_hw_clk_t *clk, const vsf_hw_clk_t *clksrc, uint16_t prescaler, uint32_t freq_hz)
Definition driver.c:453
const vsf_hw_clk_t VSF_HW_CLK_PLLU
Definition driver.c:177
const vsf_hw_clk_t VSF_HW_CLK_LSE
Definition driver.c:119
void vsf_hw_clk_disable(const vsf_hw_clk_t *clk)
Definition driver.c:424
const vsf_hw_clk_t VSF_HW_CLK_HSI
Definition driver.c:113
uint32_t vsf_hw_clk_get_freq_hz(const vsf_hw_clk_t *clk)
Definition driver.c:370
vsf_hw_peripheral_en_t
Definition common.h:158
@ VSF_HW_EN_PWCLP
Definition common.h:302
@ VSF_HW_EN_ADCLP
Definition common.h:350
@ VSF_HW_EN_TMR6
Definition common.h:235
@ VSF_HW_EN_TMR7
Definition common.h:234
@ VSF_HW_EN_ACC
Definition common.h:241
@ VSF_HW_EN_TMR11LP
Definition common.h:343
@ VSF_HW_EN_WWDT
Definition common.h:231
@ VSF_HW_EN_DMA2LP
Definition common.h:263
@ VSF_HW_EN_TMR13LP
Definition common.h:333
@ VSF_HW_EN_TMR4LP
Definition common.h:336
@ VSF_HW_EN_CAN1LP
Definition common.h:303
@ VSF_HW_EN_QSPI1
Definition common.h:193
@ VSF_HW_EN_DMA2
Definition common.h:163
@ VSF_HW_EN_DMA1LP
Definition common.h:264
@ VSF_HW_EN_TMR2
Definition common.h:238
@ VSF_HW_EN_TMR2LP
Definition common.h:338
@ VSF_HW_EN_TMR11
Definition common.h:243
@ VSF_HW_EN_TMR1
Definition common.h:257
@ VSF_HW_EN_TMR4
Definition common.h:236
@ VSF_HW_EN_ADC
Definition common.h:250
@ VSF_HW_EN_TMR10
Definition common.h:244
@ VSF_HW_EN_CRC
Definition common.h:165
@ VSF_HW_EN_QSPI1LP
Definition common.h:293
@ VSF_HW_EN_SCFG
Definition common.h:246
@ VSF_HW_EN_TMR3
Definition common.h:237
@ VSF_HW_EN_TMR14
Definition common.h:232
@ VSF_HW_EN_I2SF5
Definition common.h:242
@ VSF_HW_EN_DMA1
Definition common.h:164
@ VSF_HW_EN_TMR9
Definition common.h:245
@ VSF_HW_EN_ACCLP
Definition common.h:341
@ VSF_HW_EN_SCFGLP
Definition common.h:346
@ VSF_HW_EN_I2SF5LP
Definition common.h:342
@ VSF_HW_EN_TMR6LP
Definition common.h:335
@ VSF_HW_EN_TMR7LP
Definition common.h:334
@ VSF_HW_EN_PWC
Definition common.h:202
@ VSF_HW_EN_CRCLP
Definition common.h:265
@ VSF_HW_EN_TMR3LP
Definition common.h:337
@ VSF_HW_EN_TMR10LP
Definition common.h:344
@ VSF_HW_EN_TMR1LP
Definition common.h:357
@ VSF_HW_EN_CAN1
Definition common.h:203
@ VSF_HW_EN_TMR14LP
Definition common.h:332
@ VSF_HW_EN_WWDTLP
Definition common.h:331
@ VSF_HW_EN_TMR13
Definition common.h:233
@ VSF_HW_EN_TMR9LP
Definition common.h:345
const vsf_hw_clk_t VSF_HW_CLK_PLLP
Definition driver.c:166
uint_fast8_t vsf_hw_clkrst_region_get(uint32_t region)
Definition driver.c:270
bool vsf_hw_clk_is_enabled(const vsf_hw_clk_t *clk)
Definition driver.c:432
const vsf_hw_clk_t VSF_HW_CLK_HSE
Definition driver.c:77
#define VSF_HW_CLKRST_REGION
Definition common.h:38
const vsf_hw_clk_t VSF_HW_CLK_APB1
Definition driver.c:221
void vsf_hw_clkrst_region_set(uint32_t region, uint_fast8_t value)
Definition driver.c:257
void vsf_hw_clk_enable(const vsf_hw_clk_t *clk)
Definition driver.c:415
const vsf_hw_clk_t VSF_HW_CLK_SYSTICK_EXT
Definition driver.c:210
const vsf_hw_clk_t * vsf_hw_clk_get_src(const vsf_hw_clk_t *clk)
Definition driver.c:332
@ VSF_HW_RST_UART7
Definition common.h:103
@ VSF_HW_RST_SPI2
Definition common.h:117
@ VSF_HW_RST_GPIOA
Definition common.h:100
@ VSF_HW_RST_USART2
Definition common.h:114
@ VSF_HW_RST_I2C2
Definition common.h:109
@ VSF_HW_RST_SPI1
Definition common.h:118
@ VSF_HW_RST_GPIOF
Definition common.h:95
@ VSF_HW_RST_GPIOC
Definition common.h:98
@ VSF_HW_RST_I2C1
Definition common.h:110
@ VSF_HW_RST_GPIOB
Definition common.h:99
@ VSF_HW_RST_USART1
Definition common.h:115
@ VSF_HW_RST_USART5
Definition common.h:155
@ VSF_HW_RST_GPIOD
Definition common.h:97
@ VSF_HW_RST_I2C3
Definition common.h:108
@ VSF_HW_RST_SPI3
Definition common.h:150
@ VSF_HW_EN_SPI2
Definition common.h:243
@ VSF_HW_EN_UART7
Definition common.h:229
@ VSF_HW_EN_SPI1
Definition common.h:244
@ VSF_HW_EN_USART2
Definition common.h:240
@ VSF_HW_EN_GPIOB
Definition common.h:225
@ VSF_HW_EN_GPIOC
Definition common.h:224
@ VSF_HW_EN_I2C1
Definition common.h:236
@ VSF_HW_EN_SPI3
Definition common.h:276
@ VSF_HW_EN_GPIOD
Definition common.h:223
@ VSF_HW_EN_USART5
Definition common.h:281
@ VSF_HW_EN_GPIOA
Definition common.h:226
@ VSF_HW_EN_USART1
Definition common.h:241
@ VSF_HW_EN_I2C2
Definition common.h:235
@ VSF_HW_EN_I2C3
Definition common.h:234
@ VSF_HW_EN_GPIOF
Definition common.h:221
@ VSF_HW_RST_USART3
Definition common.h:156
@ VSF_HW_RST_GPIO3
Definition common.h:117
@ VSF_HW_RST_USART4
Definition common.h:157
@ VSF_HW_RST_USART6
Definition common.h:196
@ VSF_HW_RST_GPIO5
Definition common.h:119
@ VSF_HW_RST_GPIO1
Definition common.h:115
@ VSF_HW_RST_GPIO2
Definition common.h:116
@ VSF_HW_RST_GPIO0
Definition common.h:114
@ VSF_HW_EN_GPIOCLP
Definition common.h:981
@ VSF_HW_EN_GPIOFLP
Definition common.h:987
@ VSF_HW_EN_GPIODLP
Definition common.h:983
@ VSF_HW_EN_GPIOALP
Definition common.h:977
@ VSF_HW_EN_GPIOBLP
Definition common.h:979
@ VSF_HW_RST_OTGHS
Definition common.h:59
@ VSF_HW_RST_UART8
Definition common.h:104
@ VSF_HW_EN_USART3
Definition common.h:229
@ VSF_HW_EN_UART8
Definition common.h:220
@ VSF_HW_EN_OTGHS
Definition common.h:170
@ VSF_HW_EN_USART6
Definition common.h:81
void vsf_hw_clkrst_region_clear_bit(uint32_t region)
Definition driver.c:290
void vsf_hw_clkrst_region_set_bit(uint32_t region)
Definition driver.c:278
vsf_hw_peripheral_en_t
Definition common.h:131
uint_fast8_t vsf_hw_clkrst_region_get_bit(uint32_t region)
Definition driver.c:302
unsigned short uint16_t
Definition stdint.h:7
unsigned char uint_fast8_t
Definition stdint.h:23
unsigned uint32_t
Definition stdint.h:9
uint32_t prescaler
Definition driver.c:64
const vsf_hw_clk_t * clksrc
Definition driver.c:60
div_t div(int numer, int denom)
vk_av_control_value_t value
Definition vsf_audio.h:171