libopencm3
A free/libre/open-source firmware library for various ARM Cortex-M3 microcontrollers.
rcc.h
Go to the documentation of this file.
1/** @defgroup rcc_defines Reset and Clock Control
2
3@brief <b>Defined Constants and Types for the LM4F Reset and Clock Control</b>
4
5@ingroup LM4Fxx_defines
6
7@version 1.0.0
8
9@author @htmlonly &copy; @endhtmlonly 2012
10Alexandru Gagniuc <mr.nuke.me@gmail.com>
11
12@date 10 March 2013
13
14LGPL License Terms @ref lgpl_license
15*/
16
17/*
18 * This file is part of the libopencm3 project.
19 *
20 * Copyright (C) 2012 Alexandru Gagniuc <mr.nuke.me@gmail.com>
21 *
22 * This library is free software: you can redistribute it and/or modify
23 * it under the terms of the GNU Lesser General Public License as published by
24 * the Free Software Foundation, either version 3 of the License, or
25 * (at your option) any later version.
26 *
27 * This library is distributed in the hope that it will be useful,
28 * but WITHOUT ANY WARRANTY; without even the implied warranty of
29 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
30 * GNU Lesser General Public License for more details.
31 *
32 * You should have received a copy of the GNU Lesser General Public License
33 * along with this library. If not, see <http://www.gnu.org/licenses/>.
34 */
35
36#ifndef LM4F_RCC_H
37#define LM4F_RCC_H
38
39/**@{*/
40
42
43/**
44 * \brief Oscillator source values
45 *
46 * Possible values of the oscillator source.
47 */
48enum osc_src {
54};
55
56/**
57 * \brief PWM clock divisor values
58 *
59 * Possible values of the binary divisor used to predivide the system clock down
60 * for use as the timing reference for the PWM module.
61 */
69};
70
71/**
72 * \brief Predefined crystal values
73 *
74 * Predefined crystal values for the XTAL field in SYSCTL_RCC.
75 * Using these predefined values in the XTAL field, the SYSCTL_PLLFREQ0 and
76 * SYSCTL_PLLFREQ1 are automatically adjusted in hardware to provide a PLL clock
77 * of 400MHz.
78 */
79enum xtal_t {
101};
102
103/* =============================================================================
104 * Function prototypes
105 * ---------------------------------------------------------------------------*/
107/* Low-level clock API */
108void rcc_configure_xtal(enum xtal_t xtal);
109void rcc_disable_main_osc(void);
110void rcc_disable_interal_osc(void);
111void rcc_enable_main_osc(void);
112void rcc_enable_interal_osc(void);
113void rcc_enable_rcc2(void);
114void rcc_pll_off(void);
115void rcc_pll_on(void);
116void rcc_set_osc_source(enum osc_src src);
117void rcc_pll_bypass_disable(void);
118void rcc_pll_bypass_enable(void);
119void rcc_set_pll_divisor(uint8_t div400);
120void rcc_set_pwm_divisor(enum pwm_clkdiv div);
121void rcc_usb_pll_off(void);
122void rcc_usb_pll_on(void);
123void rcc_wait_for_pll_ready(void);
124/* High-level clock API */
125void rcc_change_pll_divisor(uint8_t plldiv400);
126uint32_t rcc_get_system_clock_frequency(void);
127void rcc_sysclk_config(enum osc_src src, enum xtal_t xtal, uint8_t pll_div400);
128
130
131/**@}*/
132
133#endif /* LM4F_RCC_H */
#define END_DECLS
Definition: common.h:34
#define BEGIN_DECLS
Definition: common.h:33
void rcc_wait_for_pll_ready(void)
Wait for main PLL to lock.
Definition: rcc.c:336
void rcc_set_pll_divisor(uint8_t div400)
Set the PLL clock divisor (from 400MHz)
Definition: rcc.c:273
uint32_t rcc_get_system_clock_frequency(void)
Get the system clock frequency.
Definition: rcc.c:383
void rcc_enable_interal_osc(void)
Enable the internal oscillator.
Definition: rcc.c:164
osc_src
Oscillator source values.
Definition: rcc.h:48
void rcc_disable_interal_osc(void)
Disable the internal oscillator.
Definition: rcc.c:144
void rcc_pll_bypass_enable(void)
Enable the PLL bypass and use the oscillator clock.
Definition: rcc.c:249
void rcc_configure_xtal(enum xtal_t xtal)
Configure the crystal type connected to the device.
Definition: rcc.c:119
void rcc_pll_off(void)
Power down the main PLL.
Definition: rcc.c:190
void rcc_disable_main_osc(void)
Disable the main oscillator.
Definition: rcc.c:134
void rcc_usb_pll_off(void)
Power down the USB PLL.
Definition: rcc.c:312
void rcc_set_osc_source(enum osc_src src)
Set the oscillator source to be used by the system clock.
Definition: rcc.c:216
void rcc_change_pll_divisor(uint8_t plldiv400)
Change the PLL divisor.
Definition: rcc.c:364
xtal_t
Predefined crystal values.
Definition: rcc.h:79
void rcc_sysclk_config(enum osc_src src, enum xtal_t xtal, uint8_t pll_div400)
Configure the system clock source.
Definition: rcc.c:443
pwm_clkdiv
PWM clock divisor values.
Definition: rcc.h:62
void rcc_pll_bypass_disable(void)
Disable the PLL bypass and use the PLL clock.
Definition: rcc.c:235
void rcc_set_pwm_divisor(enum pwm_clkdiv div)
Set the PWM unit clock divisor.
Definition: rcc.c:294
void rcc_enable_rcc2(void)
Enable the use of SYSCTL_RCC2 register for clock control.
Definition: rcc.c:177
void rcc_usb_pll_on(void)
Power up the USB PLL.
Definition: rcc.c:325
void rcc_pll_on(void)
Power up the main PLL.
Definition: rcc.c:203
void rcc_enable_main_osc(void)
Enable the main oscillator.
Definition: rcc.c:154
@ OSCSRC_PIOSC_D4
Definition: rcc.h:51
@ OSCSRC_PIOSC
Definition: rcc.h:50
@ OSCSRC_32K_EXT
Definition: rcc.h:53
@ OSCSRC_MOSC
Definition: rcc.h:49
@ OSCSRC_30K_INT
Definition: rcc.h:52
@ XTAL_5M_12
Definition: rcc.h:84
@ XTAL_16M_384
Definition: rcc.h:96
@ XTAL_7M_3728
Definition: rcc.h:87
@ XTAL_8M_192
Definition: rcc.h:89
@ XTAL_18M
Definition: rcc.h:97
@ XTAL_13M_56
Definition: rcc.h:93
@ XTAL_14M_31818
Definition: rcc.h:94
@ XTAL_16M
Definition: rcc.h:95
@ XTAL_8M
Definition: rcc.h:88
@ XTAL_20M
Definition: rcc.h:98
@ XTAL_25M
Definition: rcc.h:100
@ XTAL_12M
Definition: rcc.h:91
@ XTAL_4M_9152
Definition: rcc.h:82
@ XTAL_5M
Definition: rcc.h:83
@ XTAL_12M_288
Definition: rcc.h:92
@ XTAL_24M
Definition: rcc.h:99
@ XTAL_10M
Definition: rcc.h:90
@ XTAL_4M
Definition: rcc.h:80
@ XTAL_6M
Definition: rcc.h:85
@ XTAL_4M_096
Definition: rcc.h:81
@ XTAL_6M_144
Definition: rcc.h:86
@ PWMDIV_2
Definition: rcc.h:63
@ PWMDIV_4
Definition: rcc.h:64
@ PWMDIV_8
Definition: rcc.h:65
@ PWMDIV_16
Definition: rcc.h:66
@ PWMDIV_64
Definition: rcc.h:68
@ PWMDIV_32
Definition: rcc.h:67
#define SYSCTL_RCC_XTAL_6M
#define SYSCTL_RCC_XTAL_25M
#define SYSCTL_RCC_PWMDIV_2
#define SYSCTL_RCC_XTAL_14M_31818
#define SYSCTL_RCC_XTAL_6M_144
#define SYSCTL_RCC_PWMDIV_8
#define SYSCTL_RCC_XTAL_4M_9152
#define SYSCTL_RCC_XTAL_12M
#define SYSCTL_RCC_PWMDIV_32
#define SYSCTL_RCC2_OSCSRC2_MOSC
#define SYSCTL_RCC_XTAL_8M
#define SYSCTL_RCC_PWMDIV_64
#define SYSCTL_RCC_XTAL_24M
#define SYSCTL_RCC2_OSCSRC2_PIOSC
#define SYSCTL_RCC2_OSCSRC2_30K
#define SYSCTL_RCC_PWMDIV_4
#define SYSCTL_RCC_XTAL_5M
#define SYSCTL_RCC2_OSCSRC2_PIOSC_D4
#define SYSCTL_RCC_XTAL_16M_384
#define SYSCTL_RCC_XTAL_10M
#define SYSCTL_RCC_XTAL_4M_096
#define SYSCTL_RCC_XTAL_20M
#define SYSCTL_RCC_XTAL_16M
#define SYSCTL_RCC_XTAL_7M_3728
#define SYSCTL_RCC_XTAL_12M_288
#define SYSCTL_RCC_XTAL_5M_12
#define SYSCTL_RCC_XTAL_4M
#define SYSCTL_RCC_PWMDIV_16
#define SYSCTL_RCC_XTAL_8M_192
#define SYSCTL_RCC_XTAL_18M
#define SYSCTL_RCC2_OSCSRC2_32K768
#define SYSCTL_RCC_XTAL_13M_56