MAX32672 Peripheral Driver API
Peripheral Driver API for the MAX32672
All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Modules Pages
system_max32672.h
1/******************************************************************************
2 *
3 * Copyright (C) 2022-2023 Maxim Integrated Products, Inc. (now owned by
4 * Analog Devices, Inc.),
5 * Copyright (C) 2023-2024 Analog Devices, Inc.
6 *
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
10 *
11 * http://www.apache.org/licenses/LICENSE-2.0
12 *
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 *
19 ******************************************************************************/
20
21#ifndef LIBRARIES_CMSIS_DEVICE_MAXIM_MAX32672_INCLUDE_SYSTEM_MAX32672_H_
22#define LIBRARIES_CMSIS_DEVICE_MAXIM_MAX32672_INCLUDE_SYSTEM_MAX32672_H_
23
24#ifdef __cplusplus
25extern "C" {
26#endif
27
28#include <stdint.h>
29
30/*----------------------------------------------------------------------------
31 Define clocks
32 *----------------------------------------------------------------------------*/
33
34/* NOTE: HIRC was previously named CRYPTO */
35#ifdef CRYPTO_FREQ
36#warning WARNING: CRYPTO_FREQ does not exist in MAX32670, replace with HIRC_FREQ!
37#define HIRC_FREQ CRYPTO_FREQ
38#endif
39
40/* This define is included to prevent build errors in existing code.
41 New code should update EXTCLK2_FREQ to match the frequency of the external clock. */
42#ifndef EXTCLK_FREQ
43#define EXTCLK_FREQ 75000000
44#endif
45
46/* NOTE: EXTCLK1 needs to be defined by user based on the clock they supply */
47/* P0.28, Alternate Function 2 */
48#ifndef EXTCLK1_FREQ
49#define EXTCLK1_FREQ 12500000
50#endif
51
52/* NOTE: EXTCLK2 needs to be defined by user based on the clock they supply */
53/* P0.12, Alternate Function 2 */
54#ifndef EXTCLK2_FREQ
55#define EXTCLK2_FREQ EXTCLK_FREQ
56#endif
57
58/* NOTE: This is the nominal value for INRO. The actual value may vary from chip to chip.
59 Update if use of this oscillator requires precise timing.*/
60/* NOTE: INRO was previously named NANORING */
61#ifndef INRO_FREQ
62#define INRO_FREQ 80000
63#endif
64//NOTE: IPO clock bit is documented as 96MHz, but SR says this will be 100.
65#ifndef IPO_FREQ
66#define IPO_FREQ 100000000
67#endif
68
69#ifndef IBRO_FREQ
70#define IBRO_FREQ 7372800
71#endif
72
73/* NOTE: ERFO_FREQ (16MHz-32MHz) needs to be defined by user based on the clock they supply */
74#ifndef ERFO_FREQ
75#define ERFO_FREQ 25000000
76#endif
77
78#ifndef ERTCO_FREQ
79#define ERTCO_FREQ 32768
80#endif
81
82#ifndef HIRC_FREQ
83#define HIRC_FREQ IPO_FREQ
84#endif
85
86extern uint32_t SystemCoreClock;
87#ifdef PeripheralClock
88#warning PeripheralClock define is being overidden.
89#else
90#define PeripheralClock (SystemCoreClock / 2)
91#endif
92
93/*
94 * Initialize the system
95 *
96 * @brief Setup the microcontroller system.
97 * Initialize the System and update the SystemCoreClock variable.
98 */
99void SystemInit(void);
100
101/*
102 * Update SystemCoreClock variable
103 *
104 * @brief Updates the SystemCoreClock with current core Clock
105 * retrieved from cpu registers.
106 */
107void SystemCoreClockUpdate(void);
108
109#ifdef __cplusplus
110}
111#endif
112
113#endif // LIBRARIES_CMSIS_DEVICE_MAXIM_MAX32672_INCLUDE_SYSTEM_MAX32672_H_