Skip to content

Commit 86c23b0

Browse files
committed
[stm32h563zi_nucleo] Fix clock bug
1 parent 0a24130 commit 86c23b0

1 file changed

Lines changed: 16 additions & 6 deletions

File tree

boards/stm32h563zi_nucleo/board.c

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ static const whal_Stm32h5_Rcc_PeriphClk g_periphClks[] = {
3636
{WHAL_STM32H563_GPIOD_CLOCK},
3737
{WHAL_STM32H563_GPIOC_CLOCK},
3838
{WHAL_STM32H563_GPIOG_CLOCK},
39-
{WHAL_STM32H563_USART2_CLOCK},
39+
{WHAL_STM32H563_USART3_CLOCK},
4040
{WHAL_STM32H563_SPI1_CLOCK},
4141
{WHAL_STM32H563_RNG_CLOCK},
4242
{WHAL_STM32H563_SBS_CLOCK},
@@ -62,14 +62,14 @@ whal_Gpio g_whalGpio = {
6262
WHAL_STM32H5_GPIO_PORT_B, 0, WHAL_STM32H5_GPIO_MODE_OUT,
6363
WHAL_STM32H5_GPIO_OUTTYPE_PUSHPULL, WHAL_STM32H5_GPIO_SPEED_LOW,
6464
WHAL_STM32H5_GPIO_PULL_NONE, 0),
65-
/* USART2 TX on PD5 */
65+
/* USART3 TX on PD8, AF7 (ST-Link VCP) */
6666
[UART_TX_PIN] = WHAL_STM32H5_GPIO_PIN(
67-
WHAL_STM32H5_GPIO_PORT_D, 5, WHAL_STM32H5_GPIO_MODE_ALTFN,
67+
WHAL_STM32H5_GPIO_PORT_D, 8, WHAL_STM32H5_GPIO_MODE_ALTFN,
6868
WHAL_STM32H5_GPIO_OUTTYPE_PUSHPULL, WHAL_STM32H5_GPIO_SPEED_FAST,
6969
WHAL_STM32H5_GPIO_PULL_UP, 7),
70-
/* USART2 RX on PD6 */
70+
/* USART3 RX on PD9, AF7 (ST-Link VCP) */
7171
[UART_RX_PIN] = WHAL_STM32H5_GPIO_PIN(
72-
WHAL_STM32H5_GPIO_PORT_D, 6, WHAL_STM32H5_GPIO_MODE_ALTFN,
72+
WHAL_STM32H5_GPIO_PORT_D, 9, WHAL_STM32H5_GPIO_MODE_ALTFN,
7373
WHAL_STM32H5_GPIO_OUTTYPE_PUSHPULL, WHAL_STM32H5_GPIO_SPEED_FAST,
7474
WHAL_STM32H5_GPIO_PULL_UP, 7),
7575
/* SPI1 SCK on PA5 */
@@ -156,7 +156,7 @@ whal_Timer g_whalTimer = {
156156

157157
/* UART */
158158
whal_Uart g_whalUart = {
159-
.regmap = { WHAL_STM32H563_USART2_REGMAP },
159+
.regmap = { WHAL_STM32H563_USART3_REGMAP },
160160
/* .driver: direct API mapping */
161161

162162
.cfg = &(whal_Stm32h5_Uart_Cfg) {
@@ -266,16 +266,26 @@ whal_Error Board_Init(void)
266266
*(volatile uint32_t *)FLASH_ACR_ADDR = FLASH_ACR_LATENCY_168MHZ;
267267

268268
/* HSI 64 MHz -> PLL1 (HSI/8 * 63 / 3 = 168 MHz) -> SYSCLK = PLL1 */
269+
270+
/* RCC_CR.HSIDIV resets to /4 (16 MHz) on H5, not /1. Force it back to
271+
* /1 so the PLL sees 64 MHz; otherwise the divider chain below silently
272+
* lands on 42 MHz instead of 168 MHz. */
273+
err = whal_Stm32h5_Rcc_SetHsiDiv(&g_whalClock, 0);
274+
if (err)
275+
return err;
276+
269277
err = whal_Stm32h5_Rcc_EnableOsc(&g_whalClock,
270278
&(whal_Stm32h5_Rcc_OscCfg){WHAL_STM32H5_RCC_HSI_CFG});
271279
if (err)
272280
return err;
281+
273282
err = whal_Stm32h5_Rcc_EnablePll1(&g_whalClock, &(whal_Stm32h5_Rcc_PllCfg){
274283
.clkSrc = WHAL_STM32H5_RCC_PLLCLK_SRC_HSI,
275284
.m = 8, .n = 62, .p = 2, .q = 2, .r = 2,
276285
});
277286
if (err)
278287
return err;
288+
279289
err = whal_Stm32h5_Rcc_SetSysClock(&g_whalClock, WHAL_STM32H5_RCC_SYSCLK_SRC_PLL1);
280290
if (err)
281291
return err;

0 commit comments

Comments
 (0)