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

Data Structures

struct  vsf_hw_clk_t
 

Enumerations

enum  {
  VSF_HW_CLK_PRESCALER_NONE = 0 ,
  VSF_HW_CLK_PRESCALER_CONST ,
  VSF_HW_CLK_PRESCALER_DIV ,
  VSF_HW_CLK_PRESCALER_RSHIFT ,
  VSF_HW_CLK_PRESCALER_FUNC
}
 
enum  {
  VSF_HW_CLK_TYPE_CONST ,
  VSF_HW_CLK_TYPE_CLK ,
  VSF_HW_CLK_TYPE_SEL
}
 
enum  {
  VSF_HW_CLK_RDY_BIT = 0 ,
  VSF_HW_CLK_RDY_MATCH_CLKSEL
}
 

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)
 
void vsf_hw_clk_enable (const vsf_hw_clk_t *clk)
 
void vsf_hw_clk_disable (const vsf_hw_clk_t *clk)
 
bool vsf_hw_clk_is_enabled (const vsf_hw_clk_t *clk)
 
bool vsf_hw_clk_is_ready (const vsf_hw_clk_t *clk)
 
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)
 
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)
 
void SystemInit (void)
 Setup the microcontroller system.
 
void system_core_clock_update (void)
 
int __low_level_init (void)
 
bool vsf_driver_init (void)
 common hal drivers
 

Variables

const vsf_hw_clk_t VSF_HW_CLK_HSE
 
const vsf_hw_clk_t VSF_HW_CLK_HSE_TO_SYS
 
const vsf_hw_clk_t VSF_HW_CLK_HSI48
 
const vsf_hw_clk_t VSF_HW_CLK_HSI8
 
const vsf_hw_clk_t VSF_HW_CLK_HSI
 
const vsf_hw_clk_t VSF_HW_CLK_LSE
 
const vsf_hw_clk_t VSF_HW_CLK_LSI
 
const vsf_hw_clk_t VSF_HW_CLK_HSI_TO_SYS
 
const vsf_hw_clk_t VSF_HW_CLK_PLL
 
const vsf_hw_clk_t VSF_HW_CLK_PLLP
 
const vsf_hw_clk_t VSF_HW_CLK_PLLU
 
const vsf_hw_clk_t VSF_HW_CLK_SYS
 
const vsf_hw_clk_t VSF_HW_CLK_AHB
 
const vsf_hw_clk_t VSF_HW_CLK_SYSTICK_EXT
 
const vsf_hw_clk_t VSF_HW_CLK_APB1
 
const vsf_hw_clk_t VSF_HW_CLK_APB2
 
const vsf_hw_clk_t VSF_HW_CLK_OTGFS1
 
unsigned int system_core_clock = HICK_VALUE
 

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
VSF_HW_CLK_PRESCALER_NONE 
VSF_HW_CLK_PRESCALER_CONST 
VSF_HW_CLK_PRESCALER_DIV 
VSF_HW_CLK_PRESCALER_RSHIFT 
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 

◆ anonymous enum

anonymous enum
Enumerator
VSF_HW_CLK_RDY_BIT 
VSF_HW_CLK_RDY_MATCH_CLKSEL 

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_hw_clk_enable()

void vsf_hw_clk_enable ( const vsf_hw_clk_t clk)

◆ vsf_hw_clk_disable()

void vsf_hw_clk_disable ( const vsf_hw_clk_t clk)

◆ vsf_hw_clk_is_enabled()

bool vsf_hw_clk_is_enabled ( const vsf_hw_clk_t clk)

◆ vsf_hw_clk_is_ready()

bool vsf_hw_clk_is_ready ( const vsf_hw_clk_t clk)

◆ vsf_hw_clk_config()

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 
)

◆ vsf_hw_pll_config()

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 
)

◆ SystemInit()

void SystemInit ( void  )

Setup the microcontroller system.

Initialize the System and update the SystemCoreClock variable.

◆ system_core_clock_update()

void system_core_clock_update ( void  )

◆ __low_level_init()

int __low_level_init ( void  )

◆ 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;

Variable Documentation

◆ VSF_HW_CLK_HSE

const vsf_hw_clk_t VSF_HW_CLK_HSE
Initial value:
= {
.clkbypass_region = VSF_HW_CLKRST_REGION(0x00, 18, 1),
.clken_region = VSF_HW_CLKRST_REGION(0x00, 16, 1),
.clkrdy_region = VSF_HW_CLKRST_REGION(0x00, 17, 1),
.clk_freq_hz = HEXT_VALUE,
.clksrc_type = VSF_HW_CLK_TYPE_CONST,
}
#define VSF_HW_CLKRST_REGION
Definition common.h:38
@ VSF_HW_CLK_TYPE_CONST
Definition driver.c:35
#define HEXT_VALUE
in the following line adjust the value of high speed external crystal (hext) used in your application
Definition at32f402_405_conf.h:42

◆ VSF_HW_CLK_HSE_TO_SYS

const vsf_hw_clk_t VSF_HW_CLK_HSE_TO_SYS
Initial value:
= {
.clkprescaler_region = VSF_HW_CLKRST_REGION(0x29, 19, 3),
.clksrc = &VSF_HW_CLK_HSE,
.clkprescaler_type = VSF_HW_CLK_PRESCALER_RSHIFT,
.clkprescaler_max = 5,
.update_flash_latency = 1,
}
@ VSF_HW_CLK_PRESCALER_RSHIFT
Definition driver.c:31
@ VSF_HW_CLK_TYPE_CLK
Definition driver.c:36
const vsf_hw_clk_t VSF_HW_CLK_HSE
Definition driver.c:77
uint8_t clksrc_type
Definition driver.c:68

◆ VSF_HW_CLK_HSI48

const vsf_hw_clk_t VSF_HW_CLK_HSI48
Initial value:
= {
.clkcaltrim_region = VSF_HW_CLKRST_REGION(0x00, 2, 14),
.clkcakkey_region = VSF_HW_CLKRST_REGION(0x28, 0, 8),
.clken_region = VSF_HW_CLKRST_REGION(0x00, 0, 1),
.clkrdy_region = VSF_HW_CLKRST_REGION(0x00, 1, 1),
.clk_freq_hz = 48 * 1000 * 1000,
.clksrc_type = VSF_HW_CLK_TYPE_CONST,
}

◆ VSF_HW_CLK_HSI8

const vsf_hw_clk_t VSF_HW_CLK_HSI8
Initial value:
= {
.clksrc = &VSF_HW_CLK_HSI48,
.prescaler = 6,
.clkprescaler_type = VSF_HW_CLK_PRESCALER_CONST,
}
const vsf_hw_clk_t VSF_HW_CLK_HSI48
Definition driver.c:94
@ VSF_HW_CLK_PRESCALER_CONST
Definition driver.c:29

◆ VSF_HW_CLK_HSI

const vsf_hw_clk_t VSF_HW_CLK_HSI
Initial value:
= {
.clksel_region = VSF_HW_CLKRST_REGION(0x28, 12, 1),
.clksel_mapper = __VSF_HW_CLK_HSI_CLKSEL_MAPPER,
}
@ VSF_HW_CLK_TYPE_SEL
Definition driver.c:37

◆ VSF_HW_CLK_LSE

const vsf_hw_clk_t VSF_HW_CLK_LSE
Initial value:
= {
.clkbypass_region = VSF_HW_CLKRST_REGION(0x00, 18, 1),
.clken_region = VSF_HW_CLKRST_REGION(0x00, 16, 1),
.clkrdy_region = VSF_HW_CLKRST_REGION(0x00, 17, 1),
.clk_freq_hz = HEXT_VALUE,
.clksrc_type = VSF_HW_CLK_TYPE_CONST,
}

◆ VSF_HW_CLK_LSI

const vsf_hw_clk_t VSF_HW_CLK_LSI
Initial value:
= {
.clkbypass_region = VSF_HW_CLKRST_REGION(0x00, 18, 1),
.clken_region = VSF_HW_CLKRST_REGION(0x00, 16, 1),
.clkrdy_region = VSF_HW_CLKRST_REGION(0x00, 17, 1),
.clk_freq_hz = HEXT_VALUE,
.clksrc_type = VSF_HW_CLK_TYPE_CONST,
}

◆ VSF_HW_CLK_HSI_TO_SYS

const vsf_hw_clk_t VSF_HW_CLK_HSI_TO_SYS
Initial value:
= {
.clksel_region = VSF_HW_CLKRST_REGION(0x28, 14, 1),
.clkprescaler_region = VSF_HW_CLKRST_REGION(0x29, 16, 3),
.clksel_mapper = __VSF_HW_CLK_HSI_TO_SYS_CLKSEL_MAPPER,
.clkprescaler_type = VSF_HW_CLK_PRESCALER_RSHIFT,
.clkprescaler_max = 4,
.update_flash_latency = 1,
}

◆ VSF_HW_CLK_PLL

const vsf_hw_clk_t VSF_HW_CLK_PLL
Initial value:
= {
.clken_region = VSF_HW_CLKRST_REGION(0x00, 24, 1),
.clkrdy_region = VSF_HW_CLKRST_REGION(0x00, 25, 1),
.clksel_region = VSF_HW_CLKRST_REGION(0x01, 30, 1),
.clkprescaler_region = VSF_HW_CLKRST_REGION(0x01, 0, 16),
.clksel_mapper = __VSF_HW_CLK_PLL_CLKSEL_MAPPER,
.getclk = __vsf_hw_pll_getclk,
.clkprescaler_type = VSF_HW_CLK_PRESCALER_FUNC,
.update_flash_latency = 1,
}
@ VSF_HW_CLK_PRESCALER_FUNC
Definition driver.c:32

◆ VSF_HW_CLK_PLLP

const vsf_hw_clk_t VSF_HW_CLK_PLLP
Initial value:
= {
.clkprescaler_region = VSF_HW_CLKRST_REGION(0x01, 16, 4),
.clksrc = &VSF_HW_CLK_PLL,
.clkprescaler_mapper = __VSF_HW_CLK_PLLP_PRESCALER,
.clkprescaler_type = VSF_HW_CLK_PRESCALER_DIV,
.update_flash_latency = 1,
}
const vsf_hw_clk_t VSF_HW_CLK_PLL
Definition driver.c:152
@ VSF_HW_CLK_PRESCALER_DIV
Definition driver.c:30

◆ VSF_HW_CLK_PLLU

const vsf_hw_clk_t VSF_HW_CLK_PLLU
Initial value:
= {
.clken_region = VSF_HW_CLKRST_REGION(0x01, 29, 1),
.clkrdy_region = VSF_HW_CLKRST_REGION(0x00, 26, 1),
.clkprescaler_region = VSF_HW_CLKRST_REGION(0x01, 20, 3),
.clksrc = &VSF_HW_CLK_PLL,
.clkprescaler_mapper = __VSF_HW_CLK_PLLU_PRESCALER,
.clkprescaler_type = VSF_HW_CLK_PRESCALER_DIV,
}

◆ VSF_HW_CLK_SYS

const vsf_hw_clk_t VSF_HW_CLK_SYS
Initial value:
= {
.clksel_region = VSF_HW_CLKRST_REGION(0x02, 0, 2),
.clkrdy_region = VSF_HW_CLKRST_REGION(0x28, 2, 2),
.clksel_mapper = __VSF_HW_CLK_SYS_CLKSEL_MAPPER,
.update_flash_latency = 1,
}
@ VSF_HW_CLK_RDY_MATCH_CLKSEL
Definition driver.c:41

◆ VSF_HW_CLK_AHB

const vsf_hw_clk_t VSF_HW_CLK_AHB
Initial value:
= {
.clksrc = &VSF_HW_CLK_SYS,
.clkprescaler_mapper = __VSF_HW_CLK_AHB_PRESCALER,
.clkprescaler_type = VSF_HW_CLK_PRESCALER_DIV,
}
const vsf_hw_clk_t VSF_HW_CLK_SYS
Definition driver.c:190

◆ VSF_HW_CLK_SYSTICK_EXT

const vsf_hw_clk_t VSF_HW_CLK_SYSTICK_EXT
Initial value:
= {
.clksrc = &VSF_HW_CLK_AHB,
.prescaler = 6,
.clkprescaler_type = VSF_HW_CLK_PRESCALER_CONST,
}
const vsf_hw_clk_t VSF_HW_CLK_AHB
Definition driver.c:202

◆ VSF_HW_CLK_APB1

const vsf_hw_clk_t VSF_HW_CLK_APB1
Initial value:
= {
.clkprescaler_region = VSF_HW_CLKRST_REGION(0x02, 10, 3),
.clksrc = &VSF_HW_CLK_AHB,
.clkprescaler_mapper = __VSF_HW_CLK_APB_PRESCALER,
.clkprescaler_type = VSF_HW_CLK_PRESCALER_DIV,
}

◆ VSF_HW_CLK_APB2

const vsf_hw_clk_t VSF_HW_CLK_APB2
Initial value:
= {
.clkprescaler_region = VSF_HW_CLKRST_REGION(0x02, 13, 3),
.clksrc = &VSF_HW_CLK_AHB,
.clkprescaler_mapper = __VSF_HW_CLK_APB_PRESCALER,
.clkprescaler_type = VSF_HW_CLK_PRESCALER_DIV,
}

◆ VSF_HW_CLK_OTGFS1

const vsf_hw_clk_t VSF_HW_CLK_OTGFS1
Initial value:
= {
.clksel_region = VSF_HW_CLKRST_REGION(0x29, 10, 1),
.clksel_mapper = __VSF_HW_CLK_OTGFS1_CLKSEL_MAPPER,
}

◆ system_core_clock

unsigned int system_core_clock = HICK_VALUE
Generated from commit: vsfteam/vsf@3f091ef