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_MAX32520_INCLUDE_SYSTEM_MAX32520_H_
22 #define LIBRARIES_CMSIS_DEVICE_MAXIM_MAX32520_INCLUDE_SYSTEM_MAX32520_H_
23 
24 #ifdef __cplusplus
25 extern "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 MAX32570, replace with ISO_FREQ!
37 #define ISO_FREQ CRYPTO_FREQ
38 #endif
39 
40 /* NOTE: This is the nominal value for INRO. The actual value may vary from chip to chip.
41          Update if use of this oscillator requires precise timing.*/
42 /* NOTE: INO was previosly LIRC8  */
43 #ifndef INRO_FREQ
44 #define INRO_FREQ 8000
45 #endif
46 
47 /* NOTE: IPO was previously HIRC96. */
48 #ifndef IPO_FREQ
49 #define IPO_FREQ 120000000
50 #endif
51 
52 /* NOTE: IBRO was previously HIRC8M. */
53 #ifndef IBRO_FREQ
54 #define IBRO_FREQ 7372800
55 #endif
56 
57 extern uint32_t SystemCoreClock; /*!< System Clock Frequency (Core Clock)  */
58 #ifdef PeripheralClock
59 #warning PeripheralClock define is being overidden.
60 #else
61 #define PeripheralClock (SystemCoreClock / 2) /*!< Peripheral Clock Frequency */
62 #endif
63 
64 /*
65  * Initialize the system
66  *
67  * @brief  Setup the microcontroller system.
68  *         Initialize the System and update the SystemCoreClock variable.
69  */
70 void SystemInit(void);
71 
72 /*
73  * Update SystemCoreClock variable
74  *
75  * @brief  Updates the SystemCoreClock with current core Clock
76  *         retrieved from cpu registers.
77  */
78 void SystemCoreClockUpdate(void);
79 
80 #ifdef __cplusplus
81 }
82 #endif
83 
84 #endif // LIBRARIES_CMSIS_DEVICE_MAXIM_MAX32520_INCLUDE_SYSTEM_MAX32520_H_
85