1/**************************************************************************//**
2 * @file     system_ARMCM4.c
3 * @brief    CMSIS Device System Source File for
4 *           ARMCM4 Device
5 * @version  V2.0.0
6 * @date     06. April 2023
7 ******************************************************************************/
8/*
9 * Copyright (c) 2009-2023 Arm Limited. All rights reserved.
10 *
11 * SPDX-License-Identifier: Apache-2.0
12 *
13 * Licensed under the Apache License, Version 2.0 (the License); you may
14 * not use this file except in compliance with the License.
15 * You may obtain a copy of the License at
16 *
17 * www.apache.org/licenses/LICENSE-2.0
18 *
19 * Unless required by applicable law or agreed to in writing, software
20 * distributed under the License is distributed on an AS IS BASIS, WITHOUT
21 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
22 * See the License for the specific language governing permissions and
23 * limitations under the License.
24 */
25
26#if defined (ARMCM4)
27  #include "ARMCM4.h"
28#else
29  #error device not specified!
30#endif
31
32/*----------------------------------------------------------------------------
33  Define clocks
34 *----------------------------------------------------------------------------*/
35#define  XTAL            (50000000UL)     /* Oscillator frequency */
36
37#define  SYSTEM_CLOCK    (XTAL / 2U)
38
39/*----------------------------------------------------------------------------
40  Exception / Interrupt Vector table
41 *----------------------------------------------------------------------------*/
42extern const VECTOR_TABLE_Type __VECTOR_TABLE[240];
43
44
45/*----------------------------------------------------------------------------
46  System Core Clock Variable
47 *----------------------------------------------------------------------------*/
48uint32_t SystemCoreClock = SYSTEM_CLOCK;  /* System Core Clock Frequency */
49
50
51/*----------------------------------------------------------------------------
52  System Core Clock update function
53 *----------------------------------------------------------------------------*/
54void SystemCoreClockUpdate (void)
55{
56  SystemCoreClock = SYSTEM_CLOCK;
57}
58
59/*----------------------------------------------------------------------------
60  System initialization function
61 *----------------------------------------------------------------------------*/
62void SystemInit (void)
63{
64
65#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)
66  SCB->VTOR = (uint32_t) &(__VECTOR_TABLE[0]);
67#endif
68
69#if defined (__FPU_USED) && (__FPU_USED == 1U)
70  SCB->CPACR |= ((3U << 10U*2U) |           /* enable CP10 Full Access */
71                 (3U << 11U*2U)  );         /* enable CP11 Full Access */
72#endif
73
74#ifdef UNALIGNED_SUPPORT_DISABLE
75  SCB->CCR |= SCB_CCR_UNALIGN_TRP_Msk;
76#endif
77
78  SystemCoreClock = SYSTEM_CLOCK;
79}
80