Skip to content

Commit 8f3e72f

Browse files
committed
Implement SystemCoreClockUpdate () function
1 parent 0a9e5fa commit 8f3e72f

File tree

1 file changed

+22
-1
lines changed

1 file changed

+22
-1
lines changed

hal/targets/cmsis/TARGET_RENESAS/TARGET_VK_RZ_A1H/system_VKRZA1H.c

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,12 @@ void FPUEnable(void);
4949

5050
#endif
5151

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+
5258
uint32_t IRQNestLevel;
5359
unsigned char seen_id0_active = 0; // single byte to hold a flag used in the workaround for GIC errata 733075
5460
uint32_t SystemCoreClock = CM0_RENESAS_RZ_A1_I_CLK; /*!< System Clock Frequency (Core Clock) */
@@ -209,7 +215,22 @@ uint32_t InterruptHandlerUnregister (IRQn_Type irq)
209215
*/
210216
void SystemCoreClockUpdate (void)
211217
{
212-
SystemCoreClock = CM0_RENESAS_RZ_A1_I_CLK;
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+
}
213234
}
214235

215236

0 commit comments

Comments
 (0)