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_MAX78000_INCLUDE_SYSTEM_MAX78000_H_ 22 #define LIBRARIES_CMSIS_DEVICE_MAXIM_MAX78000_INCLUDE_SYSTEM_MAX78000_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 MAX78000, replace with HIRC_FREQ! 37 #define HIRC_FREQ CRYPTO_FREQ 38 #endif 39 40 /* NOTE: EXTCLK needs to be defined by user based on the clock they supply */ 41 #ifndef EXTCLK_FREQ 42 #define EXTCLK_FREQ 75000000 43 #endif 44 45 /* NOTE: This is the nominal value for INRO. The actual value may vary from chip to chip. 46 Update if use of this oscillator requires precise timing. 47 This is default device setting. Update this if user changes to other 48 available value.*/ 49 /* NOTE: INRO was previously named NANORING */ 50 #ifndef INRO_FREQ 51 #define INRO_FREQ 30000 52 #endif 53 54 #ifndef IPO_FREQ 55 #define IPO_FREQ 100000000 56 #endif 57 58 #ifndef ISO_FREQ 59 #define ISO_FREQ 60000000 60 #endif 61 62 #ifndef IBRO_FREQ 63 #define IBRO_FREQ 7372800 64 #endif 65 66 #ifndef ERTCO_FREQ 67 #define ERTCO_FREQ 32768 68 #endif 69 70 #ifndef HIRC_FREQ 71 #define HIRC_FREQ IPO_FREQ 72 #endif 73 74 extern uint32_t SystemCoreClock; /*!< System Clock Frequency (Core Clock) */ 75 #ifdef PeripheralClock 76 #warning PeripheralClock define is being overidden. 77 #else 78 #define PeripheralClock (SystemCoreClock / 2) /*!< Peripheral Clock Frequency */ 79 #endif 80 81 /* 82 * Initialize the system 83 * 84 * @brief Setup the microcontroller system. 85 * Initialize the System and update the SystemCoreClock variable. 86 */ 87 void SystemInit(void); 88 89 /* 90 * Update SystemCoreClock variable 91 * 92 * @brief Updates the SystemCoreClock with current core Clock 93 * retrieved from CPU registers. 94 */ 95 void SystemCoreClockUpdate(void); 96 97 #ifdef __cplusplus 98 } 99 #endif 100 101 #endif // LIBRARIES_CMSIS_DEVICE_MAXIM_MAX78000_INCLUDE_SYSTEM_MAX78000_H_ 102