Clock

../_images/clk.svg

Examples

#include "halmcu/hal/clk.h"
#include "halmcu/compiler.h"

int main(void)
{
	clk_init(CLK_HSI, 16000000);

	uint32_t hclk = clk_get_hclk_frequency();
	uint32_t pclk = clk_get_pclk_frequency();
	unused(hclk);
	unused(pclk);

	while (1) {
		/* hang */
	}

	return 0;
}

HAL

Functions

bool clk_init(clk_source_t clock_source, uint32_t target_hz)

LL

Enums

enum clk_source_t

Clock source type

Values:

enumerator CLK_LSI

Low-speed internal oscillator

enumerator CLK_HSI

High-speed internal oscillator

enumerator CLK_LSE

Low-speed external oscillator

enumerator CLK_HSE

High-speed external oscillator

enumerator CLK_PLL

PLL

enumerator CLK_PLL_BYPASS

PLL bypass

Functions

void clk_reset(void)

Reset CLK unit.

This function makes CLK unit the reset state.

void clk_enable_peripheral(periph_t peri)

Enable peripheral clock.

Parameters

peri[in] enumerated in periph_t

void clk_disable_peripheral(periph_t peri)

Disable peripheral clock.

Parameters

peri[in] enumerated in periph_t

void clk_enable_source(clk_source_t clk)

Enable clock source.

Parameters

clk[in] Clock source.

void clk_disable_source(clk_source_t clk)

Disable clock source.

Parameters

clk[in] Clock source.

void clk_set_source(clk_source_t clk)

Select main clock source.

clk_source_t clk_get_source(void)

Get main clock source.

bool clk_set_pll_frequency(clk_source_t clk, clk_source_t clkin, uint32_t hz)

Set frequency.

void clk_start_pll(void)

Enable PLL.

void clk_stop_pll(void)

Disable PLL.

bool clk_is_pll_locked(void)

Check if PLL is locked.

uint32_t clk_get_hclk_frequency(void)

Get processor clock frequency in Hz.

uint32_t clk_get_pclk_frequency(void)

Get PCLK frequency in Hz.

uint32_t clk_get_frequency(clk_source_t clk)

Get clock frequency in Hz.

clk_source_t clk_get_peripheral_clock_source(periph_t peri)

Get peripheral clock source.

void clk_set_peripheral_clock_source(periph_t peri, clk_source_t clk)
uint32_t clk_get_peripheral_clock_source_frequency(periph_t peri)
void clk_enable_output(void)
void clk_disable_output(void)
void clk_set_output_prescaler(uint32_t div_factor)
void clk_set_output_source(clk_source_t clk)