File tree Expand file tree Collapse file tree 4 files changed +76
-0
lines changed
hal/targets/cmsis/TARGET_RENESAS Expand file tree Collapse file tree 4 files changed +76
-0
lines changed Original file line number Diff line number Diff line change @@ -49,8 +49,15 @@ void FPUEnable(void);
49
49
50
50
#endif
51
51
52
+ #define FRQCR_IFC_MSK (0x0030)
53
+ #define FRQCR_IFC_SHFT (8)
54
+ #define FRQCR_IFC_1P1 (0) /* x1/1 */
55
+ #define FRQCR_IFC_2P3 (1) /* x2/3 */
56
+ #define FRQCR_IFC_1P3 (3) /* x1/3 */
57
+
52
58
uint32_t IRQNestLevel ;
53
59
unsigned char seen_id0_active = 0 ; // single byte to hold a flag used in the workaround for GIC errata 733075
60
+ uint32_t SystemCoreClock = CM0_RENESAS_RZ_A1_I_CLK ; /*!< System Clock Frequency (Core Clock) */
54
61
55
62
56
63
/**
@@ -198,6 +205,35 @@ uint32_t InterruptHandlerUnregister (IRQn_Type irq)
198
205
}
199
206
}
200
207
208
+ /**
209
+ * Update SystemCoreClock variable
210
+ *
211
+ * @param none
212
+ * @return none
213
+ *
214
+ * @brief Updates the SystemCoreClock with current core Clock.
215
+ */
216
+ void SystemCoreClockUpdate (void )
217
+ {
218
+ uint32_t frqcr_ifc = ((uint32_t )CPG .FRQCR & (uint32_t )FRQCR_IFC_MSK ) >> FRQCR_IFC_SHFT ;
219
+
220
+ switch (frqcr_ifc ) {
221
+ case FRQCR_IFC_1P1 :
222
+ SystemCoreClock = CM0_RENESAS_RZ_A1_I_CLK ;
223
+ break ;
224
+ case FRQCR_IFC_2P3 :
225
+ SystemCoreClock = CM0_RENESAS_RZ_A1_I_CLK * 2 / 3 ;
226
+ break ;
227
+ case FRQCR_IFC_1P3 :
228
+ SystemCoreClock = CM0_RENESAS_RZ_A1_I_CLK / 3 ;
229
+ break ;
230
+ default :
231
+ /* do nothing */
232
+ break ;
233
+ }
234
+ }
235
+
236
+
201
237
/**
202
238
* Initialize the system
203
239
*
Original file line number Diff line number Diff line change 43
43
extern "C" {
44
44
#endif
45
45
46
+ extern uint32_t SystemCoreClock ; /*!< System Clock Frequency (Core Clock) */
47
+
46
48
typedef void (* IRQHandler )();
47
49
uint32_t InterruptHandlerRegister (IRQn_Type , IRQHandler );
48
50
uint32_t InterruptHandlerUnregister (IRQn_Type );
Original file line number Diff line number Diff line change @@ -49,8 +49,15 @@ void FPUEnable(void);
49
49
50
50
#endif
51
51
52
+ #define FRQCR_IFC_MSK (0x0030)
53
+ #define FRQCR_IFC_SHFT (8)
54
+ #define FRQCR_IFC_1P1 (0) /* x1/1 */
55
+ #define FRQCR_IFC_2P3 (1) /* x2/3 */
56
+ #define FRQCR_IFC_1P3 (3) /* x1/3 */
57
+
52
58
uint32_t IRQNestLevel ;
53
59
unsigned char seen_id0_active = 0 ; // single byte to hold a flag used in the workaround for GIC errata 733075
60
+ uint32_t SystemCoreClock = CM0_RENESAS_RZ_A1_I_CLK ; /*!< System Clock Frequency (Core Clock) */
54
61
55
62
56
63
/**
@@ -198,6 +205,35 @@ uint32_t InterruptHandlerUnregister (IRQn_Type irq)
198
205
}
199
206
}
200
207
208
+ /**
209
+ * Update SystemCoreClock variable
210
+ *
211
+ * @param none
212
+ * @return none
213
+ *
214
+ * @brief Updates the SystemCoreClock with current core Clock.
215
+ */
216
+ void SystemCoreClockUpdate (void )
217
+ {
218
+ uint32_t frqcr_ifc = ((uint32_t )CPG .FRQCR & (uint32_t )FRQCR_IFC_MSK ) >> FRQCR_IFC_SHFT ;
219
+
220
+ switch (frqcr_ifc ) {
221
+ case FRQCR_IFC_1P1 :
222
+ SystemCoreClock = CM0_RENESAS_RZ_A1_I_CLK ;
223
+ break ;
224
+ case FRQCR_IFC_2P3 :
225
+ SystemCoreClock = CM0_RENESAS_RZ_A1_I_CLK * 2 / 3 ;
226
+ break ;
227
+ case FRQCR_IFC_1P3 :
228
+ SystemCoreClock = CM0_RENESAS_RZ_A1_I_CLK / 3 ;
229
+ break ;
230
+ default :
231
+ /* do nothing */
232
+ break ;
233
+ }
234
+ }
235
+
236
+
201
237
/**
202
238
* Initialize the system
203
239
*
Original file line number Diff line number Diff line change 43
43
extern "C" {
44
44
#endif
45
45
46
+ extern uint32_t SystemCoreClock ; /*!< System Clock Frequency (Core Clock) */
47
+
46
48
typedef void (* IRQHandler )();
47
49
uint32_t InterruptHandlerRegister (IRQn_Type , IRQHandler );
48
50
uint32_t InterruptHandlerUnregister (IRQn_Type );
You can’t perform that action at this time.
0 commit comments