VSF Documented
Data Structures | Macros | Typedefs | Enumerations | Functions | Variables
driver.c File Reference
#include "hal/vsf_hal_cfg.h"
#include "../__device.h"
#include "hal/driver/common/swi/arm/vsf_swi_template.inc"

Data Structures

struct  vsf_hw_clk_t
 

Macros

#define HSE_VALUE   ((uint32_t)25000000)
 
#define LSE_VALUE   ((uint32_t)32000)
 
#define CSI_VALUE   ((uint32_t)4000000)
 
#define HSI_VALUE   ((uint32_t)64000000)
 

Typedefs

typedef enum vsf_hw_peripheral_clksel_t vsf_hw_peripheral_clksel_t
 

Enumerations

enum  vsf_hw_peripheral_clksel_t {
  VSF_HW_CLKSEL_USART16 = VSF_HW_CLKRST_REGION(0x15, 3, 3) ,
  VSF_HW_CLKSEL_USART234578 = VSF_HW_CLKRST_REGION(0x15, 0, 3) ,
  VSF_HW_CLKSEL_SDMMC = VSF_HW_CLKRST_REGION(0x13, 16, 1)
}
 
enum  {
  VSF_HW_CLK_PRESCALER_DIV ,
  VSF_HW_CLK_PRESCALER_ADD1_DIV ,
  VSF_HW_CLK_PRESCALER_SFT ,
  VSF_HW_CLK_PRESCALER_FUNC
}
 
enum  {
  VSF_HW_CLK_TYPE_CONST ,
  VSF_HW_CLK_TYPE_CLK ,
  VSF_HW_CLK_TYPE_SEL
}
 

Functions

void vsf_hw_clkrst_region_set (uint32_t region, uint_fast8_t value)
 
uint_fast8_t vsf_hw_clkrst_region_get (uint32_t region)
 
void vsf_hw_clkrst_region_set_bit (uint32_t region)
 
void vsf_hw_clkrst_region_clear_bit (uint32_t region)
 
uint_fast8_t vsf_hw_clkrst_region_get_bit (uint32_t region)
 
const vsf_hw_clk_tvsf_hw_clk_get_src (const vsf_hw_clk_t *clk)
 
uint32_t vsf_hw_clk_get_freq_hz (const vsf_hw_clk_t *clk)
 
bool vsf_driver_init (void)
 common hal drivers
 

Variables

const vsf_hw_clk_t VSF_HW_CLK_HSI
 
const vsf_hw_clk_t VSF_HW_CLK_HSI_KER
 
const vsf_hw_clk_t VSF_HW_CLK_HSI48
 
const vsf_hw_clk_t VSF_HW_CLK_LSI
 
const vsf_hw_clk_t VSF_HW_CLK_CSI
 
const vsf_hw_clk_t VSF_HW_CLK_CSI_KER
 
const vsf_hw_clk_t VSF_HW_CLK_HSE
 
const vsf_hw_clk_t VSF_HW_CLK_LSE
 
const vsf_hw_clk_t VSF_HW_CLK_PLL1_P
 
const vsf_hw_clk_t VSF_HW_CLK_PLL1_Q
 
const vsf_hw_clk_t VSF_HW_CLK_PLL1_R
 
const vsf_hw_clk_t VSF_HW_CLK_PLL2_P
 
const vsf_hw_clk_t VSF_HW_CLK_PLL2_Q
 
const vsf_hw_clk_t VSF_HW_CLK_PLL2_R
 
const vsf_hw_clk_t VSF_HW_CLK_PLL3_P
 
const vsf_hw_clk_t VSF_HW_CLK_PLL3_Q
 
const vsf_hw_clk_t VSF_HW_CLK_PLL3_R
 
const vsf_hw_clk_t VSF_HW_CLK_SYS
 
const vsf_hw_clk_t VSF_HW_CLK_SYSD1
 
const vsf_hw_clk_t VSF_HW_CLK_HCLK
 
const vsf_hw_clk_t VSF_HW_CLK_PER
 
const vsf_hw_clk_t VSF_HW_CLK_PCLK1
 
const vsf_hw_clk_t VSF_HW_CLK_PCLK2
 
const vsf_hw_clk_t VSF_HW_CLK_PCLK3
 
const vsf_hw_clk_t VSF_HW_CLK_PCLK4
 
const vsf_hw_clk_t VSF_HW_CLK_USART16
 
const vsf_hw_clk_t VSF_HW_CLK_USART234578
 
const vsf_hw_clk_t VSF_HW_CLK_SDMMC
 

Macro Definition Documentation

◆ HSE_VALUE

#define HSE_VALUE   ((uint32_t)25000000)

◆ LSE_VALUE

#define LSE_VALUE   ((uint32_t)32000)

◆ CSI_VALUE

#define CSI_VALUE   ((uint32_t)4000000)

◆ HSI_VALUE

#define HSI_VALUE   ((uint32_t)64000000)

Typedef Documentation

◆ vsf_hw_peripheral_clksel_t

Enumeration Type Documentation

◆ vsf_hw_peripheral_clksel_t

Enumerator
VSF_HW_CLKSEL_USART16 
VSF_HW_CLKSEL_USART234578 
VSF_HW_CLKSEL_SDMMC 

◆ anonymous enum

anonymous enum
Enumerator
VSF_HW_CLK_PRESCALER_DIV 
VSF_HW_CLK_PRESCALER_ADD1_DIV 
VSF_HW_CLK_PRESCALER_SFT 
VSF_HW_CLK_PRESCALER_FUNC 

◆ anonymous enum

anonymous enum
Enumerator
VSF_HW_CLK_TYPE_CONST 
VSF_HW_CLK_TYPE_CLK 
VSF_HW_CLK_TYPE_SEL 

Function Documentation

◆ vsf_hw_clkrst_region_set()

void vsf_hw_clkrst_region_set ( uint32_t  region,
uint_fast8_t  value 
)

◆ vsf_hw_clkrst_region_get()

uint_fast8_t vsf_hw_clkrst_region_get ( uint32_t  region)

◆ vsf_hw_clkrst_region_set_bit()

void vsf_hw_clkrst_region_set_bit ( uint32_t  region)

◆ vsf_hw_clkrst_region_clear_bit()

void vsf_hw_clkrst_region_clear_bit ( uint32_t  region)

◆ vsf_hw_clkrst_region_get_bit()

uint_fast8_t vsf_hw_clkrst_region_get_bit ( uint32_t  region)

◆ vsf_hw_clk_get_src()

const vsf_hw_clk_t * vsf_hw_clk_get_src ( const vsf_hw_clk_t clk)

◆ vsf_hw_clk_get_freq_hz()

uint32_t vsf_hw_clk_get_freq_hz ( const vsf_hw_clk_t clk)

◆ vsf_driver_init()

bool vsf_driver_init ( void  )

common hal drivers

Note
initialize device driver
Parameters
none
Return values
trueinitialization succeeded.
falseinitialization failed

initialise interrupt controller;

\tagpll_init[]

\endpll_init[]

\tag::configure_clk_sys[]

\end::configure_clk_sys[]

Variable Documentation

◆ VSF_HW_CLK_HSI

const vsf_hw_clk_t VSF_HW_CLK_HSI
Initial value:
= {
.clkprescaler_region = VSF_HW_CLKRST_REGION(0x00, 3, 2),
.clken_region = VSF_HW_CLKRST_REGION(0x00, 0, 1),
.clkrdy_region = VSF_HW_CLKRST_REGION(0x00, 2, 1),
.clk_freq_hz = HSI_VALUE,
.clkprescaler_type = VSF_HW_CLK_PRESCALER_SFT,
.clkprescaler_min = 0,
.clkprescaler_max = 3,
}
#define VSF_HW_CLKRST_REGION(__WORD_OFFSET, __BIT_OFFSET, __BIT_LENGTH)
Definition common.h:32
@ VSF_HW_CLK_PRESCALER_SFT
Definition driver.c:68
@ VSF_HW_CLK_TYPE_CONST
Definition driver.c:73
#define HSI_VALUE
Definition driver.c:38

◆ VSF_HW_CLK_HSI_KER

const vsf_hw_clk_t VSF_HW_CLK_HSI_KER
Initial value:
= {
.clkprescaler_region = VSF_HW_CLKRST_REGION(0x00, 3, 2),
.clken_region = VSF_HW_CLKRST_REGION(0x00, 1, 1),
.clkrdy_region = VSF_HW_CLKRST_REGION(0x00, 2, 1),
.clk_freq_hz = HSI_VALUE,
.clkprescaler_type = VSF_HW_CLK_PRESCALER_SFT,
.clkprescaler_min = 0,
.clkprescaler_max = 3,
}

◆ VSF_HW_CLK_HSI48

const vsf_hw_clk_t VSF_HW_CLK_HSI48
Initial value:
= {
.clken_region = VSF_HW_CLKRST_REGION(0x00, 12, 1),
.clkrdy_region = VSF_HW_CLKRST_REGION(0x00, 13, 1),
.clk_freq_hz = 48000000,
}

◆ VSF_HW_CLK_LSI

const vsf_hw_clk_t VSF_HW_CLK_LSI
Initial value:
= {
.clk_freq_hz = 32000,
}

◆ VSF_HW_CLK_CSI

const vsf_hw_clk_t VSF_HW_CLK_CSI
Initial value:
= {
.clken_region = VSF_HW_CLKRST_REGION(0x00, 7, 1),
.clkrdy_region = VSF_HW_CLKRST_REGION(0x00, 8, 1),
.clk_freq_hz = CSI_VALUE,
}
#define CSI_VALUE
Definition driver.c:34

◆ VSF_HW_CLK_CSI_KER

const vsf_hw_clk_t VSF_HW_CLK_CSI_KER
Initial value:
= {
.clken_region = VSF_HW_CLKRST_REGION(0x00, 9, 1),
.clkrdy_region = VSF_HW_CLKRST_REGION(0x00, 8, 1),
.clk_freq_hz = CSI_VALUE,
}

◆ VSF_HW_CLK_HSE

const vsf_hw_clk_t VSF_HW_CLK_HSE
Initial value:
= {
.clken_region = VSF_HW_CLKRST_REGION(0x00, 16, 1),
.clkrdy_region = VSF_HW_CLKRST_REGION(0x00, 17, 1),
.clk_freq_hz = HSE_VALUE,
}
#define HSE_VALUE
Definition driver.c:26

◆ VSF_HW_CLK_LSE

const vsf_hw_clk_t VSF_HW_CLK_LSE
Initial value:
= {
.clken_region = VSF_HW_CLKRST_REGION(0x1C, 0, 1),
.clkrdy_region = VSF_HW_CLKRST_REGION(0x1c, 1, 1),
.clk_freq_hz = LSE_VALUE,
}
#define LSE_VALUE
Definition driver.c:30

◆ VSF_HW_CLK_PLL1_P

const vsf_hw_clk_t VSF_HW_CLK_PLL1_P
Initial value:
= {
.clkprescaler_region = VSF_HW_CLKRST_REGION(0x0C, 9, 7),
.clken_region = VSF_HW_CLKRST_REGION(0x0B, 16, 1),
.clksrc = &__VSF_HW_CLK_PLL1_VCO,
.clkprescaler_type = VSF_HW_CLK_PRESCALER_ADD1_DIV,
.clkprescaler_min = 0,
.clkprescaler_max = 127,
}
@ VSF_HW_CLK_PRESCALER_ADD1_DIV
Definition driver.c:67
@ VSF_HW_CLK_TYPE_CLK
Definition driver.c:74
uint8_t clktype
Definition driver.c:94

◆ VSF_HW_CLK_PLL1_Q

const vsf_hw_clk_t VSF_HW_CLK_PLL1_Q
Initial value:
= {
.clkprescaler_region = VSF_HW_CLKRST_REGION(0x0C, 16, 7),
.clken_region = VSF_HW_CLKRST_REGION(0x0B, 17, 1),
.clksrc = &__VSF_HW_CLK_PLL1_VCO,
.clkprescaler_type = VSF_HW_CLK_PRESCALER_ADD1_DIV,
.clkprescaler_min = 0,
.clkprescaler_max = 127,
}

◆ VSF_HW_CLK_PLL1_R

const vsf_hw_clk_t VSF_HW_CLK_PLL1_R
Initial value:
= {
.clkprescaler_region = VSF_HW_CLKRST_REGION(0x0C, 24, 7),
.clken_region = VSF_HW_CLKRST_REGION(0x0B, 18, 1),
.clksrc = &__VSF_HW_CLK_PLL1_VCO,
.clkprescaler_type = VSF_HW_CLK_PRESCALER_ADD1_DIV,
.clkprescaler_min = 0,
.clkprescaler_max = 127,
}

◆ VSF_HW_CLK_PLL2_P

const vsf_hw_clk_t VSF_HW_CLK_PLL2_P
Initial value:
= {
.clkprescaler_region = VSF_HW_CLKRST_REGION(0x0E, 9, 7),
.clken_region = VSF_HW_CLKRST_REGION(0x0B, 19, 1),
.clksrc = &__VSF_HW_CLK_PLL2_VCO,
.clkprescaler_type = VSF_HW_CLK_PRESCALER_ADD1_DIV,
.clkprescaler_min = 0,
.clkprescaler_max = 127,
}

◆ VSF_HW_CLK_PLL2_Q

const vsf_hw_clk_t VSF_HW_CLK_PLL2_Q
Initial value:
= {
.clkprescaler_region = VSF_HW_CLKRST_REGION(0x0E, 16, 7),
.clken_region = VSF_HW_CLKRST_REGION(0x0B, 20, 1),
.clksrc = &__VSF_HW_CLK_PLL2_VCO,
.clkprescaler_type = VSF_HW_CLK_PRESCALER_ADD1_DIV,
.clkprescaler_min = 0,
.clkprescaler_max = 127,
}

◆ VSF_HW_CLK_PLL2_R

const vsf_hw_clk_t VSF_HW_CLK_PLL2_R
Initial value:
= {
.clkprescaler_region = VSF_HW_CLKRST_REGION(0x0E, 24, 7),
.clken_region = VSF_HW_CLKRST_REGION(0x0B, 21, 1),
.clksrc = &__VSF_HW_CLK_PLL2_VCO,
.clkprescaler_type = VSF_HW_CLK_PRESCALER_ADD1_DIV,
.clkprescaler_min = 0,
.clkprescaler_max = 127,
}

◆ VSF_HW_CLK_PLL3_P

const vsf_hw_clk_t VSF_HW_CLK_PLL3_P
Initial value:
= {
.clkprescaler_region = VSF_HW_CLKRST_REGION(0x10, 9, 7),
.clken_region = VSF_HW_CLKRST_REGION(0x0B, 22, 1),
.clksrc = &__VSF_HW_CLK_PLL3_VCO,
.clkprescaler_type = VSF_HW_CLK_PRESCALER_ADD1_DIV,
.clkprescaler_min = 0,
.clkprescaler_max = 127,
}

◆ VSF_HW_CLK_PLL3_Q

const vsf_hw_clk_t VSF_HW_CLK_PLL3_Q
Initial value:
= {
.clkprescaler_region = VSF_HW_CLKRST_REGION(0x10, 16, 7),
.clken_region = VSF_HW_CLKRST_REGION(0x0B, 23, 1),
.clksrc = &__VSF_HW_CLK_PLL3_VCO,
.clkprescaler_type = VSF_HW_CLK_PRESCALER_ADD1_DIV,
.clkprescaler_min = 0,
.clkprescaler_max = 127,
}

◆ VSF_HW_CLK_PLL3_R

const vsf_hw_clk_t VSF_HW_CLK_PLL3_R
Initial value:
= {
.clkprescaler_region = VSF_HW_CLKRST_REGION(0x10, 24, 7),
.clken_region = VSF_HW_CLKRST_REGION(0x0B, 24, 1),
.clksrc = &__VSF_HW_CLK_PLL3_VCO,
.clkprescaler_type = VSF_HW_CLK_PRESCALER_ADD1_DIV,
.clkprescaler_min = 0,
.clkprescaler_max = 127,
}

◆ VSF_HW_CLK_SYS

const vsf_hw_clk_t VSF_HW_CLK_SYS
Initial value:
= {
.clksel_region = VSF_HW_CLKRST_REGION(0x04, 0, 3),
.clksel_mapper = __VSF_HW_CLK_SYS_CLKSEL_MAPPER,
}
@ VSF_HW_CLK_TYPE_SEL
Definition driver.c:75

◆ VSF_HW_CLK_SYSD1

const vsf_hw_clk_t VSF_HW_CLK_SYSD1
Initial value:
= {
.clkprescaler_region = VSF_HW_CLKRST_REGION(0x06, 8, 4),
.clksrc = &VSF_HW_CLK_SYS,
.clkprescaler_mapper = __VSF_HW_CLK_SYSD1_PRESCALER,
.clkprescaler_type = VSF_HW_CLK_PRESCALER_SFT,
.clkprescaler_min = 0,
.clkprescaler_max = 9,
}
const vsf_hw_clk_t VSF_HW_CLK_SYS
Definition driver.c:323

◆ VSF_HW_CLK_HCLK

const vsf_hw_clk_t VSF_HW_CLK_HCLK
Initial value:
= {
.clkprescaler_region = VSF_HW_CLKRST_REGION(0x06, 0, 4),
.clksrc = &VSF_HW_CLK_SYSD1,
.clkprescaler_mapper = __VSF_HW_CLK_SYSD1_PRESCALER,
.clkprescaler_type = VSF_HW_CLK_PRESCALER_SFT,
.clkprescaler_min = 0,
.clkprescaler_max = 9,
}
const vsf_hw_clk_t VSF_HW_CLK_SYSD1
Definition driver.c:317

◆ VSF_HW_CLK_PER

const vsf_hw_clk_t VSF_HW_CLK_PER
Initial value:
= {
.clksel_region = VSF_HW_CLKRST_REGION(0x13, 28, 2),
.clksel_mapper = __VSF_HW_CLK_PER_CLKSEL_MAPPER,
}

◆ VSF_HW_CLK_PCLK1

const vsf_hw_clk_t VSF_HW_CLK_PCLK1
Initial value:
= {
.clkprescaler_region = VSF_HW_CLKRST_REGION(0x07, 4, 3),
.clksrc = &VSF_HW_CLK_HCLK,
.clkprescaler_mapper = __VSF_HW_CLK_PCLK_PRESCALER,
.clkprescaler_type = VSF_HW_CLK_PRESCALER_SFT,
.clkprescaler_min = 0,
.clkprescaler_max = 4,
}
const vsf_hw_clk_t VSF_HW_CLK_HCLK
Definition driver.c:329

◆ VSF_HW_CLK_PCLK2

const vsf_hw_clk_t VSF_HW_CLK_PCLK2
Initial value:
= {
.clkprescaler_region = VSF_HW_CLKRST_REGION(0x07, 8, 3),
.clksrc = &VSF_HW_CLK_HCLK,
.clkprescaler_mapper = __VSF_HW_CLK_PCLK_PRESCALER,
.clkprescaler_type = VSF_HW_CLK_PRESCALER_SFT,
.clkprescaler_min = 0,
.clkprescaler_max = 4,
}

◆ VSF_HW_CLK_PCLK3

const vsf_hw_clk_t VSF_HW_CLK_PCLK3
Initial value:
= {
.clkprescaler_region = VSF_HW_CLKRST_REGION(0x06, 4, 3),
.clksrc = &VSF_HW_CLK_HCLK,
.clkprescaler_mapper = __VSF_HW_CLK_PCLK_PRESCALER,
.clkprescaler_type = VSF_HW_CLK_PRESCALER_SFT,
.clkprescaler_min = 0,
.clkprescaler_max = 4,
}

◆ VSF_HW_CLK_PCLK4

const vsf_hw_clk_t VSF_HW_CLK_PCLK4
Initial value:
= {
.clkprescaler_region = VSF_HW_CLKRST_REGION(0x08, 4, 3),
.clksrc = &VSF_HW_CLK_HCLK,
.clkprescaler_mapper = __VSF_HW_CLK_PCLK_PRESCALER,
.clkprescaler_type = VSF_HW_CLK_PRESCALER_SFT,
.clkprescaler_min = 0,
.clkprescaler_max = 4,
}

◆ VSF_HW_CLK_USART16

const vsf_hw_clk_t VSF_HW_CLK_USART16
Initial value:
= {
.clksel_region = VSF_HW_CLKSEL_USART16,
.clksel_mapper = __VSF_HW_CLK_USART_APB2_CLKSEL_MAPPER,
}
@ VSF_HW_CLKSEL_USART16
Definition driver.c:45

◆ VSF_HW_CLK_USART234578

const vsf_hw_clk_t VSF_HW_CLK_USART234578
Initial value:
= {
.clksel_region = VSF_HW_CLKSEL_USART234578,
.clksel_mapper = __VSF_HW_CLK_USART_APB1_CLKSEL_MAPPER,
}
@ VSF_HW_CLKSEL_USART234578
Definition driver.c:46

◆ VSF_HW_CLK_SDMMC

const vsf_hw_clk_t VSF_HW_CLK_SDMMC
Initial value:
= {
.clksel_region = VSF_HW_CLKSEL_SDMMC,
.clksel_mapper = __VSF_HW_CLK_SDMMC_CLKSEL_MAPPER,
}
@ VSF_HW_CLKSEL_SDMMC
Definition driver.c:47