Skip to content

Commit f9d540c

Browse files
variant(H7): add generic H747X(G-I)xx support
This commit adds generic support for H747XIH and compatible MCUs: * H742X(G-I)H * H743X(G-I)H * H745X(G-I)H * H747X(G-I)H * H750XBH * H753XIH * H755XIH * H757XIH The clock is configured to have core running at 480MHz. Tested successfully (working LED/Joystick via GPIO) on STM32H747I-DISCO. Signed-off-by: Mathieu Choplain <[email protected]>
1 parent 7c3c9f0 commit f9d540c

File tree

4 files changed

+421
-2
lines changed

4 files changed

+421
-2
lines changed

Diff for: README.md

+8
Original file line numberDiff line numberDiff line change
@@ -541,14 +541,18 @@ User can add a STM32 based board following this [wiki](https://github.com/stm32d
541541
| :green_heart: | STM32H733ZGT | Generic Board | *2.4.0* | |
542542
| :green_heart: | STM32H742IG<br>STM32H742II | Generic Board | *2.1.0* | |
543543
| :green_heart: | STM32H742VG<br>STM32H742VI | Generic Board | *2.0.0* | |
544+
| :yellow_heart: | STM32H742XG<br>STM32H742XI | Generic Board | **2.7.0** | |
544545
| :green_heart: | STM32H742ZG<br>STM32H742ZI | Generic Board | *2.0.0* | |
545546
| :green_heart: | STM32H743IG<br>STM32H743II | Generic Board | *2.0.0* | |
546547
| :green_heart: | STM32H743VG<br>STM32H743VI | Generic Board | *2.0.0* | |
547548
| :green_heart: | STM32H743VI | [DevEBox H743VIT6](https://github.com/mcauser/MCUDEV_DEVEBOX_H7XX_M) | *2.2.0* | |
548549
| :green_heart: | STM32H743VI | [WeAct MiniSTM32H743VIT6](https://github.com/WeActStudio/MiniSTM32H7xx) | *2.2.0* | [More info](https://github.com/stm32duino/Arduino_Core_STM32/pull/1552) |
550+
| :yellow_heart: | STM32H743XG<br>STM32H743XI | Generic Board | **2.7.0** | |
549551
| :green_heart: | STM32H743ZG<br>STM32H743ZI | Generic Board | *2.0.0* | |
552+
| :yellow_heart: | STM32H745XG<br>STM32H745XI | Generic Board | **2.7.0** | |
550553
| :green_heart: | STM32H747AG<br>STM32H747AI | Generic Board | *2.0.0* | |
551554
| :green_heart: | STM32H747IG<br>STM32H747II | Generic Board | *2.0.0* | |
555+
| :yellow_heart: | STM32H747XG<br>STM32H747XI | Generic Board | **2.7.0** | |
552556
| :green_heart: | STM32H750ZB | Generic Board | *2.0.0* | |
553557
| :green_heart: | STM32H750IB<br>STM32H750II | Generic Board | *2.0.0* | |
554558
| :green_heart: | STM32H750IB | [Daisy](https://www.electro-smith.com/daisy/daisy) | *1.9.0* | |
@@ -557,10 +561,14 @@ User can add a STM32 based board following this [wiki](https://github.com/stm32d
557561
| :green_heart: | STM32H750VB | Generic Board | *2.0.0* | |
558562
| :green_heart: | STM32H750VB | [DevEBox H750VBT6](https://github.com/mcauser/MCUDEV_DEVEBOX_H7XX_M) | *2.2.0* | |
559563
| :green_heart: | STM32H750VB | [WeAct MiniSTM32H750VBT6](https://github.com/WeActStudio/MiniSTM32H7xx) | *2.2.0* | [More info](https://github.com/stm32duino/Arduino_Core_STM32/pull/1552) |
564+
| :yellow_heart: | STM32H750XB | Generic Board | **2.7.0** | |
560565
| :green_heart: | STM32H753VI | Generic Board | *2.0.0* | |
566+
| :yellow_heart: | STM32H753XI | Generic Board | **2.7.0** | |
561567
| :green_heart: | STM32H753ZI | Generic Board | *2.0.0* | |
568+
| :yellow_heart: | STM32H755XI | Generic Board | **2.7.0** | |
562569
| :green_heart: | STM32H757AI | Generic Board | *2.0.0* | |
563570
| :green_heart: | STM32H757II | Generic Board | *2.0.0* | |
571+
| :yellow_heart: | STM32H757XI | Generic Board | **2.7.0** | |
564572

565573
### Generic STM32L0 boards
566574

Diff for: boards.txt

+96
Original file line numberDiff line numberDiff line change
@@ -7540,6 +7540,22 @@ GenH7.menu.pnum.GENERIC_H742VITX.build.board=GENERIC_H742VITX
75407540
GenH7.menu.pnum.GENERIC_H742VITX.build.product_line=STM32H742xx
75417541
GenH7.menu.pnum.GENERIC_H742VITX.build.variant=STM32H7xx/H742V(G-I)(H-T)_H743V(G-I)(H-T)_H750VBT_H753VI(H-T)
75427542

7543+
# Generic H742XGHx
7544+
GenH7.menu.pnum.GENERIC_H742XGHX=Generic H742XGHx
7545+
GenH7.menu.pnum.GENERIC_H742XGHX.upload.maximum_size=1048576
7546+
GenH7.menu.pnum.GENERIC_H742XGHX.upload.maximum_data_size=524288
7547+
GenH7.menu.pnum.GENERIC_H742XGHX.build.board=GENERIC_H742XGHX
7548+
GenH7.menu.pnum.GENERIC_H742XGHX.build.product_line=STM32H742xx
7549+
GenH7.menu.pnum.GENERIC_H742XGHX.build.variant=STM32H7xx/H742X(G-I)H_H743X(G-I)H_H745X(G-I)H_H747X(G-I)H_H750XBH_H753XIH_H755XIH_H757XIH
7550+
7551+
# Generic H742XIHx
7552+
GenH7.menu.pnum.GENERIC_H742XIHX=Generic H742XIHx
7553+
GenH7.menu.pnum.GENERIC_H742XIHX.upload.maximum_size=2097152
7554+
GenH7.menu.pnum.GENERIC_H742XIHX.upload.maximum_data_size=524288
7555+
GenH7.menu.pnum.GENERIC_H742XIHX.build.board=GENERIC_H742XIHX
7556+
GenH7.menu.pnum.GENERIC_H742XIHX.build.product_line=STM32H742xx
7557+
GenH7.menu.pnum.GENERIC_H742XIHX.build.variant=STM32H7xx/H742X(G-I)H_H743X(G-I)H_H745X(G-I)H_H747X(G-I)H_H750XBH_H753XIH_H755XIH_H757XIH
7558+
75437559
# Generic H742ZGTx
75447560
GenH7.menu.pnum.GENERIC_H742ZGTX=Generic H742ZGTx
75457561
GenH7.menu.pnum.GENERIC_H742ZGTX.upload.maximum_size=1048576
@@ -7620,6 +7636,22 @@ GenH7.menu.pnum.GENERIC_H743VITX.build.board=GENERIC_H743VITX
76207636
GenH7.menu.pnum.GENERIC_H743VITX.build.product_line=STM32H743xx
76217637
GenH7.menu.pnum.GENERIC_H743VITX.build.variant=STM32H7xx/H742V(G-I)(H-T)_H743V(G-I)(H-T)_H750VBT_H753VI(H-T)
76227638

7639+
# Generic H743XGHx
7640+
GenH7.menu.pnum.GENERIC_H743XGHX=Generic H743XGHx
7641+
GenH7.menu.pnum.GENERIC_H743XGHX.upload.maximum_size=1048576
7642+
GenH7.menu.pnum.GENERIC_H743XGHX.upload.maximum_data_size=524288
7643+
GenH7.menu.pnum.GENERIC_H743XGHX.build.board=GENERIC_H743XGHX
7644+
GenH7.menu.pnum.GENERIC_H743XGHX.build.product_line=STM32H743xx
7645+
GenH7.menu.pnum.GENERIC_H743XGHX.build.variant=STM32H7xx/H742X(G-I)H_H743X(G-I)H_H745X(G-I)H_H747X(G-I)H_H750XBH_H753XIH_H755XIH_H757XIH
7646+
7647+
# Generic H743XIHx
7648+
GenH7.menu.pnum.GENERIC_H743XIHX=Generic H743XIHx
7649+
GenH7.menu.pnum.GENERIC_H743XIHX.upload.maximum_size=2097152
7650+
GenH7.menu.pnum.GENERIC_H743XIHX.upload.maximum_data_size=524288
7651+
GenH7.menu.pnum.GENERIC_H743XIHX.build.board=GENERIC_H743XIHX
7652+
GenH7.menu.pnum.GENERIC_H743XIHX.build.product_line=STM32H743xx
7653+
GenH7.menu.pnum.GENERIC_H743XIHX.build.variant=STM32H7xx/H742X(G-I)H_H743X(G-I)H_H745X(G-I)H_H747X(G-I)H_H750XBH_H753XIH_H755XIH_H757XIH
7654+
76237655
# Generic H743ZGTx
76247656
GenH7.menu.pnum.GENERIC_H743ZGTX=Generic H743ZGTx
76257657
GenH7.menu.pnum.GENERIC_H743ZGTX.upload.maximum_size=1048576
@@ -7636,6 +7668,22 @@ GenH7.menu.pnum.GENERIC_H743ZITX.build.board=GENERIC_H743ZITX
76367668
GenH7.menu.pnum.GENERIC_H743ZITX.build.product_line=STM32H743xx
76377669
GenH7.menu.pnum.GENERIC_H743ZITX.build.variant=STM32H7xx/H742Z(G-I)T_H743Z(G-I)T_H747A(G-I)I_H747I(G-I)T_H750ZBT_H753ZIT_H757AII_H757IIT
76387670

7671+
# Generic H745XGHx
7672+
GenH7.menu.pnum.GENERIC_H745XGHX=Generic H745XGHx
7673+
GenH7.menu.pnum.GENERIC_H745XGHX.upload.maximum_size=1048576
7674+
GenH7.menu.pnum.GENERIC_H745XGHX.upload.maximum_data_size=524288
7675+
GenH7.menu.pnum.GENERIC_H745XGHX.build.board=GENERIC_H745XGHX
7676+
GenH7.menu.pnum.GENERIC_H745XGHX.build.product_line=STM32H745xG
7677+
GenH7.menu.pnum.GENERIC_H745XGHX.build.variant=STM32H7xx/H742X(G-I)H_H743X(G-I)H_H745X(G-I)H_H747X(G-I)H_H750XBH_H753XIH_H755XIH_H757XIH
7678+
7679+
# Generic H745XIHx
7680+
GenH7.menu.pnum.GENERIC_H745XIHX=Generic H745XIHx
7681+
GenH7.menu.pnum.GENERIC_H745XIHX.upload.maximum_size=2097152
7682+
GenH7.menu.pnum.GENERIC_H745XIHX.upload.maximum_data_size=524288
7683+
GenH7.menu.pnum.GENERIC_H745XIHX.build.board=GENERIC_H745XIHX
7684+
GenH7.menu.pnum.GENERIC_H745XIHX.build.product_line=STM32H745xx
7685+
GenH7.menu.pnum.GENERIC_H745XIHX.build.variant=STM32H7xx/H742X(G-I)H_H743X(G-I)H_H745X(G-I)H_H747X(G-I)H_H750XBH_H753XIH_H755XIH_H757XIH
7686+
76397687
# Generic H747AGIx
76407688
GenH7.menu.pnum.GENERIC_H747AGIX=Generic H747AGIx
76417689
GenH7.menu.pnum.GENERIC_H747AGIX.upload.maximum_size=1048576
@@ -7668,6 +7716,22 @@ GenH7.menu.pnum.GENERIC_H747IITX.build.board=GENERIC_H747IITX
76687716
GenH7.menu.pnum.GENERIC_H747IITX.build.product_line=STM32H747xx
76697717
GenH7.menu.pnum.GENERIC_H747IITX.build.variant=STM32H7xx/H742Z(G-I)T_H743Z(G-I)T_H747A(G-I)I_H747I(G-I)T_H750ZBT_H753ZIT_H757AII_H757IIT
76707718

7719+
# Generic H747XGHx
7720+
GenH7.menu.pnum.GENERIC_H747XGHX=Generic H747XGHx
7721+
GenH7.menu.pnum.GENERIC_H747XGHX.upload.maximum_size=1048576
7722+
GenH7.menu.pnum.GENERIC_H747XGHX.upload.maximum_data_size=524288
7723+
GenH7.menu.pnum.GENERIC_H747XGHX.build.board=GENERIC_H747XGHX
7724+
GenH7.menu.pnum.GENERIC_H747XGHX.build.product_line=STM32H747xG
7725+
GenH7.menu.pnum.GENERIC_H747XGHX.build.variant=STM32H7xx/H742X(G-I)H_H743X(G-I)H_H745X(G-I)H_H747X(G-I)H_H750XBH_H753XIH_H755XIH_H757XIH
7726+
7727+
# Generic H747XIHx
7728+
GenH7.menu.pnum.GENERIC_H747XIHX=Generic H747XIHx
7729+
GenH7.menu.pnum.GENERIC_H747XIHX.upload.maximum_size=2097152
7730+
GenH7.menu.pnum.GENERIC_H747XIHX.upload.maximum_data_size=524288
7731+
GenH7.menu.pnum.GENERIC_H747XIHX.build.board=GENERIC_H747XIHX
7732+
GenH7.menu.pnum.GENERIC_H747XIHX.build.product_line=STM32H747xx
7733+
GenH7.menu.pnum.GENERIC_H747XIHX.build.variant=STM32H7xx/H742X(G-I)H_H743X(G-I)H_H745X(G-I)H_H747X(G-I)H_H750XBH_H753XIH_H755XIH_H757XIH
7734+
76717735
# Generic H750IBKx
76727736
GenH7.menu.pnum.GENERIC_H750IBKX=Generic H750IBKx
76737737
GenH7.menu.pnum.GENERIC_H750IBKX.upload.maximum_size=131072
@@ -7692,6 +7756,14 @@ GenH7.menu.pnum.GENERIC_H750VBTX.build.board=GENERIC_H750VBTX
76927756
GenH7.menu.pnum.GENERIC_H750VBTX.build.product_line=STM32H750xx
76937757
GenH7.menu.pnum.GENERIC_H750VBTX.build.variant=STM32H7xx/H742V(G-I)(H-T)_H743V(G-I)(H-T)_H750VBT_H753VI(H-T)
76947758

7759+
# Generic H750XBHx
7760+
GenH7.menu.pnum.GENERIC_H750XBHX=Generic H750XBHx
7761+
GenH7.menu.pnum.GENERIC_H750XBHX.upload.maximum_size=131072
7762+
GenH7.menu.pnum.GENERIC_H750XBHX.upload.maximum_data_size=524288
7763+
GenH7.menu.pnum.GENERIC_H750XBHX.build.board=GENERIC_H750XBHX
7764+
GenH7.menu.pnum.GENERIC_H750XBHX.build.product_line=STM32H750xx
7765+
GenH7.menu.pnum.GENERIC_H750XBHX.build.variant=STM32H7xx/H742X(G-I)H_H743X(G-I)H_H745X(G-I)H_H747X(G-I)H_H750XBH_H753XIH_H755XIH_H757XIH
7766+
76957767
# Generic H750ZBTx
76967768
GenH7.menu.pnum.GENERIC_H750ZBTX=Generic H750ZBTx
76977769
GenH7.menu.pnum.GENERIC_H750ZBTX.upload.maximum_size=131072
@@ -7732,6 +7804,14 @@ GenH7.menu.pnum.GENERIC_H753VITX.build.board=GENERIC_H753VITX
77327804
GenH7.menu.pnum.GENERIC_H753VITX.build.product_line=STM32H753xx
77337805
GenH7.menu.pnum.GENERIC_H753VITX.build.variant=STM32H7xx/H742V(G-I)(H-T)_H743V(G-I)(H-T)_H750VBT_H753VI(H-T)
77347806

7807+
# Generic H753XIHx
7808+
GenH7.menu.pnum.GENERIC_H753XIHX=Generic H753XIHx
7809+
GenH7.menu.pnum.GENERIC_H753XIHX.upload.maximum_size=2097152
7810+
GenH7.menu.pnum.GENERIC_H753XIHX.upload.maximum_data_size=524288
7811+
GenH7.menu.pnum.GENERIC_H753XIHX.build.board=GENERIC_H753XIHX
7812+
GenH7.menu.pnum.GENERIC_H753XIHX.build.product_line=STM32H753xx
7813+
GenH7.menu.pnum.GENERIC_H753XIHX.build.variant=STM32H7xx/H742X(G-I)H_H743X(G-I)H_H745X(G-I)H_H747X(G-I)H_H750XBH_H753XIH_H755XIH_H757XIH
7814+
77357815
# Generic H753ZITx
77367816
GenH7.menu.pnum.GENERIC_H753ZITX=Generic H753ZITx
77377817
GenH7.menu.pnum.GENERIC_H753ZITX.upload.maximum_size=2097152
@@ -7740,6 +7820,14 @@ GenH7.menu.pnum.GENERIC_H753ZITX.build.board=GENERIC_H753ZITX
77407820
GenH7.menu.pnum.GENERIC_H753ZITX.build.product_line=STM32H753xx
77417821
GenH7.menu.pnum.GENERIC_H753ZITX.build.variant=STM32H7xx/H742Z(G-I)T_H743Z(G-I)T_H747A(G-I)I_H747I(G-I)T_H750ZBT_H753ZIT_H757AII_H757IIT
77427822

7823+
# Generic H755XIHx
7824+
GenH7.menu.pnum.GENERIC_H755XIHX=Generic H755XIHx
7825+
GenH7.menu.pnum.GENERIC_H755XIHX.upload.maximum_size=2097152
7826+
GenH7.menu.pnum.GENERIC_H755XIHX.upload.maximum_data_size=524288
7827+
GenH7.menu.pnum.GENERIC_H755XIHX.build.board=GENERIC_H755XIHX
7828+
GenH7.menu.pnum.GENERIC_H755XIHX.build.product_line=STM32H755xx
7829+
GenH7.menu.pnum.GENERIC_H755XIHX.build.variant=STM32H7xx/H742X(G-I)H_H743X(G-I)H_H745X(G-I)H_H747X(G-I)H_H750XBH_H753XIH_H755XIH_H757XIH
7830+
77437831
# Generic H757AIIx
77447832
GenH7.menu.pnum.GENERIC_H757AIIX=Generic H757AIIx
77457833
GenH7.menu.pnum.GENERIC_H757AIIX.upload.maximum_size=2097152
@@ -7756,6 +7844,14 @@ GenH7.menu.pnum.GENERIC_H757IITX.build.board=GENERIC_H757IITX
77567844
GenH7.menu.pnum.GENERIC_H757IITX.build.product_line=STM32H757xx
77577845
GenH7.menu.pnum.GENERIC_H757IITX.build.variant=STM32H7xx/H742Z(G-I)T_H743Z(G-I)T_H747A(G-I)I_H747I(G-I)T_H750ZBT_H753ZIT_H757AII_H757IIT
77587846

7847+
# Generic H757XIHx
7848+
GenH7.menu.pnum.GENERIC_H757XIHX=Generic H757XIHx
7849+
GenH7.menu.pnum.GENERIC_H757XIHX.upload.maximum_size=2097152
7850+
GenH7.menu.pnum.GENERIC_H757XIHX.upload.maximum_data_size=524288
7851+
GenH7.menu.pnum.GENERIC_H757XIHX.build.board=GENERIC_H757XIHX
7852+
GenH7.menu.pnum.GENERIC_H757XIHX.build.product_line=STM32H757xx
7853+
GenH7.menu.pnum.GENERIC_H757XIHX.build.variant=STM32H7xx/H742X(G-I)H_H743X(G-I)H_H745X(G-I)H_H747X(G-I)H_H750XBH_H753XIH_H755XIH_H757XIH
7854+
77597855
# Upload menu
77607856
GenH7.menu.upload_method.swdMethod=STM32CubeProgrammer (SWD)
77617857
GenH7.menu.upload_method.swdMethod.upload.protocol=0

Diff for: variants/STM32H7xx/H742X(G-I)H_H743X(G-I)H_H745X(G-I)H_H747X(G-I)H_H750XBH_H753XIH_H755XIH_H757XIH/generic_clock.c

+112-2
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,118 @@
2525
*/
2626
WEAK void SystemClock_Config(void)
2727
{
28-
/* SystemClock_Config can be generated by STM32CubeMX */
29-
#warning "SystemClock_Config() is empty. Default clock at reset is used."
28+
RCC_OscInitTypeDef RCC_OscInitStruct = {};
29+
RCC_ClkInitTypeDef RCC_ClkInitStruct = {};
30+
31+
/** Supply configuration update enable
32+
*/
33+
#if defined(SMPS)
34+
/** If SMPS is available on this MCU, assume that the MCU's board is
35+
* built to power the MCU using the SMPS since it's more efficient.
36+
* In this case, we must configure the MCU to use DIRECT_SMPS_SUPPLY.
37+
*
38+
* N.B.: if the hardware configuration does not match the argument to
39+
* HAL_PWREx_ConfigSupply(), the board will deadlock at this function call.
40+
* This can manifest immediatly or after a RESET/power cycle.
41+
*
42+
* Trying to flash the board at this point will result in errors such as
43+
* "No STM32 target found". To overcome this problem, erase the MCU's flash.
44+
*
45+
* The following settings in STM32CubeProgrammer appear to work for this purpose:
46+
* - Mode: Power down
47+
* - Reset mode: Hardware reset
48+
*/
49+
HAL_PWREx_ConfigSupply(PWR_DIRECT_SMPS_SUPPLY);
50+
#else
51+
/** No SMPS available: use the internal volatage regulator (LDO).
52+
*/
53+
HAL_PWREx_ConfigSupply(PWR_LDO_SUPPLY);
54+
#endif
55+
56+
/** Configure the main internal regulator output voltage
57+
*/
58+
__HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE0);
59+
60+
while(!__HAL_PWR_GET_FLAG(PWR_FLAG_VOSRDY)) {}
61+
62+
/** Initializes the RCC Oscillators according to the specified parameters
63+
* in the RCC_OscInitTypeDef structure.
64+
*/
65+
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI48|RCC_OSCILLATORTYPE_CSI
66+
|RCC_OSCILLATORTYPE_HSI|RCC_OSCILLATORTYPE_LSI;
67+
RCC_OscInitStruct.HSIState = RCC_HSI_DIV1;
68+
RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
69+
RCC_OscInitStruct.LSIState = RCC_LSI_ON;
70+
RCC_OscInitStruct.HSI48State = RCC_HSI48_ON;
71+
RCC_OscInitStruct.CSIState = RCC_CSI_ON;
72+
RCC_OscInitStruct.CSICalibrationValue = RCC_CSICALIBRATION_DEFAULT;
73+
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
74+
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI;
75+
RCC_OscInitStruct.PLL.PLLM = 4;
76+
RCC_OscInitStruct.PLL.PLLN = 60;
77+
RCC_OscInitStruct.PLL.PLLP = 2;
78+
RCC_OscInitStruct.PLL.PLLQ = 5;
79+
RCC_OscInitStruct.PLL.PLLR = 2;
80+
RCC_OscInitStruct.PLL.PLLRGE = RCC_PLL1VCIRANGE_3;
81+
RCC_OscInitStruct.PLL.PLLVCOSEL = RCC_PLL1VCOWIDE;
82+
RCC_OscInitStruct.PLL.PLLFRACN = 0;
83+
if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
84+
{
85+
Error_Handler();
86+
}
87+
88+
/** Initializes the CPU, AHB and APB buses clocks
89+
*/
90+
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
91+
|RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2
92+
|RCC_CLOCKTYPE_D3PCLK1|RCC_CLOCKTYPE_D1PCLK1;
93+
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
94+
RCC_ClkInitStruct.SYSCLKDivider = RCC_SYSCLK_DIV1;
95+
RCC_ClkInitStruct.AHBCLKDivider = RCC_HCLK_DIV2;
96+
RCC_ClkInitStruct.APB3CLKDivider = RCC_APB3_DIV2;
97+
RCC_ClkInitStruct.APB1CLKDivider = RCC_APB1_DIV2;
98+
RCC_ClkInitStruct.APB2CLKDivider = RCC_APB2_DIV2;
99+
RCC_ClkInitStruct.APB4CLKDivider = RCC_APB4_DIV2;
100+
101+
if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_4) != HAL_OK)
102+
{
103+
Error_Handler();
104+
}
105+
106+
RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0};
107+
108+
/** Initializes the peripherals clock
109+
*/
110+
PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_ADC | RCC_PERIPHCLK_CEC | RCC_PERIPHCLK_CKPER
111+
| RCC_PERIPHCLK_HRTIM1 | RCC_PERIPHCLK_I2C123 | RCC_PERIPHCLK_I2C4
112+
| RCC_PERIPHCLK_LPTIM1 | RCC_PERIPHCLK_LPTIM2 | RCC_PERIPHCLK_LPTIM3
113+
| RCC_PERIPHCLK_QSPI | RCC_PERIPHCLK_SDMMC | RCC_PERIPHCLK_USB
114+
| RCC_PERIPHCLK_SPI123 | RCC_PERIPHCLK_SPI45 | RCC_PERIPHCLK_SPI6
115+
| RCC_PERIPHCLK_LPUART1 | RCC_PERIPHCLK_USART16 | RCC_PERIPHCLK_USART234578
116+
| RCC_PERIPHCLK_RTC;
117+
PeriphClkInitStruct.AdcClockSelection = RCC_ADCCLKSOURCE_CLKP;
118+
PeriphClkInitStruct.CecClockSelection = RCC_CECCLKSOURCE_CSI;
119+
PeriphClkInitStruct.CkperClockSelection = RCC_CLKPSOURCE_HSI;
120+
PeriphClkInitStruct.Hrtim1ClockSelection = RCC_HRTIM1CLK_CPUCLK;
121+
PeriphClkInitStruct.I2c123ClockSelection = RCC_I2C123CLKSOURCE_D2PCLK1;
122+
PeriphClkInitStruct.I2c4ClockSelection = RCC_I2C4CLKSOURCE_D3PCLK1;
123+
PeriphClkInitStruct.Lptim1ClockSelection = RCC_LPTIM1CLKSOURCE_D2PCLK1;
124+
PeriphClkInitStruct.Lptim2ClockSelection = RCC_LPTIM2CLKSOURCE_D3PCLK1;
125+
PeriphClkInitStruct.Lptim345ClockSelection = RCC_LPTIM345CLKSOURCE_D3PCLK1;
126+
PeriphClkInitStruct.Lpuart1ClockSelection = RCC_LPUART1CLKSOURCE_D3PCLK1;
127+
PeriphClkInitStruct.QspiClockSelection = RCC_QSPICLKSOURCE_PLL;
128+
PeriphClkInitStruct.RTCClockSelection = RCC_RTCCLKSOURCE_LSI;
129+
PeriphClkInitStruct.SdmmcClockSelection = RCC_SDMMCCLKSOURCE_PLL;
130+
PeriphClkInitStruct.Spi123ClockSelection = RCC_SPI123CLKSOURCE_PLL;
131+
PeriphClkInitStruct.Spi45ClockSelection = RCC_SPI45CLKSOURCE_D2PCLK1;
132+
PeriphClkInitStruct.Spi6ClockSelection = RCC_SPI6CLKSOURCE_D3PCLK1;
133+
PeriphClkInitStruct.Usart16ClockSelection = RCC_USART16CLKSOURCE_D2PCLK2;
134+
PeriphClkInitStruct.Usart234578ClockSelection = RCC_USART234578CLKSOURCE_D2PCLK1;
135+
PeriphClkInitStruct.UsbClockSelection = RCC_USBCLKSOURCE_HSI48;
136+
if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)
137+
{
138+
Error_Handler();
139+
}
30140
}
31141

32142
#endif /* ARDUINO_GENERIC_* */

0 commit comments

Comments
 (0)