From e45d9c4a1e0a7927382b11bab03ebbc488c25b53 Mon Sep 17 00:00:00 2001 From: Yuqiang Wang Date: Sat, 8 Apr 2023 09:56:59 +0800 Subject: [PATCH] [bsp][rtduino] support for STM32G474 Nucleo in RTduino (#7151) --- .../HAL_Drivers/config/g4/pwm_config.h | 9 + .../applications/SConscript | 7 +- .../applications/arduino_main.cpp | 24 + .../applications/arduino_pinout/README.md | 59 ++ .../applications/arduino_pinout/README_zh.md | 56 ++ .../applications/arduino_pinout/SConscript | 9 + .../arduino_pinout/pins_arduino.c | 49 ++ .../arduino_pinout/pins_arduino.h | 51 ++ .../stm32g474-nucleo-pinout.jpg | Bin 0 -> 194970 bytes .../board/CubeMX_Config/.mxproject | 18 +- .../board/CubeMX_Config/CubeMX_Config.ioc | 242 ++++---- .../board/CubeMX_Config/Inc/main.h | 20 +- .../CubeMX_Config/Inc/stm32g4xx_hal_conf.h | 174 +++--- .../board/CubeMX_Config/Inc/stm32g4xx_it.h | 2 - .../CubeMX_Config/Src/stm32g4xx_hal_msp.c | 535 ++++++++++++++---- .../board/CubeMX_Config/Src/stm32g4xx_it.c | 203 ------- .../CubeMX_Config/Src/system_stm32g4xx.c | 271 +++++++++ bsp/stm32/stm32g474-st-nucleo/board/Kconfig | 111 +++- 18 files changed, 1305 insertions(+), 535 deletions(-) create mode 100644 bsp/stm32/stm32g474-st-nucleo/applications/arduino_main.cpp create mode 100644 bsp/stm32/stm32g474-st-nucleo/applications/arduino_pinout/README.md create mode 100644 bsp/stm32/stm32g474-st-nucleo/applications/arduino_pinout/README_zh.md create mode 100644 bsp/stm32/stm32g474-st-nucleo/applications/arduino_pinout/SConscript create mode 100644 bsp/stm32/stm32g474-st-nucleo/applications/arduino_pinout/pins_arduino.c create mode 100644 bsp/stm32/stm32g474-st-nucleo/applications/arduino_pinout/pins_arduino.h create mode 100644 bsp/stm32/stm32g474-st-nucleo/applications/arduino_pinout/stm32g474-nucleo-pinout.jpg delete mode 100644 bsp/stm32/stm32g474-st-nucleo/board/CubeMX_Config/Src/stm32g4xx_it.c create mode 100644 bsp/stm32/stm32g474-st-nucleo/board/CubeMX_Config/Src/system_stm32g4xx.c diff --git a/bsp/stm32/libraries/HAL_Drivers/config/g4/pwm_config.h b/bsp/stm32/libraries/HAL_Drivers/config/g4/pwm_config.h index e3f9468aa4..9dbdc62582 100644 --- a/bsp/stm32/libraries/HAL_Drivers/config/g4/pwm_config.h +++ b/bsp/stm32/libraries/HAL_Drivers/config/g4/pwm_config.h @@ -53,6 +53,15 @@ extern "C" { } #endif /* BSP_USING_PWM5 */ +#ifdef BSP_USING_PWM8 +#define PWM8_CONFIG \ + { \ + .tim_handle.Instance = TIM8, \ + .name = "pwm8", \ + .channel = RT_NULL \ + } +#endif /* BSP_USING_PWM8 */ + #ifdef BSP_USING_PWM12 #define PWM12_CONFIG \ { \ diff --git a/bsp/stm32/stm32g474-st-nucleo/applications/SConscript b/bsp/stm32/stm32g474-st-nucleo/applications/SConscript index 9bb9abae89..e1c7fa5996 100644 --- a/bsp/stm32/stm32g474-st-nucleo/applications/SConscript +++ b/bsp/stm32/stm32g474-st-nucleo/applications/SConscript @@ -1,9 +1,12 @@ from building import * import os -cwd = GetCurrentDir() -src = Glob('*.c') +cwd = GetCurrentDir() CPPPATH = [cwd] +src = Glob('*.c') + +if GetDepend(['PKG_USING_RTDUINO']) and not GetDepend(['RTDUINO_NO_SETUP_LOOP']): + src += ['arduino_main.cpp'] group = DefineGroup('Applications', src, depend = [''], CPPPATH = CPPPATH) diff --git a/bsp/stm32/stm32g474-st-nucleo/applications/arduino_main.cpp b/bsp/stm32/stm32g474-st-nucleo/applications/arduino_main.cpp new file mode 100644 index 0000000000..a8ace3a964 --- /dev/null +++ b/bsp/stm32/stm32g474-st-nucleo/applications/arduino_main.cpp @@ -0,0 +1,24 @@ +/* + * Copyright (c) 2006-2023, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2023-04-04 Wangyuqiang first version + */ + +#include + +void setup(void) +{ + /* put your setup code here, to run once: */ + Serial.begin(); + Serial.println("Hello RTduino!"); +} + +void loop(void) +{ + /* put your main code here, to run repeatedly: */ + delay(1000); +} diff --git a/bsp/stm32/stm32g474-st-nucleo/applications/arduino_pinout/README.md b/bsp/stm32/stm32g474-st-nucleo/applications/arduino_pinout/README.md new file mode 100644 index 0000000000..7f082e99ec --- /dev/null +++ b/bsp/stm32/stm32g474-st-nucleo/applications/arduino_pinout/README.md @@ -0,0 +1,59 @@ +# The Arduino Compatible for STM32G474 Nucleo development board + +English | [中文](https://github.com/kurisaW/rt-thread/blob/g474_rtdu/bsp/stm32/stm32g474-st-nucleo/applications/arduino_pinout/README_zh.md) + +## 1 RTduino - Arduino Ecosystem Compatibility Layer for RT-Thread + +The STM32G474 Nucleo development board has been fully adapted with the [RTduino software package](https://github.com/RTduino/RTduino), which is an Arduino Ecosystem compatibility layer for RT-Thread. Users can program this BSP according to Arduino programming conventions and use a large number of libraries available in the Arduino community, providing a significant enhancement to the RT-Thread ecosystem. For more information, please refer to the [RTduino software package documentation](https://github.com/RTduino/RTduino). + +### 1.1 How to Enable Arduino Ecosystem Compatibility Layer for this BSP + +Enter the menuconfig command under Env tool or select RT-Thread Settings under RT-Thread Studio IDE: + +```Kconfig +Hardware Drivers Config ---> + Onboard Peripheral Drivers ---> + [*] Compatible with Arduino Ecosystem (RTduino) +``` + +## 2 Arduino Pinout + +For additional information on pin layout, refer to [pins_arduino.c](pins_arduino.c) and [pins_arduino.h](pins_arduino.h). + +![stm32g474-nucleo-pinout.jpg](./stm32g474-nucleo-pinout.jpg) + +| Arduino Pin Number | STM32 Pin Number | 5V Tolerance | Remarks | +| ------------------- | --------- | ---- | ------------------------------------------------------------------------- | +| 0 (D0) | PC5 | Yes | | +| 1 (D1) | PC4 | Yes | | +| 2 (D2) | PA10 | Yes | Serial2-RX, default controlled by RT-Thread's UART device framework uart1 | +| 3 (D3) | PB3 | Yes | PWM2-CH2, default controlled by RT-Thread's PWM device framework pwm2 | +| 4 (D4) | PB5 | Yes | | +| 5 (D5) | PB4 | Yes | PWM3-CH1, default controlled by RT-Thread's PWM device framework pwm3 | +| 6 (D6) | PB10 | Yes | PWM2-CH3, default controlled by RT-Thread's PWM device framework pwm2 | +| 7 (D7) | PA8 | Yes | | +| 8 (D8) | PA9 | Yes | Serial2-TX, default controlled by RT-Thread's UART device framework uart1 | +| 9 (D9) | PC7 | Yes | PWM8-CH2, default controlled by RT-Thread's PWM device framework pwm8 | +| 10 (D10) | PB6 | Yes | PWM4-CH1, default controlled by RT-Thread's PWM device framework pwm4 | +| 11 (D11) | PA7 | Yes | PWM3-CH2, default controlled by RT-Thread's PWM device framework pwm3 | +| 12 (D12) | PA6 | Yes | | +| 13 (D13) | PA5 | Yes | Onboard User LED | +| 14 (D14) | PB9 | Yes | I2C1-SDA, default controlled by RT-Thread's I2C device framework i2c1 | +| 15 (D15) | PB8 | Yes | I2C1-SCL, default controlled by RT-Thread's I2C device framework i2c1 | +| 16 (D16) | PC13 | Yes | | +| 17 (A0) | PA0 | Yes | ADC1-CH1, default controlled by RT-Thread's ADC device framework adc1 | +| 18 (A1) | PA1 | Yes | ADC1-CH2, default controlled by RT-Thread's ADC device framework adc1 | +| 19 (A2) | PA4 | Yes | ADC2-CH17, default controlled by RT-Thread's ADC device framework adc2 | +| 20 (A3) | PB0 | Yes | ADC1-CH15, default controlled by RT-Thread's ADC device framework adc1 | +| 21 (A4) | PC1 | Yes | ADC1-CH7, default controlled by RT-Thread's ADC device framework adc1 | +| 22 (A5) | PC0 | Yes | ADC1-CH6, default controlled by RT-Thread's ADC device framework adc1 | +| 23 (A6) | -- | | On-chip reference voltage ADC, default controlled by RT-Thread's ADC device framework adc1 | +| 24 (A7) | -- | | On-chip temperature sensor ADC, default controlled by RT-Thread's ADC device framework adc1 | + +> Notice: +> On Nucleo 64-pins boards, the D0 and D1 pins are not available per default as they are used by the STLink Virtual Comm Port (used for printf for example). +> +>If you want to use these pins (instead of the default Virtual Comm Port) you need to close SB62/SB63 and open SB13/SB14 solder bridges. + +> References: +> 1.[stm32-nucleo-64-boards-mb1136-stmicroelectronics.pdf](https://www.st.com/resource/en/user_manual/dm00105823-stm32-nucleo-64-boards-mb1136-stmicroelectronics.pdf) \ No newline at end of file diff --git a/bsp/stm32/stm32g474-st-nucleo/applications/arduino_pinout/README_zh.md b/bsp/stm32/stm32g474-st-nucleo/applications/arduino_pinout/README_zh.md new file mode 100644 index 0000000000..d6e1593fa6 --- /dev/null +++ b/bsp/stm32/stm32g474-st-nucleo/applications/arduino_pinout/README_zh.md @@ -0,0 +1,56 @@ +# STM32G474 Nucleo开发板的Arduino生态兼容说明 + +## 1 RTduino - RT-Thread的Arduino生态兼容层 + +STM32G474 Nucleo开发板已经完整适配了[RTduino软件包](https://github.com/RTduino/RTduino),即RT-Thread的Arduino生态兼容层。用户可以按照Arduino的编程习惯来操作该BSP,并且可以使用大量Arduino社区丰富的库,是对RT-Thread生态的极大增强。更多信息,请参见[RTduino软件包说明文档](https://github.com/RTduino/RTduino)。 + +### 1.1 如何开启针对本BSP的Arduino生态兼容层 + +Env 工具下敲入 menuconfig 命令,或者 RT-Thread Studio IDE 下选择 RT-Thread Settings: + +```Kconfig +Hardware Drivers Config ---> + Onboard Peripheral Drivers ---> + [*] Compatible with Arduino Ecosystem (RTduino) +``` + +## 2 Arduino引脚排布 + +更多引脚布局相关信息参见 [pins_arduino.c](pins_arduino.c) 和 [pins_arduino.h](pins_arduino.h)。 + +![stm32g474-nucleo-pinout.jpg](./stm32g474-nucleo-pinout.jpg) +| Arduino引脚编号 | STM32引脚编号 | 5V容忍 | 备注 | +| ------------------- | --------- | ---- | ------------------------------------------------------------------------- | +| 0 (D0) | PC5 | 是 | | +| 1 (D1) | PC4 | 是 | | +| 2 (D2) | PA10 | 是 | Serial2-RX,默认被RT-Thread的UART设备框架uart1接管 | +| 3 (D3) | PB3 | 是 | PWM2-CH2,默认被RT-Thread的PWM设备框架pwm2接管 | +| 4 (D4) | PB5 | 是 | | +| 5 (D5) | PB4 | 是 | PWM3-CH1,默认被RT-Thread的PWM设备框架pwm3接管 | +| 6 (D6) | PB10 | 是 | PWM2-CH3,默认被RT-Thread的PWM设备框架pwm2接管 | +| 7 (D7) | PA8 | 是 | | +| 8 (D8) | PA9 | 是 | Serial2-TX,默认被RT-Thread的UART设备框架uart1接管 | +| 9 (D9) | PC7 | 是 | PWM8-CH2,默认被RT-Thread的PWM设备框架pwm8接管 | +| 10 (D10) | PB6 | 是 | PWM4-CH1,默认被RT-Thread的PWM设备框架pwm4接管 | +| 11 (D11) | PA7 | 是 | PWM3-CH2,默认被RT-Thread的PWM设备框架pwm3接管 | +| 12 (D12) | PA6 | 是 | | +| 13 (D13) | PA5 | 是 | 板载用户LED | +| 14 (D14) | PB9 | 是 | I2C1-SDA,默认被RT-Thread的I2C设备框架i2c1接管 | +| 15 (D15) | PB8 | 是 | I2C1-SCL,默认被RT-Thread的I2C设备框架i2c1接管 | +| 16 (D16) | PC13 | 是 | | +| 17 (A0) | PA0 | 是 | ADC1-CH1,默认被RT-Thread的ADC设备框架adc1接管 | +| 18 (A1) | PA1 | 是 | ADC1-CH2,默认被RT-Thread的ADC设备框架adc1接管 | +| 19 (A2) | PA4 | 是 | ADC2-CH17,默认被RT-Thread的ADC设备框架adc2接管 | +| 20 (A3) | PB0 | 是 | ADC1-CH15,默认被RT-Thread的ADC设备框架adc1接管 | +| 21 (A4) | PC1 | 是 | ADC1-CH7,默认被RT-Thread的ADC设备框架adc1接管 | +| 22 (A5) | PC0 | 是 | ADC1-CH6,默认被RT-Thread的ADC设备框架adc1接管 | +| 23 (A6) | -- | | 芯片内部参考电压 ADC,默认被RT-Thread的ADC设备框架adc1接管 | +| 24 (A7) | -- | | 芯片内部温度 ADC,默认被RT-Thread的ADC设备框架adc1接管 | + +> Notice: +> 在 Nucleo 64 引脚板上,D0 和 D1 引脚默认不可用,因为它们被 STLink 虚拟通信端口(例如用于 printf)使用。 +> +> 如果您想使用这些引脚(而不是默认的虚拟通信端口),您需要关闭 SB62/SB63并打开 SB13/SB14焊桥。 + +> References: +> 1.[stm32-nucleo-64-boards-mb1136-stmicroelectronics.pdf](https://www.st.com/resource/en/user_manual/dm00105823-stm32-nucleo-64-boards-mb1136-stmicroelectronics.pdf) \ No newline at end of file diff --git a/bsp/stm32/stm32g474-st-nucleo/applications/arduino_pinout/SConscript b/bsp/stm32/stm32g474-st-nucleo/applications/arduino_pinout/SConscript new file mode 100644 index 0000000000..2539929027 --- /dev/null +++ b/bsp/stm32/stm32g474-st-nucleo/applications/arduino_pinout/SConscript @@ -0,0 +1,9 @@ +from building import * + +cwd = GetCurrentDir() +src = Glob('*.c') + Glob('*.cpp') +inc = [cwd] + +group = DefineGroup('RTduino', src, depend = ['PKG_USING_RTDUINO'], CPPPATH = inc) + +Return('group') diff --git a/bsp/stm32/stm32g474-st-nucleo/applications/arduino_pinout/pins_arduino.c b/bsp/stm32/stm32g474-st-nucleo/applications/arduino_pinout/pins_arduino.c new file mode 100644 index 0000000000..8cc7325564 --- /dev/null +++ b/bsp/stm32/stm32g474-st-nucleo/applications/arduino_pinout/pins_arduino.c @@ -0,0 +1,49 @@ +/* + * Copyright (c) 2006-2023, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2023-04-04 Wangyuqiang first version + */ + +#include +#include +#include "pins_arduino.h" + +/* + * {Arduino Pin, RT-Thread Pin [, Device Name, Channel]} + * [] means optional + * Digital pins must NOT give the device name and channel. + * Analog pins MUST give the device name and channel(ADC, PWM or DAC). + * Arduino Pin must keep in sequence. + */ +const pin_map_t pin_map_table[]= +{ + {D0, GET_PIN(C,5)}, + {D1, GET_PIN(C,4)}, + {D2, GET_PIN(A,10), "uart1"}, /* Serial2-RX */ + {D3, GET_PIN(B,3), "pwm2", 2}, /* PWM */ + {D4, GET_PIN(B,5)}, + {D5, GET_PIN(B,4), "pwm3", 1}, /* PWM */ + {D6, GET_PIN(B,10), "pwm2", 3}, /* PWM */ + {D7, GET_PIN(A,8)}, + {D8, GET_PIN(A,9), "uart1"}, /* Serial2-TX */ + {D9, GET_PIN(C,7), "pwm8", 2}, /* PWM */ + {D10, GET_PIN(B,6), "pwm4", 1}, /* PWM */ + {D11, GET_PIN(A,7), "pwm3", 2}, /* PWM */ + {D12, GET_PIN(A,6)}, + {D13, GET_PIN(A,5)}, /* LED_BUILTIN */ + {D14, GET_PIN(B,9), "i2c1"}, /* I2C-SDA (Wire) */ + {D15, GET_PIN(B,8), "i2c1"}, /* I2C-SCL (Wire) */ + {D16, GET_PIN(C,13)}, + {A0, GET_PIN(A,0), "adc1", 1}, /* ADC */ + {A1, GET_PIN(A,1), "adc1", 2}, /* ADC */ + {A2, GET_PIN(A,4), "adc2", 17}, /* ADC */ + {A3, GET_PIN(B,0), "adc1", 15}, /* ADC */ + {A4, GET_PIN(C,1), "adc1", 7}, /* ADC */ + {A5, GET_PIN(C,0), "adc1", 6}, /* ADC */ + {A6, RT_NULL, "adc1", 3}, /* ADC, On-Chip: internal reference voltage, ADC_CHANNEL_VREFINT */ + {A7, RT_NULL, "adc1", 3}, /* ADC, On-Chip: internal temperature sensor, ADC_CHANNEL_TEMPSENSOR */ +}; diff --git a/bsp/stm32/stm32g474-st-nucleo/applications/arduino_pinout/pins_arduino.h b/bsp/stm32/stm32g474-st-nucleo/applications/arduino_pinout/pins_arduino.h new file mode 100644 index 0000000000..c6a5abda47 --- /dev/null +++ b/bsp/stm32/stm32g474-st-nucleo/applications/arduino_pinout/pins_arduino.h @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2006-2023, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2023-04-04 Wangyuqiang first version + */ + +#ifndef Pins_Arduino_h +#define Pins_Arduino_h + +/* pins alias. Must keep in sequence */ +#define D0 (0) +#define D1 (1) +#define D2 (2) +#define D3 (3) +#define D4 (4) +#define D5 (5) +#define D6 (6) +#define D7 (7) +#define D8 (8) +#define D9 (9) +#define D10 (10) +#define D11 (11) +#define D12 (12) +#define D13 (13) +#define D14 (14) +#define D15 (15) +#define D16 (16) +#define A0 (17) +#define A1 (18) +#define A2 (19) +#define A3 (20) +#define A4 (21) +#define A5 (22) +#define A6 (23) +#define A7 (24) + +#define F_CPU 170000000L /* CPU:170MHz */ + +#define LED_BUILTIN D13 /* Default Built-in LED */ + +/* i2c1 : PB9-SDA PB8-SCL */ +#define RTDUINO_DEFAULT_IIC_BUS_NAME "i2c1" + +/* Serial2 : PA9-TX PA10-RX */ +#define RTDUINO_SERIAL2_DEVICE_NAME "uart1" + +#endif /* Pins_Arduino_h */ diff --git a/bsp/stm32/stm32g474-st-nucleo/applications/arduino_pinout/stm32g474-nucleo-pinout.jpg b/bsp/stm32/stm32g474-st-nucleo/applications/arduino_pinout/stm32g474-nucleo-pinout.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b157a850032fed39ad9e5e3c7625a49ef24759db GIT binary patch literal 194970 zcmeFabzGdyvMxFVf(HTwwl;$fm{aMSCUhd1E8S+0BEQ$01^Qp zm$!7ZbTxIiw0LOd^H9st*4fm}-4Zzm_yEAg!otSF#Kp$O#>2(MBcQlXaPJ-gEh!lh z1p_@3<74{AkC-`xd6?M**d9H8@{CtNR9s3*ii!J$;&TZFVM!@*G+aD9f_nrs_wUn) zvp!}O|Cc|=?*JlfbQ4TsbTlHs9U?SzA~a+tS~hC(chUav0sQHMb_X5fE+!T>4ldq( zz#TMn^g9^nckg0gpq>mswE-}Q?h-%ZeTGS*VT$$G;i&9!Xlz#&tJ&O$tx%-X=&@|>b=r8Ft@O@vbM3cb949b^z!!c zeg7dir;V|%P{vu3>5)b0blRD#r^f`-}4H1 z{VkDz$8s%5!0Wl_Te3;CRVfxEAf{Xo2`JxzobhWj%r#U0_Qd<&o&epF)iMZu`?Ui9 zRwe8@PJ)M0UEaQTls*HhV|}{HM98(6ARzfj!03>AwBt`FR5Ri2dj}-o%wRHN_Lu(u zTNMzUyxZi2(SGUTUOf^p=J1q`VHI>ubq<0dQjvh?f-;g#ZIBa28|jOCU{t%kCcoV; z^Yd@D!1yMVpx&5r&<~+Cl##Cmct?jK0qgctNWdP<=@x$q`{L-AANaSb{67x%%Mbip zRr)_Q*e^fu-|E?Z`GNn|*AMvm%MbjcUH| z^IHD$1OLD91AMiGj(4ZyobC=L?s<5dC*6aOcyw4(DRgVzYns_6>!~y1axW~paMv#wJRjx3vf`n zni&cBT6?)gj|33OgQMX$(Q61(rzeQPR74PTDGdadrCXFfJ(P~V4sPza;d6rFnFP8Z z0ml#gype#BdW7^Q*{{)my_sJ+^J_Q#vIM_u%dh^z1i#SIFC6&`VgHH_{>^a{ zp9ry^ktNsch2N)juonmSBDN(u1^VQaO1HaVyrykw`OJ0Yn<1rj*566A{THMx`2;hs zac$@??t^ZbGn$;2+Dj3nNI>5AWXDL~)!&=bKc8^@|ICy4mnhyy2qEk&4plW*+A%pi zf-9ex-N*&I;s08+|Ea6|YtjC@h-9UH-}G%i`&?drHh2MaN|q?5+L~ZIFN&}fwkfW> zj%b`Z8=!u5cz8~&?C0aMF~r&b>6(&)art;iP}R|}Q2c_}w#>4k4px@xV{@6<7+iAE zmp&oSSH&&1@$P%JdOU4zNt^g~XlYsLk;C}vw0GGfmxNdr{1VAe%j5BeMyOVS3#P)~ z%QFV8UW^ZRbC+ek9h_qz?j`s0#Xpyt^Z;wdTTIx#dC}PV<-oc4+ibPL9Y;X2;s=7J zhHGECnudh(0Ne{V6%I+y(=$>*BQd>q43k_&WzTHx4CeM@X*R<WDWFSv^YoZku~LhL^HdA$d%D~y8nshv;{Oy^on{o^3NGmXE@4O6Zf33#M} zj%X)D0&*vyj?`B=kaoyfJqg!XxuNVo%>OSP|D!?wN48NI^EcJi{H&cboR_^*kDD)# zi_^Po4Z*DI=<2W0G}7Btd9ff0lkOcl77neUPN(pp8j8r`;Zo)^pf} zs^TCMsiR}eQ?ABr5WA7sLcfj!%2QblFLlIO7BkcZ7%c?h^C{3gxNhWUz1O=FqnzlH z*T+F_3_Nz!D0ew89vn9B{V`T|IUDfPAuJ6z5<26WG)}~o0=V3A3x45r} z{+aN+&|sKjD9{fc6~@~#U+&X9< zdwYlbr`8_*mB-c2DT(frwt)OsKa|ZzFvci3oh4S^9uPcny%VIyK;v<4d#Vj7A5hx? zDQH9==5BzD(+^I?l&t=@Yi|vKM?3*Rb2DL7dP+!u7iiTaj(k>tqt-AX^NL>zHIFPie0Lyrm$*N%s<6_V{!K zQ_}-W>;}aJIX14@)~cP_<}&|qrElZZ`MBc>);MYR}5KVW>zlC5k|o}esX_gLF8JNZr62U`&S;0N-cqK;nQ^HjJfTIgDY3Jo z!}DOMJF93I30M^SP#G9g6+K=J+fVAiF2C`RzGV}l$pOl?)?S~rSZz?ahy1+F7J|i{ zMt^e}PU)P;NGL3SbyNOx;wOP_okgQ(m35PtV;0trb5bLO?m-`W^jak3lW!FEp_rAu zX@lv3t(1+|Zl+bEblchMys?zpZuQ@T1^*Mw#P0)^znK}0S7e#7@__RFrN$ThjYxn` z^#?d6b+jSf)IhSHw?9UjSL(*K!O6{;agvnVCtiXFIf?=0eKb6uAe-b!fGGv2)WvxO z-i-u6!!ol@>j|&@5IBJ$^kL1bY>aSY&(FhKJKmqS9Y7C7ltZ>xw0XZI zrt5Rtlnto(FBTgo8R_p@e!*^^vU5CF9)O&K3#Z}I^@)9FGxEvw$pW8W#?n;c?*k-7 z?}5{NVbGYcPPfe;Y0`Z0hNg_uQ1y^vy_`r`Yf2OK>tlipi=6@w#=5x`gPiH&cv!_B zSOGyNi_?eG3OuGE_MY_3it&8+Mc3)rv)6OeylD4LcdgqKLrw1vrxy%|s8xRteG`lQ z+(QI?!$j-*R?0!nb5gww4F`Rrh1m=Ek{J(0Zb&=gK^W{tR)wz}qf*0z^@fiVSb2J% zH?lvE&ku`Kvtu<~M7PO*c)-ZN_0rFm*I3wQa{RoQOIbPSnz~n!Pokk!P7dp?f+V(J zus@fQppkH~QSEhnZc2l%D6!5Gb#Zx7TG*zGi>HnG4nQ4KwGxHqB(V?>lw(vZDD=zm z1>xUHYuoEk`~}IG8`)jz>BZW@7TJ4RubGt{njRY6QEYX1u0QE$cuw@v;d1~6P*o~7)0d7*UP*hkMUNkaPRbw{G%Y_$ zSEiyjtEN1Z_4ZZfRQV5?=6My(sS%8iq1h%dmG?>2kEv=8qxqhfV@Ebe5KGFCa?q)v zS!k-Z2e@kAxEI4(#C8S<{YqCaucca3VZpQW3*{1D|IF3+uZ-ky!3GKG@!_;x?Ku_m z{EBfA$mgB>d}W^58spuVh*i z*2N);moLqLxN`cLGdGT~pc^&{Efu5|-*m65SEQ0~(r7b0>xJL5rR+B7nolC99kcru zQ^jU8qcekpfoW(N(Cx}@SzR$5vF^`bv=i~z<&OQA+&$zaYA0Z~|CNGwrxiK;fhh|wieA-LU zirRff1JjJN3y)neF+t(dav5vo#9S?1HTVHSZBqt3Tl~s^(KqgTpn!UZDVDV_roR3D z13-)0TS8UesVO@GwOohOC3x^%96^sJZ~>g&gg>t~^FZkHJQ{c?(u6LVvN(1lPM+^a ze?`L-OSFFYaEN`XUt-jp>$OeJfUderT$`hs^msLNCLatvwOLfcbvdv=0{9}pvmXpN zweW5_8{eyk;eALpWdbXNX(v3zJ$MuJ#D`v~K6ir-W$??_$Lx4rV{PBe*4~&vHa!HQ z)c>eo=nVQuz~}sTC_{yX1dQA6f$zcDmsU(*hB%4a(6Yxte?1b>KB;wMZxpR)n#%D4 zm|AbI`7*>!37Y|CroKOPGM5IR-o8#gtL2`=ZHa4qpgEy`FnJG z0g?QVsRZ%GrLb*;4M}5zX9dOI`4UX#Ql@?3!N-$~;4mOcQy48ZU$l*|EA~oCM!HS9 z8cqjrLrg}`epcqO+o#~vG6fhH!lc&DibId223(!2Y+AcZIb9#$8}>_MeHbD1bgh82 z$hW~n8Dx?rQskUBLLeJxZB<@%4FeXEg_m%bTvqgeXbSGU%D9u;8G(&nKaVXLU@xN5 zPiUm)1VLc+PEdaEw!{$;99x9dLdTY}^kiBl%hw|V7u*D#9G7f-UcY$K*FB#3a3RAt zgvKLJvEQWy#sfJN?jFmM74D5w(Pv(O0(TE4ihQF&Zq&UQsvBBksWW-0*w$VQ9`gr_ z-c{%w5kap!3UiK&4RbOXQAPqxezvDmv8(1jOnY;femk826WBkdVG0+iDMGno%ofpCFO*oNP+u?`_1m`HI7s*UytNL z?O+tsEAucM4bKjShUaO3d7@qx=p2=sRMe$!pea5LFp{l{!%b-Fa9nQ!Xdl=e+ctjFNwpAhYb&CfY}HszY8JdE~S=x?Xr!^L;4=Ywq|M?98DFX7kcR zotydnz87_N0>emO$O8QN=C=6dMV5+Gy2F*>$nN59lGv0mv_J*Sy0|yMobK)5f8!&Y zn?yFjSEw%&-Q42cM{{3nvOjNicEY?U>TY+5WM0aqlClxc*uj;M@-3LtOPE*DR6MWQ zrNW)Sv!klRHRMqZUU8Ey>{gG6A9r<<58yh1Zg_3fE3X1As)KepfT_VL zL_$B>Eww-Mc|D<36=4q5QQR&EuT`uiX?rl?C~}C~2Oty?LbSH4DpHp^4nizaz9DO_ zbb3eln2bb+0Ljp7Qgfkk<}wq51X2TK74h?#-O}>7^NQ>9`qFdEDk1Q_hjQ)@S&1De zAGv-%lXL+~SbfytD0V1(($?>uU~Fk$1~Zxi@^pY6qpkY6eun&T0;KlyZfG%CtN@SP zN3bAuq6G(%hd}#VP~5GGF;KjAgqA1ZGHTCp_TqY5)I*V*hl`F#!lvCKab`-`NnK>5 ze5`UvzNV>hcIbBKu`$(?0znSp!`JW}>}c6U^sw^x5bgVQ z{oWG#Vr-$`&h%1nFD%9RL;Q3hxHZ%t!U1{gUhkl#l2FQ+IBwp+*PEB^(v2;Og|*9` zJHO)1&!S?wo2S9XMGq9b;)_g!CQUcKHj>f);wTJiib&!(sme@3Cw%vv#wz$oU}Ajf z=MsNW4Vz{l;NKq^PfliK9T8-n}LW>}@cY6Hr-oS!k={op6KU=6$*?k8rbX>x~ z^|Rvev8E;1i3D6l+A0SNBM%zj0oHSB?E1t#H2sqOPE_6(3zwdL>6o^nCi~}<;};t=Y84mk51R6nb|ZBQ#B zuT$jZrChW)yqG>jD_}^Ppy{!8)%t`}lt(M9&Hk22NA-;^^MJtHz+U0{3-v3$EsOi0NR?K>@4)MdbD z>l@ZPiUfRk-a&uHZ7Y3s7sU!B(K!!W8b(~u6jy-SAFV{g$OSUtcTfbw(40L|Nc!!* zsNUD>jVYBZvs`L8A@1NWk&~ z5L|`+RVn=F$h5x+3;vjn0+pe0Q$zy3vmyakDN>cd>!rnx1W&@N7ZSWkfXpVUcJfvO z#X%GZFaw`LT0XMx>q34a0q@-hgqm7M&%C*&5)9<4qU{o2=dd`TGrEm>t=8mms`&Vc z2+g%7?W2|f;9sn(WkTrfdZT$GmAR5mF$ZkrcBE?O!y~-5N^=cRdp1!nx80qTM`{WtYrRy^|f0} zw3^+?iT@nQr_xC0Vkud&}N}GDavyS zq3^yBKR^PC_A+=U@(H{*TdRZXGekd_hjc1U5u;vUUA5}Xk%xnqn!7Khr|E%%QqCnr zIukUw1IPRNYB#!|O(+TDokgtjI|-%1ZzbO`nS4ZN>qU-sj8*xGB7CBlT}u`ODRSfd zqclGNYaFLay`UatVBvQ5S~nai`))Rexg)Z_Bw-8=~9GEx@8;2N@*CV#(%f(3unl?FXi!uQRbs%jxMsC=3uFX&h>K95bj zZy~Ck9@|@2klSB0msKNn$@G&s5A4A?3A;*5;s(bMxomaygh12HPDGz@%J}EOi9>1W zl&9bI7ztC+ztR@xQ^3ZH#Xg5k87!36HbYgLLc3UtQ6?RwsS)}T-2OTq5}Udi@<4Oi zq4;cye34H8T(~$8fsh(4q=Nb3cY2{-~9V{*=p>{t6uxTe=3 z@OG1_XizSeBv-3T=dXL^ph4;S#QACOa*P)Hltn3

Z~Ut?tu5h2oapK_{z=!yG{7 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

piri1~dlk;QJ}j89=#B0kKnDnj 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 literal 0 HcmV?d00001 diff --git a/bsp/stm32/stm32g474-st-nucleo/board/CubeMX_Config/.mxproject b/bsp/stm32/stm32g474-st-nucleo/board/CubeMX_Config/.mxproject index 8e3663858b..a13c04ac89 100644 --- a/bsp/stm32/stm32g474-st-nucleo/board/CubeMX_Config/.mxproject +++ b/bsp/stm32/stm32g474-st-nucleo/board/CubeMX_Config/.mxproject @@ -1,18 +1,18 @@ -[PreviousGenFiles] -HeaderPath=E:/Users/xzy47/Documents/GitHub/rt-thread/bsp/stm32/stm32g431-st-nucleo/board/CubeMX_Config/Inc -HeaderFiles=stm32f4xx_it.h;stm32f4xx_hal_conf.h;main.h;stm32g4xx_it.h;stm32g4xx_hal_conf.h; -SourcePath=E:/Users/xzy47/Documents/GitHub/rt-thread/bsp/stm32/stm32g431-st-nucleo/board/CubeMX_Config/Src -SourceFiles=stm32f4xx_it.c;stm32f4xx_hal_msp.c;main.c;stm32g4xx_it.c;stm32g4xx_hal_msp.c; - [PreviousLibFiles] -LibFiles=Drivers/STM32G4xx_HAL_Driver/Inc/stm32g4xx_hal_gpio.h;Drivers/STM32G4xx_HAL_Driver/Inc/stm32g4xx_hal_gpio_ex.h;Drivers/STM32G4xx_HAL_Driver/Inc/stm32g4xx_hal_uart.h;Drivers/STM32G4xx_HAL_Driver/Inc/stm32g4xx_hal_uart_ex.h;Drivers/STM32G4xx_HAL_Driver/Inc/stm32g4xx_hal_tim.h;Drivers/STM32G4xx_HAL_Driver/Inc/stm32g4xx_hal.h;Drivers/STM32G4xx_HAL_Driver/Inc/stm32g4xx_hal_tim_ex.h;Drivers/STM32G4xx_HAL_Driver/Inc/stm32g4xx_ll_pwr.h;Drivers/STM32G4xx_HAL_Driver/Inc/stm32g4xx_hal_def.h;Drivers/STM32G4xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h;Drivers/STM32G4xx_HAL_Driver/Inc/stm32g4xx_hal_rcc.h;Drivers/STM32G4xx_HAL_Driver/Inc/stm32g4xx_hal_rcc_ex.h;Drivers/STM32G4xx_HAL_Driver/Inc/stm32g4xx_hal_flash.h;Drivers/STM32G4xx_HAL_Driver/Inc/stm32g4xx_hal_flash_ex.h;Drivers/STM32G4xx_HAL_Driver/Inc/stm32g4xx_hal_flash_ramfunc.h;Drivers/STM32G4xx_HAL_Driver/Inc/stm32g4xx_hal_exti.h;Drivers/STM32G4xx_HAL_Driver/Inc/stm32g4xx_hal_dma.h;Drivers/STM32G4xx_HAL_Driver/Inc/stm32g4xx_hal_dma_ex.h;Drivers/STM32G4xx_HAL_Driver/Inc/stm32g4xx_hal_pwr.h;Drivers/STM32G4xx_HAL_Driver/Inc/stm32g4xx_hal_pwr_ex.h;Drivers/STM32G4xx_HAL_Driver/Inc/stm32g4xx_hal_cortex.h;Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c;Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_uart.c;Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_uart_ex.c;Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_tim.c;Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_tim_ex.c;Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_ll_pwr.c;Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal.c;Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_rcc.c;Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_rcc_ex.c;Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c;Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash_ex.c;Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash_ramfunc.c;Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_exti.c;Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_dma.c;Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_dma_ex.c;Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_pwr.c;Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_pwr_ex.c;Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_cortex.c;Drivers/STM32G4xx_HAL_Driver/Inc/stm32g4xx_hal_gpio.h;Drivers/STM32G4xx_HAL_Driver/Inc/stm32g4xx_hal_gpio_ex.h;Drivers/STM32G4xx_HAL_Driver/Inc/stm32g4xx_hal_uart.h;Drivers/STM32G4xx_HAL_Driver/Inc/stm32g4xx_hal_uart_ex.h;Drivers/STM32G4xx_HAL_Driver/Inc/stm32g4xx_hal_tim.h;Drivers/STM32G4xx_HAL_Driver/Inc/stm32g4xx_hal.h;Drivers/STM32G4xx_HAL_Driver/Inc/stm32g4xx_hal_tim_ex.h;Drivers/STM32G4xx_HAL_Driver/Inc/stm32g4xx_ll_pwr.h;Drivers/STM32G4xx_HAL_Driver/Inc/stm32g4xx_hal_def.h;Drivers/STM32G4xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h;Drivers/STM32G4xx_HAL_Driver/Inc/stm32g4xx_hal_rcc.h;Drivers/STM32G4xx_HAL_Driver/Inc/stm32g4xx_hal_rcc_ex.h;Drivers/STM32G4xx_HAL_Driver/Inc/stm32g4xx_hal_flash.h;Drivers/STM32G4xx_HAL_Driver/Inc/stm32g4xx_hal_flash_ex.h;Drivers/STM32G4xx_HAL_Driver/Inc/stm32g4xx_hal_flash_ramfunc.h;Drivers/STM32G4xx_HAL_Driver/Inc/stm32g4xx_hal_exti.h;Drivers/STM32G4xx_HAL_Driver/Inc/stm32g4xx_hal_dma.h;Drivers/STM32G4xx_HAL_Driver/Inc/stm32g4xx_hal_dma_ex.h;Drivers/STM32G4xx_HAL_Driver/Inc/stm32g4xx_hal_pwr.h;Drivers/STM32G4xx_HAL_Driver/Inc/stm32g4xx_hal_pwr_ex.h;Drivers/STM32G4xx_HAL_Driver/Inc/stm32g4xx_hal_cortex.h;Drivers/CMSIS/Device/ST/STM32G4xx/Include/stm32g431xx.h;Drivers/CMSIS/Device/ST/STM32G4xx/Include/stm32g4xx.h;Drivers/CMSIS/Device/ST/STM32G4xx/Include/system_stm32g4xx.h;Drivers/CMSIS/Device/ST/STM32G4xx/Source/Templates/system_stm32g4xx.c;Drivers/CMSIS/Include/cmsis_armcc.h;Drivers/CMSIS/Include/cmsis_armclang.h;Drivers/CMSIS/Include/cmsis_compiler.h;Drivers/CMSIS/Include/cmsis_gcc.h;Drivers/CMSIS/Include/cmsis_iccarm.h;Drivers/CMSIS/Include/cmsis_version.h;Drivers/CMSIS/Include/core_armv8mbl.h;Drivers/CMSIS/Include/core_armv8mml.h;Drivers/CMSIS/Include/core_cm0.h;Drivers/CMSIS/Include/core_cm0plus.h;Drivers/CMSIS/Include/core_cm1.h;Drivers/CMSIS/Include/core_cm23.h;Drivers/CMSIS/Include/core_cm3.h;Drivers/CMSIS/Include/core_cm33.h;Drivers/CMSIS/Include/core_cm4.h;Drivers/CMSIS/Include/core_cm7.h;Drivers/CMSIS/Include/core_sc000.h;Drivers/CMSIS/Include/core_sc300.h;Drivers/CMSIS/Include/mpu_armv7.h;Drivers/CMSIS/Include/mpu_armv8.h;Drivers/CMSIS/Include/tz_context.h; +LibFiles=Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_hal_adc.h;Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_hal_adc_ex.h;Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_ll_adc.h;Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_hal.h;Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_hal_def.h;Drivers\STM32G4xx_HAL_Driver\Inc\Legacy\stm32_hal_legacy.h;Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_hal_rcc.h;Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_hal_rcc_ex.h;Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_ll_bus.h;Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_ll_rcc.h;Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_ll_system.h;Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_ll_utils.h;Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_ll_crs.h;Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_hal_flash.h;Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_hal_flash_ex.h;Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_hal_flash_ramfunc.h;Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_hal_gpio.h;Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_hal_gpio_ex.h;Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_ll_gpio.h;Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_hal_exti.h;Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_ll_exti.h;Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_hal_dma.h;Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_hal_dma_ex.h;Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_ll_dma.h;Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_ll_dmamux.h;Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_hal_pwr.h;Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_hal_pwr_ex.h;Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_ll_pwr.h;Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_hal_cortex.h;Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_ll_cortex.h;Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_hal_uart.h;Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_ll_usart.h;Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_ll_lpuart.h;Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_hal_uart_ex.h;Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_hal_tim.h;Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_hal_tim_ex.h;Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_ll_tim.h;Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_adc.c;Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_adc_ex.c;Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_ll_adc.c;Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal.c;Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_rcc.c;Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_rcc_ex.c;Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_flash.c;Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_flash_ex.c;Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_flash_ramfunc.c;Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_gpio.c;Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_exti.c;Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_dma.c;Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_dma_ex.c;Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_pwr.c;Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_pwr_ex.c;Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_cortex.c;Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_uart.c;Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_uart_ex.c;Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_tim.c;Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_tim_ex.c;Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_hal_adc.h;Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_hal_adc_ex.h;Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_ll_adc.h;Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_hal.h;Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_hal_def.h;Drivers\STM32G4xx_HAL_Driver\Inc\Legacy\stm32_hal_legacy.h;Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_hal_rcc.h;Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_hal_rcc_ex.h;Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_ll_bus.h;Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_ll_rcc.h;Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_ll_system.h;Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_ll_utils.h;Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_ll_crs.h;Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_hal_flash.h;Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_hal_flash_ex.h;Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_hal_flash_ramfunc.h;Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_hal_gpio.h;Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_hal_gpio_ex.h;Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_ll_gpio.h;Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_hal_exti.h;Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_ll_exti.h;Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_hal_dma.h;Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_hal_dma_ex.h;Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_ll_dma.h;Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_ll_dmamux.h;Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_hal_pwr.h;Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_hal_pwr_ex.h;Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_ll_pwr.h;Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_hal_cortex.h;Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_ll_cortex.h;Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_hal_uart.h;Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_ll_usart.h;Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_ll_lpuart.h;Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_hal_uart_ex.h;Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_hal_tim.h;Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_hal_tim_ex.h;Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_ll_tim.h;Drivers\CMSIS\Device\ST\STM32G4xx\Include\stm32g431xx.h;Drivers\CMSIS\Device\ST\STM32G4xx\Include\stm32g4xx.h;Drivers\CMSIS\Device\ST\STM32G4xx\Include\system_stm32g4xx.h;Drivers\CMSIS\Device\ST\STM32G4xx\Source\Templates\system_stm32g4xx.c;Drivers\CMSIS\Include\cmsis_armcc.h;Drivers\CMSIS\Include\cmsis_armclang.h;Drivers\CMSIS\Include\cmsis_armclang_ltm.h;Drivers\CMSIS\Include\cmsis_compiler.h;Drivers\CMSIS\Include\cmsis_gcc.h;Drivers\CMSIS\Include\cmsis_iccarm.h;Drivers\CMSIS\Include\cmsis_version.h;Drivers\CMSIS\Include\core_armv81mml.h;Drivers\CMSIS\Include\core_armv8mbl.h;Drivers\CMSIS\Include\core_armv8mml.h;Drivers\CMSIS\Include\core_cm0.h;Drivers\CMSIS\Include\core_cm0plus.h;Drivers\CMSIS\Include\core_cm1.h;Drivers\CMSIS\Include\core_cm23.h;Drivers\CMSIS\Include\core_cm3.h;Drivers\CMSIS\Include\core_cm33.h;Drivers\CMSIS\Include\core_cm35p.h;Drivers\CMSIS\Include\core_cm4.h;Drivers\CMSIS\Include\core_cm7.h;Drivers\CMSIS\Include\core_sc000.h;Drivers\CMSIS\Include\core_sc300.h;Drivers\CMSIS\Include\mpu_armv7.h;Drivers\CMSIS\Include\mpu_armv8.h;Drivers\CMSIS\Include\tz_context.h; [PreviousUsedIarFiles] SourceFiles=..\Src\main.c;..\Src\stm32f4xx_it.c;..\Src\stm32f4xx_hal_msp.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ex.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ramfunc.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma_ex.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr_ex.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.c;../\Src/system_stm32f4xx.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ex.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ramfunc.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma_ex.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr_ex.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.c;../\Src/system_stm32f4xx.c;../Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.c;null; HeaderPath=..\Drivers\STM32F4xx_HAL_Driver\Inc;..\Drivers\STM32F4xx_HAL_Driver\Inc\Legacy;..\Drivers\CMSIS\Device\ST\STM32F4xx\Include;..\Drivers\CMSIS\Include;..\Inc; [PreviousUsedKeilFiles] -SourceFiles=..\Src\main.c;..\Src\stm32g4xx_it.c;..\Src\stm32g4xx_hal_msp.c;../Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c;../Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_uart.c;../Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_uart_ex.c;../Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_tim.c;../Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_tim_ex.c;../Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_ll_pwr.c;../Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal.c;../Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_rcc.c;../Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_rcc_ex.c;../Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c;../Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash_ex.c;../Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash_ramfunc.c;../Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_exti.c;../Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_dma.c;../Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_dma_ex.c;../Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_pwr.c;../Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_pwr_ex.c;../Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_cortex.c;../\Src/system_stm32g4xx.c;../Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_gpio.c;../Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_uart.c;../Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_uart_ex.c;../Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_tim.c;../Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_tim_ex.c;../Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_ll_pwr.c;../Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal.c;../Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_rcc.c;../Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_rcc_ex.c;../Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash.c;../Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash_ex.c;../Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_flash_ramfunc.c;../Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_exti.c;../Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_dma.c;../Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_dma_ex.c;../Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_pwr.c;../Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_pwr_ex.c;../Drivers/STM32G4xx_HAL_Driver/Src/stm32g4xx_hal_cortex.c;../\Src/system_stm32g4xx.c;../Drivers/CMSIS/Device/ST/STM32G4xx/Source/Templates/system_stm32g4xx.c;null; +SourceFiles=..\Src\main.c;..\Src\stm32g4xx_it.c;..\Src\stm32g4xx_hal_msp.c;..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_adc.c;..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_adc_ex.c;..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_ll_adc.c;..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal.c;..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_rcc.c;..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_rcc_ex.c;..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_flash.c;..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_flash_ex.c;..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_flash_ramfunc.c;..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_gpio.c;..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_exti.c;..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_dma.c;..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_dma_ex.c;..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_pwr.c;..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_pwr_ex.c;..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_cortex.c;..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_uart.c;..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_uart_ex.c;..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_tim.c;..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_tim_ex.c;..\Drivers\CMSIS\Device\ST\STM32G4xx\Source\Templates\system_stm32g4xx.c;..\\Src\system_stm32g4xx.c;..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_adc.c;..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_adc_ex.c;..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_ll_adc.c;..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal.c;..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_rcc.c;..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_rcc_ex.c;..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_flash.c;..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_flash_ex.c;..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_flash_ramfunc.c;..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_gpio.c;..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_exti.c;..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_dma.c;..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_dma_ex.c;..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_pwr.c;..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_pwr_ex.c;..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_cortex.c;..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_uart.c;..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_uart_ex.c;..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_tim.c;..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_tim_ex.c;..\Drivers\CMSIS\Device\ST\STM32G4xx\Source\Templates\system_stm32g4xx.c;..\\Src\system_stm32g4xx.c;;; HeaderPath=..\Drivers\STM32G4xx_HAL_Driver\Inc;..\Drivers\STM32G4xx_HAL_Driver\Inc\Legacy;..\Drivers\CMSIS\Device\ST\STM32G4xx\Include;..\Drivers\CMSIS\Include;..\Inc; -CDefines=USE_HAL_DRIVER;STM32G431xx;USE_HAL_DRIVER;STM32G431xx; +CDefines=USE_HAL_DRIVER;STM32G431xx;USE_HAL_DRIVER;USE_HAL_DRIVER; + +[PreviousGenFiles] +HeaderPath=..\Inc +HeaderFiles=stm32g4xx_it.h;stm32g4xx_hal_conf.h;main.h; +SourcePath=..\Src +SourceFiles=stm32g4xx_it.c;stm32g4xx_hal_msp.c;main.c; diff --git a/bsp/stm32/stm32g474-st-nucleo/board/CubeMX_Config/CubeMX_Config.ioc b/bsp/stm32/stm32g474-st-nucleo/board/CubeMX_Config/CubeMX_Config.ioc index b50c6a321c..9fe65a7fb5 100644 --- a/bsp/stm32/stm32g474-st-nucleo/board/CubeMX_Config/CubeMX_Config.ioc +++ b/bsp/stm32/stm32g474-st-nucleo/board/CubeMX_Config/CubeMX_Config.ioc @@ -1,115 +1,137 @@ #MicroXplorer Configuration settings - do not modify +ADC1.Channel-0\#ChannelRegularConversion=ADC_CHANNEL_1 +ADC1.CommonPathInternal=null|null|null|null +ADC1.IPParameters=Rank-0\#ChannelRegularConversion,Channel-0\#ChannelRegularConversion,SamplingTime-0\#ChannelRegularConversion,OffsetNumber-0\#ChannelRegularConversion,NbrOfConversionFlag,master,CommonPathInternal +ADC1.NbrOfConversionFlag=1 +ADC1.OffsetNumber-0\#ChannelRegularConversion=ADC_OFFSET_NONE +ADC1.Rank-0\#ChannelRegularConversion=1 +ADC1.SamplingTime-0\#ChannelRegularConversion=ADC_SAMPLETIME_2CYCLES_5 +ADC1.master=1 +ADC2.Channel-0\#ChannelRegularConversion=ADC_CHANNEL_17 +ADC2.CommonPathInternal=null|null|null|null +ADC2.IPParameters=Rank-0\#ChannelRegularConversion,Channel-0\#ChannelRegularConversion,SamplingTime-0\#ChannelRegularConversion,OffsetNumber-0\#ChannelRegularConversion,NbrOfConversionFlag,CommonPathInternal +ADC2.NbrOfConversionFlag=1 +ADC2.OffsetNumber-0\#ChannelRegularConversion=ADC_OFFSET_NONE +ADC2.Rank-0\#ChannelRegularConversion=1 +ADC2.SamplingTime-0\#ChannelRegularConversion=ADC_SAMPLETIME_2CYCLES_5 +CAD.formats= +CAD.pinconfig= +CAD.provider= File.Version=6 KeepUserPlacement=true +Mcu.CPN=STM32G431RBT6 Mcu.Family=STM32G4 -Mcu.IP0=NVIC -Mcu.IP1=RCC -Mcu.IP2=SYS -Mcu.IP3=UART4 -Mcu.IP4=USART1 -Mcu.IP5=USART2 -Mcu.IP6=USART3 -Mcu.IPNb=7 +Mcu.IP0=ADC1 +Mcu.IP1=ADC2 +Mcu.IP10=USART1 +Mcu.IP2=LPUART1 +Mcu.IP3=NVIC +Mcu.IP4=RCC +Mcu.IP5=SYS +Mcu.IP6=TIM2 +Mcu.IP7=TIM3 +Mcu.IP8=TIM4 +Mcu.IP9=TIM8 +Mcu.IPNb=11 Mcu.Name=STM32G431R(6-8-B)Tx Mcu.Package=LQFP64 -Mcu.Pin0=PC13 -Mcu.Pin1=PC14-OSC32_IN -Mcu.Pin10=PB10 -Mcu.Pin11=PB11 -Mcu.Pin12=PA13 -Mcu.Pin13=PA14 -Mcu.Pin14=PC10 -Mcu.Pin15=PC11 -Mcu.Pin16=PB3 -Mcu.Pin17=VP_SYS_VS_Systick -Mcu.Pin18=VP_SYS_VS_DBSignals -Mcu.Pin2=PC15-OSC32_OUT -Mcu.Pin3=PF0-OSC_IN -Mcu.Pin4=PF1-OSC_OUT -Mcu.Pin5=PA2 -Mcu.Pin6=PA3 -Mcu.Pin7=PA5 -Mcu.Pin8=PC4 -Mcu.Pin9=PC5 -Mcu.PinsNb=19 +Mcu.Pin0=PC14-OSC32_IN +Mcu.Pin1=PC15-OSC32_OUT +Mcu.Pin10=PA4 +Mcu.Pin11=PA7 +Mcu.Pin12=PB0 +Mcu.Pin13=PB10 +Mcu.Pin14=PC7 +Mcu.Pin15=PA9 +Mcu.Pin16=PA10 +Mcu.Pin17=PA13 +Mcu.Pin18=PA14 +Mcu.Pin19=PB3 +Mcu.Pin2=PF0-OSC_IN +Mcu.Pin20=PB4 +Mcu.Pin21=PB6 +Mcu.Pin22=VP_SYS_VS_Systick +Mcu.Pin23=VP_SYS_VS_DBSignals +Mcu.Pin24=VP_TIM2_VS_ClockSourceINT +Mcu.Pin25=VP_TIM3_VS_ClockSourceINT +Mcu.Pin26=VP_TIM4_VS_ClockSourceINT +Mcu.Pin27=VP_TIM8_VS_ClockSourceINT +Mcu.Pin3=PF1-OSC_OUT +Mcu.Pin4=PC0 +Mcu.Pin5=PC1 +Mcu.Pin6=PA0 +Mcu.Pin7=PA1 +Mcu.Pin8=PA2 +Mcu.Pin9=PA3 +Mcu.PinsNb=28 Mcu.ThirdPartyNb=0 Mcu.UserConstants= Mcu.UserName=STM32G431RBTx -MxCube.Version=5.3.0 -MxDb.Version=DB.5.0.30 -NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false -NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false +MxCube.Version=6.8.0 +MxDb.Version=DB.6.0.80 +NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false +NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false NVIC.ForceEnableDMAVector=true -NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false -NVIC.MemoryManagement_IRQn=true\:0\:0\:false\:false\:true\:false\:false -NVIC.NonMaskableInt_IRQn=true\:0\:0\:false\:false\:true\:false\:false -NVIC.PendSV_IRQn=true\:0\:0\:false\:false\:true\:false\:false +NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false +NVIC.MemoryManagement_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false +NVIC.NonMaskableInt_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false +NVIC.PendSV_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false NVIC.PriorityGroup=NVIC_PRIORITYGROUP_4 -NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:true\:false\:false -NVIC.SysTick_IRQn=true\:0\:0\:false\:false\:true\:false\:true -NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false -PA13.GPIOParameters=GPIO_Label -PA13.GPIO_Label=T_SWDIO -PA13.Locked=true +NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false +NVIC.SysTick_IRQn=true\:0\:0\:false\:false\:true\:false\:true\:false +NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false +PA0.Locked=true +PA0.Mode=IN1-Single-Ended +PA0.Signal=ADC1_IN1 +PA1.Locked=true +PA1.Mode=IN2-Single-Ended +PA1.Signal=ADC1_IN2 +PA10.Locked=true +PA10.Mode=Asynchronous +PA10.Signal=USART1_RX PA13.Mode=Serial_Wire PA13.Signal=SYS_JTMS-SWDIO -PA14.GPIOParameters=GPIO_Label -PA14.GPIO_Label=T_SWCLK -PA14.Locked=true PA14.Mode=Serial_Wire PA14.Signal=SYS_JTCK-SWCLK -PA2.GPIOParameters=GPIO_PuPd -PA2.GPIO_PuPd=GPIO_PULLUP +PA2.Locked=true PA2.Mode=Asynchronous -PA2.Signal=USART2_TX -PA3.GPIOParameters=GPIO_PuPd -PA3.GPIO_PuPd=GPIO_PULLUP +PA2.Signal=LPUART1_TX +PA3.Locked=true PA3.Mode=Asynchronous -PA3.Signal=USART2_RX -PA5.GPIOParameters=GPIO_Label -PA5.GPIO_Label=LD2 [green] -PA5.Locked=true -PA5.Signal=GPIO_Output -PB10.GPIOParameters=GPIO_PuPd -PB10.GPIO_PuPd=GPIO_PULLUP -PB10.Mode=Asynchronous -PB10.Signal=USART3_TX -PB11.GPIOParameters=GPIO_PuPd -PB11.GPIO_PuPd=GPIO_PULLUP -PB11.Mode=Asynchronous -PB11.Signal=USART3_RX -PB3.GPIOParameters=GPIO_Label -PB3.GPIO_Label=T_SWO +PA3.Signal=LPUART1_RX +PA4.Locked=true +PA4.Mode=IN17-Single-Ended +PA4.Signal=ADC2_IN17 +PA7.Locked=true +PA7.Signal=S_TIM3_CH2 +PA9.Locked=true +PA9.Mode=Asynchronous +PA9.Signal=USART1_TX +PB0.Locked=true +PB0.Mode=IN15-Single-Ended +PB0.Signal=ADC1_IN15 +PB10.Locked=true +PB10.Signal=S_TIM2_CH3 PB3.Locked=true -PB3.Signal=SYS_JTDO-SWO -PC10.Mode=Asynchronous -PC10.Signal=UART4_TX -PC11.Mode=Asynchronous -PC11.Signal=UART4_RX -PC13.GPIOParameters=GPIO_Label -PC13.GPIO_Label=B1 [blue push button] -PC13.Locked=true -PC13.Signal=GPXTI13 -PC14-OSC32_IN.Locked=true +PB3.Signal=S_TIM2_CH2 +PB4.Locked=true +PB4.Signal=S_TIM3_CH1 +PB6.Locked=true +PB6.Signal=S_TIM4_CH1 +PC0.Locked=true +PC0.Mode=IN6-Single-Ended +PC0.Signal=ADC1_IN6 +PC1.Locked=true +PC1.Mode=IN7-Single-Ended +PC1.Signal=ADC1_IN7 PC14-OSC32_IN.Mode=LSE-External-Oscillator PC14-OSC32_IN.Signal=RCC_OSC32_IN -PC15-OSC32_OUT.Locked=true PC15-OSC32_OUT.Mode=LSE-External-Oscillator PC15-OSC32_OUT.Signal=RCC_OSC32_OUT -PC4.GPIOParameters=GPIO_Label -PC4.GPIO_Label=USART1_TX [STLINKV3E_VCP_RX] -PC4.Locked=true -PC4.Mode=Asynchronous -PC4.Signal=USART1_TX -PC5.GPIOParameters=GPIO_Label -PC5.GPIO_Label=USART1_RX [STLINKV3E_VCP_TX] -PC5.Locked=true -PC5.Mode=Asynchronous -PC5.Signal=USART1_RX -PF0-OSC_IN.Locked=true +PC7.Locked=true +PC7.Signal=S_TIM8_CH2 PF0-OSC_IN.Mode=HSE-External-Oscillator PF0-OSC_IN.Signal=RCC_OSC_IN -PF1-OSC_OUT.Locked=true PF1-OSC_OUT.Mode=HSE-External-Oscillator PF1-OSC_OUT.Signal=RCC_OSC_OUT PinOutPanel.RotationAngle=0 @@ -122,7 +144,7 @@ ProjectManager.CustomerFirmwarePackage= ProjectManager.DefaultFWLocation=true ProjectManager.DeletePrevious=true ProjectManager.DeviceId=STM32G431RBTx -ProjectManager.FirmwarePackage=STM32Cube FW_G4 V1.1.0 +ProjectManager.FirmwarePackage=STM32Cube FW_G4 V1.5.1 ProjectManager.FreePins=false ProjectManager.HalAssertFull=false ProjectManager.HeapSize=0x200 @@ -135,12 +157,13 @@ ProjectManager.PreviousToolchain= ProjectManager.ProjectBuild=false ProjectManager.ProjectFileName=CubeMX_Config.ioc ProjectManager.ProjectName=CubeMX_Config +ProjectManager.ProjectStructure= ProjectManager.RegisterCallBack= ProjectManager.StackSize=0x400 ProjectManager.TargetToolchain=MDK-ARM V5 ProjectManager.ToolChainLocation= ProjectManager.UnderRoot=false -ProjectManager.functionlistsort=1-MX_GPIO_Init-GPIO-false-HAL-true,2-SystemClock_Config-RCC-false-HAL-false,3-MX_USART1_UART_Init-USART1-false-HAL-true,4-MX_UART4_Init-UART4-false-HAL-true,5-MX_USART2_UART_Init-USART2-false-HAL-true,6-MX_USART3_UART_Init-USART3-false-HAL-true +ProjectManager.functionlistsort=1-MX_GPIO_Init-GPIO-false-HAL-true,2-SystemClock_Config-RCC-false-HAL-false,3-MX_ADC1_Init-ADC1-false-HAL-true,4-MX_ADC2_Init-ADC2-false-HAL-true,5-MX_LPUART1_UART_Init-LPUART1-false-HAL-true,6-MX_TIM2_Init-TIM2-false-HAL-true,7-MX_TIM3_Init-TIM3-false-HAL-true,8-MX_TIM4_Init-TIM4-false-HAL-true,9-MX_TIM8_Init-TIM8-false-HAL-true RCC.ADC12Freq_Value=170000000 RCC.AHBFreq_Value=170000000 RCC.APB1Freq_Value=170000000 @@ -186,18 +209,41 @@ RCC.USART3Freq_Value=170000000 RCC.USBFreq_Value=170000000 RCC.VCOInputFreq_Value=4000000 RCC.VCOOutputFreq_Value=340000000 -SH.GPXTI13.0=GPIO_EXTI13 -SH.GPXTI13.ConfNb=1 -USART1.IPParameters=VirtualMode-Asynchronous,WordLength +SH.S_TIM2_CH2.0=TIM2_CH2,PWM Generation2 CH2 +SH.S_TIM2_CH2.ConfNb=1 +SH.S_TIM2_CH3.0=TIM2_CH3,PWM Generation3 CH3 +SH.S_TIM2_CH3.ConfNb=1 +SH.S_TIM3_CH1.0=TIM3_CH1,PWM Generation1 CH1 +SH.S_TIM3_CH1.ConfNb=1 +SH.S_TIM3_CH2.0=TIM3_CH2,PWM Generation2 CH2 +SH.S_TIM3_CH2.ConfNb=1 +SH.S_TIM4_CH1.0=TIM4_CH1,PWM Generation1 CH1 +SH.S_TIM4_CH1.ConfNb=1 +SH.S_TIM8_CH2.0=TIM8_CH2,PWM Generation2 CH2 +SH.S_TIM8_CH2.ConfNb=1 +TIM2.Channel-PWM\ Generation2\ CH2=TIM_CHANNEL_2 +TIM2.Channel-PWM\ Generation3\ CH3=TIM_CHANNEL_3 +TIM2.IPParameters=Channel-PWM Generation2 CH2,Channel-PWM Generation3 CH3 +TIM3.Channel-PWM\ Generation1\ CH1=TIM_CHANNEL_1 +TIM3.Channel-PWM\ Generation2\ CH2=TIM_CHANNEL_2 +TIM3.IPParameters=Channel-PWM Generation2 CH2,Channel-PWM Generation1 CH1 +TIM4.Channel-PWM\ Generation1\ CH1=TIM_CHANNEL_1 +TIM4.IPParameters=Channel-PWM Generation1 CH1 +TIM8.Channel-PWM\ Generation2\ CH2=TIM_CHANNEL_2 +TIM8.IPParameters=Channel-PWM Generation2 CH2 +USART1.IPParameters=VirtualMode-Asynchronous USART1.VirtualMode-Asynchronous=VM_ASYNC -USART1.WordLength=WORDLENGTH_8B -USART2.IPParameters=VirtualMode-Asynchronous -USART2.VirtualMode-Asynchronous=VM_ASYNC -USART3.IPParameters=VirtualMode-Asynchronous -USART3.VirtualMode-Asynchronous=VM_ASYNC VP_SYS_VS_DBSignals.Mode=DisableDeadBatterySignals VP_SYS_VS_DBSignals.Signal=SYS_VS_DBSignals VP_SYS_VS_Systick.Mode=SysTick VP_SYS_VS_Systick.Signal=SYS_VS_Systick +VP_TIM2_VS_ClockSourceINT.Mode=Internal +VP_TIM2_VS_ClockSourceINT.Signal=TIM2_VS_ClockSourceINT +VP_TIM3_VS_ClockSourceINT.Mode=Internal +VP_TIM3_VS_ClockSourceINT.Signal=TIM3_VS_ClockSourceINT +VP_TIM4_VS_ClockSourceINT.Mode=Internal +VP_TIM4_VS_ClockSourceINT.Signal=TIM4_VS_ClockSourceINT +VP_TIM8_VS_ClockSourceINT.Mode=Internal +VP_TIM8_VS_ClockSourceINT.Signal=TIM8_VS_ClockSourceINT board=NUCLEO-G431RB boardIOC=true diff --git a/bsp/stm32/stm32g474-st-nucleo/board/CubeMX_Config/Inc/main.h b/bsp/stm32/stm32g474-st-nucleo/board/CubeMX_Config/Inc/main.h index b07dd95d86..6886811418 100644 --- a/bsp/stm32/stm32g474-st-nucleo/board/CubeMX_Config/Inc/main.h +++ b/bsp/stm32/stm32g474-st-nucleo/board/CubeMX_Config/Inc/main.h @@ -29,7 +29,6 @@ extern "C" { /* Includes ------------------------------------------------------------------*/ #include "stm32g4xx_hal.h" -#include "stm32g4xx_ll_pwr.h" /* Private includes ----------------------------------------------------------*/ /* USER CODE BEGIN Includes */ @@ -51,6 +50,8 @@ extern "C" { /* USER CODE END EM */ +void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim); + /* Exported functions prototypes ---------------------------------------------*/ void Error_Handler(void); @@ -59,20 +60,7 @@ void Error_Handler(void); /* USER CODE END EFP */ /* Private defines -----------------------------------------------------------*/ -#define B1_Pin GPIO_PIN_13 -#define B1_GPIO_Port GPIOC -#define LD2_Pin GPIO_PIN_5 -#define LD2_GPIO_Port GPIOA -#define USART1_TX_Pin GPIO_PIN_4 -#define USART1_TX_GPIO_Port GPIOC -#define USART1_RX_Pin GPIO_PIN_5 -#define USART1_RX_GPIO_Port GPIOC -#define T_SWDIO_Pin GPIO_PIN_13 -#define T_SWDIO_GPIO_Port GPIOA -#define T_SWCLK_Pin GPIO_PIN_14 -#define T_SWCLK_GPIO_Port GPIOA -#define T_SWO_Pin GPIO_PIN_3 -#define T_SWO_GPIO_Port GPIOB + /* USER CODE BEGIN Private defines */ /* USER CODE END Private defines */ @@ -82,5 +70,3 @@ void Error_Handler(void); #endif #endif /* __MAIN_H */ - -/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/bsp/stm32/stm32g474-st-nucleo/board/CubeMX_Config/Inc/stm32g4xx_hal_conf.h b/bsp/stm32/stm32g474-st-nucleo/board/CubeMX_Config/Inc/stm32g4xx_hal_conf.h index 377af22d3a..7b01e09369 100644 --- a/bsp/stm32/stm32g474-st-nucleo/board/CubeMX_Config/Inc/stm32g4xx_hal_conf.h +++ b/bsp/stm32/stm32g474-st-nucleo/board/CubeMX_Config/Inc/stm32g4xx_hal_conf.h @@ -1,29 +1,29 @@ +/* USER CODE BEGIN Header */ /** ****************************************************************************** * @file stm32g4xx_hal_conf.h * @author MCD Application Team * @brief HAL configuration file ****************************************************************************** - * @attention + * @attention * - *

© Copyright (c) 2018 STMicroelectronics. - * All rights reserved.

+ * Copyright (c) 2019 STMicroelectronics. + * All rights reserved. * - * This software component is licensed by ST under BSD 3-Clause license, - * the "License"; You may not use this file except in compliance with the - * License. You may obtain a copy of the License at: - * opensource.org/licenses/BSD-3-Clause + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. * ****************************************************************************** */ +/* USER CODE END Header */ /* Define to prevent recursive inclusion -------------------------------------*/ #ifndef STM32G4xx_HAL_CONF_H #define STM32G4xx_HAL_CONF_H #ifdef __cplusplus -extern "C" -{ + extern "C" { #endif /* Exported types ------------------------------------------------------------*/ @@ -31,12 +31,12 @@ extern "C" /* ########################## Module Selection ############################## */ /** -* @brief This is the list of modules to be used in the HAL driver -*/ + * @brief This is the list of modules to be used in the HAL driver + */ #define HAL_MODULE_ENABLED -/*#define HAL_ADC_MODULE_ENABLED */ + #define HAL_ADC_MODULE_ENABLED /*#define HAL_COMP_MODULE_ENABLED */ /*#define HAL_CORDIC_MODULE_ENABLED */ /*#define HAL_CRC_MODULE_ENABLED */ @@ -62,7 +62,7 @@ extern "C" /*#define HAL_SMBUS_MODULE_ENABLED */ /*#define HAL_SPI_MODULE_ENABLED */ /*#define HAL_SRAM_MODULE_ENABLED */ -/*#define HAL_TIM_MODULE_ENABLED */ +#define HAL_TIM_MODULE_ENABLED #define HAL_UART_MODULE_ENABLED /*#define HAL_USART_MODULE_ENABLED */ /*#define HAL_WWDG_MODULE_ENABLED */ @@ -78,35 +78,35 @@ extern "C" /** * @brief This is the list of modules where register callback can be used */ -#define USE_HAL_ADC_REGISTER_CALLBACKS 0U -#define USE_HAL_COMP_REGISTER_CALLBACKS 0U -#define USE_HAL_CORDIC_REGISTER_CALLBACKS 0U -#define USE_HAL_CRYP_REGISTER_CALLBACKS 0U -#define USE_HAL_DAC_REGISTER_CALLBACKS 0U -#define USE_HAL_EXTI_REGISTER_CALLBACKS 0U -#define USE_HAL_FDCAN_REGISTER_CALLBACKS 0U -#define USE_HAL_FMAC_REGISTER_CALLBACKS 0U -#define USE_HAL_HRTIM_REGISTER_CALLBACKS 0U -#define USE_HAL_I2C_REGISTER_CALLBACKS 0U -#define USE_HAL_I2S_REGISTER_CALLBACKS 0U -#define USE_HAL_IRDA_REGISTER_CALLBACKS 0U -#define USE_HAL_LPTIM_REGISTER_CALLBACKS 0U -#define USE_HAL_NAND_REGISTER_CALLBACKS 0U -#define USE_HAL_NOR_REGISTER_CALLBACKS 0U -#define USE_HAL_OPAMP_REGISTER_CALLBACKS 0U -#define USE_HAL_PCD_REGISTER_CALLBACKS 0U -#define USE_HAL_QSPI_REGISTER_CALLBACKS 0U -#define USE_HAL_RNG_REGISTER_CALLBACKS 0U -#define USE_HAL_RTC_REGISTER_CALLBACKS 0U -#define USE_HAL_SAI_REGISTER_CALLBACKS 0U -#define USE_HAL_SMARTCARD_REGISTER_CALLBACKS 0U -#define USE_HAL_SMBUS_REGISTER_CALLBACKS 0U -#define USE_HAL_SPI_REGISTER_CALLBACKS 0U -#define USE_HAL_SRAM_REGISTER_CALLBACKS 0U -#define USE_HAL_TIM_REGISTER_CALLBACKS 0U -#define USE_HAL_UART_REGISTER_CALLBACKS 0U -#define USE_HAL_USART_REGISTER_CALLBACKS 0U -#define USE_HAL_WWDG_REGISTER_CALLBACKS 0U +#define USE_HAL_ADC_REGISTER_CALLBACKS 0U +#define USE_HAL_COMP_REGISTER_CALLBACKS 0U +#define USE_HAL_CORDIC_REGISTER_CALLBACKS 0U +#define USE_HAL_CRYP_REGISTER_CALLBACKS 0U +#define USE_HAL_DAC_REGISTER_CALLBACKS 0U +#define USE_HAL_EXTI_REGISTER_CALLBACKS 0U +#define USE_HAL_FDCAN_REGISTER_CALLBACKS 0U +#define USE_HAL_FMAC_REGISTER_CALLBACKS 0U +#define USE_HAL_HRTIM_REGISTER_CALLBACKS 0U +#define USE_HAL_I2C_REGISTER_CALLBACKS 0U +#define USE_HAL_I2S_REGISTER_CALLBACKS 0U +#define USE_HAL_IRDA_REGISTER_CALLBACKS 0U +#define USE_HAL_LPTIM_REGISTER_CALLBACKS 0U +#define USE_HAL_NAND_REGISTER_CALLBACKS 0U +#define USE_HAL_NOR_REGISTER_CALLBACKS 0U +#define USE_HAL_OPAMP_REGISTER_CALLBACKS 0U +#define USE_HAL_PCD_REGISTER_CALLBACKS 0U +#define USE_HAL_QSPI_REGISTER_CALLBACKS 0U +#define USE_HAL_RNG_REGISTER_CALLBACKS 0U +#define USE_HAL_RTC_REGISTER_CALLBACKS 0U +#define USE_HAL_SAI_REGISTER_CALLBACKS 0U +#define USE_HAL_SMARTCARD_REGISTER_CALLBACKS 0U +#define USE_HAL_SMBUS_REGISTER_CALLBACKS 0U +#define USE_HAL_SPI_REGISTER_CALLBACKS 0U +#define USE_HAL_SRAM_REGISTER_CALLBACKS 0U +#define USE_HAL_TIM_REGISTER_CALLBACKS 0U +#define USE_HAL_UART_REGISTER_CALLBACKS 0U +#define USE_HAL_USART_REGISTER_CALLBACKS 0U +#define USE_HAL_WWDG_REGISTER_CALLBACKS 0U /* ########################## Oscillator Values adaptation ####################*/ /** @@ -114,22 +114,22 @@ extern "C" * This value is used by the RCC HAL module to compute the system frequency * (when HSE is used as system clock source, directly or through the PLL). */ -#if !defined(HSE_VALUE) -#define HSE_VALUE (24000000UL) /*!< Value of the External oscillator in Hz */ -#endif /* HSE_VALUE */ +#if !defined (HSE_VALUE) + #define HSE_VALUE (24000000UL) /*!< Value of the External oscillator in Hz */ +#endif /* HSE_VALUE */ -#if !defined(HSE_STARTUP_TIMEOUT) -#define HSE_STARTUP_TIMEOUT (100UL) /*!< Time out for HSE start up, in ms */ -#endif /* HSE_STARTUP_TIMEOUT */ +#if !defined (HSE_STARTUP_TIMEOUT) + #define HSE_STARTUP_TIMEOUT (100UL) /*!< Time out for HSE start up, in ms */ +#endif /* HSE_STARTUP_TIMEOUT */ /** * @brief Internal High Speed oscillator (HSI) value. * This value is used by the RCC HAL module to compute the system frequency * (when HSI is used as system clock source, directly or through the PLL). */ -#if !defined(HSI_VALUE) -#define HSI_VALUE (16000000UL) /*!< Value of the Internal oscillator in Hz*/ -#endif /* HSI_VALUE */ +#if !defined (HSI_VALUE) + #define HSI_VALUE (16000000UL) /*!< Value of the Internal oscillator in Hz*/ +#endif /* HSI_VALUE */ /** * @brief Internal High Speed oscillator (HSI48) value for USB FS and RNG. @@ -138,75 +138,75 @@ extern "C" * When the CRS is not used, the HSI48 RC oscillator runs on it default frequency * which is subject to manufacturing process variations. */ -#if !defined(HSI48_VALUE) -#define HSI48_VALUE (48000000UL) /*!< Value of the Internal High Speed oscillator for USB FS/RNG in Hz. \ - The real value my vary depending on manufacturing process variations.*/ -#endif /* HSI48_VALUE */ +#if !defined (HSI48_VALUE) + #define HSI48_VALUE (48000000UL) /*!< Value of the Internal High Speed oscillator for USB FS/RNG in Hz. + The real value my vary depending on manufacturing process variations.*/ +#endif /* HSI48_VALUE */ /** * @brief Internal Low Speed oscillator (LSI) value. */ -#if !defined(LSI_VALUE) +#if !defined (LSI_VALUE) /*!< Value of the Internal Low Speed oscillator in Hz The real value may vary depending on the variations in voltage and temperature.*/ -#define LSI_VALUE (32000UL) /*!< LSI Typical Value in Hz*/ -#endif /* LSI_VALUE */ +#define LSI_VALUE (32000UL) /*!< LSI Typical Value in Hz*/ +#endif /* LSI_VALUE */ /** * @brief External Low Speed oscillator (LSE) value. * This value is used by the UART, RTC HAL module to compute the system frequency */ -#if !defined(LSE_VALUE) -#define LSE_VALUE (32768UL) /*!< Value of the External Low Speed oscillator in Hz */ -#endif /* LSE_VALUE */ +#if !defined (LSE_VALUE) +#define LSE_VALUE (32768UL) /*!< Value of the External Low Speed oscillator in Hz */ +#endif /* LSE_VALUE */ -#if !defined(LSE_STARTUP_TIMEOUT) -#define LSE_STARTUP_TIMEOUT (5000UL) /*!< Time out for LSE start up, in ms */ -#endif /* LSE_STARTUP_TIMEOUT */ +#if !defined (LSE_STARTUP_TIMEOUT) +#define LSE_STARTUP_TIMEOUT (5000UL) /*!< Time out for LSE start up, in ms */ +#endif /* LSE_STARTUP_TIMEOUT */ /** * @brief External clock source for I2S and SAI peripherals * This value is used by the I2S and SAI HAL modules to compute the I2S and SAI clock source * frequency, this source is inserted directly through I2S_CKIN pad. */ -#if !defined(EXTERNAL_CLOCK_VALUE) -#define EXTERNAL_CLOCK_VALUE (12288000UL) /*!< Value of the External oscillator in Hz*/ -#endif /* EXTERNAL_CLOCK_VALUE */ +#if !defined (EXTERNAL_CLOCK_VALUE) +#define EXTERNAL_CLOCK_VALUE (12288000UL) /*!< Value of the External oscillator in Hz*/ +#endif /* EXTERNAL_CLOCK_VALUE */ /* Tip: To avoid modifying this file each time you need to use different HSE, - === you can define the HSE value in your toolchain compiler preprocessor. */ + === you can define the HSE value in your toolchain compiler preprocessor. */ /* ########################### System Configuration ######################### */ /** -* @brief This is the HAL system configuration section -*/ + * @brief This is the HAL system configuration section + */ -#define VDD_VALUE (3300UL) /*!< Value of VDD in mv */ -#define TICK_INT_PRIORITY (0UL) /*!< tick interrupt priority (lowest by default) */ -#define USE_RTOS 0U -#define PREFETCH_ENABLE 0U -#define INSTRUCTION_CACHE_ENABLE 1U -#define DATA_CACHE_ENABLE 1U +#define VDD_VALUE (3300UL) /*!< Value of VDD in mv */ +#define TICK_INT_PRIORITY (0UL) /*!< tick interrupt priority (lowest by default) */ +#define USE_RTOS 0U +#define PREFETCH_ENABLE 0U +#define INSTRUCTION_CACHE_ENABLE 1U +#define DATA_CACHE_ENABLE 1U /* ########################## Assert Selection ############################## */ /** -* @brief Uncomment the line below to expanse the "assert_param" macro in the -* HAL drivers code -*/ + * @brief Uncomment the line below to expanse the "assert_param" macro in the + * HAL drivers code + */ /* #define USE_FULL_ASSERT 1U */ /* ################## SPI peripheral configuration ########################## */ /* CRC FEATURE: Use to activate CRC feature inside HAL SPI Driver -* Activated: CRC code is present inside driver -* Deactivated: CRC code cleaned from driver -*/ + * Activated: CRC code is present inside driver + * Deactivated: CRC code cleaned from driver + */ -#define USE_SPI_CRC 0U +#define USE_SPI_CRC 0U /* Includes ------------------------------------------------------------------*/ /** -* @brief Include module's header file -*/ + * @brief Include module's header file + */ #ifdef HAL_RCC_MODULE_ENABLED #include "stm32g4xx_hal_rcc.h" @@ -357,7 +357,7 @@ The real value may vary depending on the variations in voltage and temperature.* #endif /* HAL_WWDG_MODULE_ENABLED */ /* Exported macro ------------------------------------------------------------*/ -#ifdef USE_FULL_ASSERT +#ifdef USE_FULL_ASSERT /** * @brief The assert_param macro is used for function's parameters check. * @param expr: If expr is false, it calls assert_failed function @@ -378,5 +378,3 @@ void assert_failed(uint8_t *file, uint32_t line); #endif #endif /* STM32G4xx_HAL_CONF_H */ - -/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/bsp/stm32/stm32g474-st-nucleo/board/CubeMX_Config/Inc/stm32g4xx_it.h b/bsp/stm32/stm32g474-st-nucleo/board/CubeMX_Config/Inc/stm32g4xx_it.h index cbb2b1de78..7f39c7c9ba 100644 --- a/bsp/stm32/stm32g474-st-nucleo/board/CubeMX_Config/Inc/stm32g4xx_it.h +++ b/bsp/stm32/stm32g474-st-nucleo/board/CubeMX_Config/Inc/stm32g4xx_it.h @@ -65,5 +65,3 @@ void SysTick_Handler(void); #endif #endif /* __STM32G4xx_IT_H */ - -/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/bsp/stm32/stm32g474-st-nucleo/board/CubeMX_Config/Src/stm32g4xx_hal_msp.c b/bsp/stm32/stm32g474-st-nucleo/board/CubeMX_Config/Src/stm32g4xx_hal_msp.c index 88b8c0862f..8087945098 100644 --- a/bsp/stm32/stm32g474-st-nucleo/board/CubeMX_Config/Src/stm32g4xx_hal_msp.c +++ b/bsp/stm32/stm32g474-st-nucleo/board/CubeMX_Config/Src/stm32g4xx_hal_msp.c @@ -58,7 +58,9 @@ /* USER CODE BEGIN 0 */ /* USER CODE END 0 */ -/** + +void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim); + /** * Initializes the Global MSP. */ void HAL_MspInit(void) @@ -74,27 +76,196 @@ void HAL_MspInit(void) /** Disable the internal Pull-Up in Dead Battery pins of UCPD peripheral */ - LL_PWR_DisableDeadBatteryPD(); + HAL_PWREx_DisableUCPDDeadBattery(); /* USER CODE BEGIN MspInit 1 */ /* USER CODE END MspInit 1 */ } +static uint32_t HAL_RCC_ADC12_CLK_ENABLED=0; + +/** +* @brief ADC MSP Initialization +* This function configures the hardware resources used in this example +* @param hadc: ADC handle pointer +* @retval None +*/ +void HAL_ADC_MspInit(ADC_HandleTypeDef* hadc) +{ + GPIO_InitTypeDef GPIO_InitStruct = {0}; + RCC_PeriphCLKInitTypeDef PeriphClkInit = {0}; + if(hadc->Instance==ADC1) + { + /* USER CODE BEGIN ADC1_MspInit 0 */ + + /* USER CODE END ADC1_MspInit 0 */ + + /** Initializes the peripherals clocks + */ + PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_ADC12; + PeriphClkInit.Adc12ClockSelection = RCC_ADC12CLKSOURCE_SYSCLK; + if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) + { + Error_Handler(); + } + + /* Peripheral clock enable */ + HAL_RCC_ADC12_CLK_ENABLED++; + if(HAL_RCC_ADC12_CLK_ENABLED==1){ + __HAL_RCC_ADC12_CLK_ENABLE(); + } + + __HAL_RCC_GPIOC_CLK_ENABLE(); + __HAL_RCC_GPIOA_CLK_ENABLE(); + __HAL_RCC_GPIOB_CLK_ENABLE(); + /**ADC1 GPIO Configuration + PC0 ------> ADC1_IN6 + PC1 ------> ADC1_IN7 + PA0 ------> ADC1_IN1 + PA1 ------> ADC1_IN2 + PB0 ------> ADC1_IN15 + */ + GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1; + GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); + + GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1; + GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + + GPIO_InitStruct.Pin = GPIO_PIN_0; + GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); + + /* USER CODE BEGIN ADC1_MspInit 1 */ + + /* USER CODE END ADC1_MspInit 1 */ + } + else if(hadc->Instance==ADC2) + { + /* USER CODE BEGIN ADC2_MspInit 0 */ + + /* USER CODE END ADC2_MspInit 0 */ + + /** Initializes the peripherals clocks + */ + PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_ADC12; + PeriphClkInit.Adc12ClockSelection = RCC_ADC12CLKSOURCE_SYSCLK; + if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) + { + Error_Handler(); + } + + /* Peripheral clock enable */ + HAL_RCC_ADC12_CLK_ENABLED++; + if(HAL_RCC_ADC12_CLK_ENABLED==1){ + __HAL_RCC_ADC12_CLK_ENABLE(); + } + + __HAL_RCC_GPIOA_CLK_ENABLE(); + /**ADC2 GPIO Configuration + PA4 ------> ADC2_IN17 + */ + GPIO_InitStruct.Pin = GPIO_PIN_4; + GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + + /* USER CODE BEGIN ADC2_MspInit 1 */ + + /* USER CODE END ADC2_MspInit 1 */ + } + +} + +/** +* @brief ADC MSP De-Initialization +* This function freeze the hardware resources used in this example +* @param hadc: ADC handle pointer +* @retval None +*/ +void HAL_ADC_MspDeInit(ADC_HandleTypeDef* hadc) +{ + if(hadc->Instance==ADC1) + { + /* USER CODE BEGIN ADC1_MspDeInit 0 */ + + /* USER CODE END ADC1_MspDeInit 0 */ + /* Peripheral clock disable */ + HAL_RCC_ADC12_CLK_ENABLED--; + if(HAL_RCC_ADC12_CLK_ENABLED==0){ + __HAL_RCC_ADC12_CLK_DISABLE(); + } + + /**ADC1 GPIO Configuration + PC0 ------> ADC1_IN6 + PC1 ------> ADC1_IN7 + PA0 ------> ADC1_IN1 + PA1 ------> ADC1_IN2 + PB0 ------> ADC1_IN15 + */ + HAL_GPIO_DeInit(GPIOC, GPIO_PIN_0|GPIO_PIN_1); + + HAL_GPIO_DeInit(GPIOA, GPIO_PIN_0|GPIO_PIN_1); + + HAL_GPIO_DeInit(GPIOB, GPIO_PIN_0); + + /* USER CODE BEGIN ADC1_MspDeInit 1 */ + + /* USER CODE END ADC1_MspDeInit 1 */ + } + else if(hadc->Instance==ADC2) + { + /* USER CODE BEGIN ADC2_MspDeInit 0 */ + + /* USER CODE END ADC2_MspDeInit 0 */ + /* Peripheral clock disable */ + HAL_RCC_ADC12_CLK_ENABLED--; + if(HAL_RCC_ADC12_CLK_ENABLED==0){ + __HAL_RCC_ADC12_CLK_DISABLE(); + } + + /**ADC2 GPIO Configuration + PA4 ------> ADC2_IN17 + */ + HAL_GPIO_DeInit(GPIOA, GPIO_PIN_4); + + /* USER CODE BEGIN ADC2_MspDeInit 1 */ + + /* USER CODE END ADC2_MspDeInit 1 */ + } + +} + /** * @brief UART MSP Initialization * This function configures the hardware resources used in this example * @param huart: UART handle pointer * @retval None */ -void HAL_UART_MspInit(UART_HandleTypeDef *huart) +void HAL_UART_MspInit(UART_HandleTypeDef* huart) { GPIO_InitTypeDef GPIO_InitStruct = {0}; - if (huart->Instance == LPUART1) + RCC_PeriphCLKInitTypeDef PeriphClkInit = {0}; + if(huart->Instance==LPUART1) { - /* USER CODE BEGIN LPUART1_MspInit 0 */ + /* USER CODE BEGIN LPUART1_MspInit 0 */ + + /* USER CODE END LPUART1_MspInit 0 */ + + /** Initializes the peripherals clocks + */ + PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_LPUART1; + PeriphClkInit.Lpuart1ClockSelection = RCC_LPUART1CLKSOURCE_PCLK1; + if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) + { + Error_Handler(); + } - /* USER CODE END LPUART1_MspInit 0 */ /* Peripheral clock enable */ __HAL_RCC_LPUART1_CLK_ENABLE(); @@ -103,89 +274,52 @@ void HAL_UART_MspInit(UART_HandleTypeDef *huart) PA2 ------> LPUART1_TX PA3 ------> LPUART1_RX */ - GPIO_InitStruct.Pin = GPIO_PIN_2 | GPIO_PIN_3; + GPIO_InitStruct.Pin = GPIO_PIN_2|GPIO_PIN_3; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - GPIO_InitStruct.Pull = GPIO_PULLUP; + GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; GPIO_InitStruct.Alternate = GPIO_AF12_LPUART1; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); - /* USER CODE BEGIN LPUART1_MspInit 1 */ + /* USER CODE BEGIN LPUART1_MspInit 1 */ - /* USER CODE END LPUART1_MspInit 1 */ + /* USER CODE END LPUART1_MspInit 1 */ } - else if (huart->Instance == UART4) + else if(huart->Instance==USART1) { - /* USER CODE BEGIN UART4_MspInit 0 */ + /* USER CODE BEGIN USART1_MspInit 0 */ - /* USER CODE END UART4_MspInit 0 */ - /* Peripheral clock enable */ - __HAL_RCC_UART4_CLK_ENABLE(); + /* USER CODE END USART1_MspInit 0 */ - __HAL_RCC_GPIOC_CLK_ENABLE(); - /**UART4 GPIO Configuration - PC10 ------> UART4_TX - PC11 ------> UART4_RX - */ - GPIO_InitStruct.Pin = GPIO_PIN_10 | GPIO_PIN_11; - GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - GPIO_InitStruct.Pull = GPIO_PULLUP; - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - GPIO_InitStruct.Alternate = GPIO_AF5_UART4; - HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); + /** Initializes the peripherals clocks + */ + PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USART1; + PeriphClkInit.Usart1ClockSelection = RCC_USART1CLKSOURCE_PCLK2; + if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) + { + Error_Handler(); + } - /* USER CODE BEGIN UART4_MspInit 1 */ - - /* USER CODE END UART4_MspInit 1 */ - } - else if (huart->Instance == USART1) - { - /* USER CODE BEGIN USART1_MspInit 0 */ - - /* USER CODE END USART1_MspInit 0 */ /* Peripheral clock enable */ __HAL_RCC_USART1_CLK_ENABLE(); - __HAL_RCC_GPIOC_CLK_ENABLE(); + __HAL_RCC_GPIOA_CLK_ENABLE(); /**USART1 GPIO Configuration - PC4 ------> USART1_TX - PC5 ------> USART1_RX + PA9 ------> USART1_TX + PA10 ------> USART1_RX */ - GPIO_InitStruct.Pin = USART1_TX_Pin | USART1_RX_Pin; + GPIO_InitStruct.Pin = GPIO_PIN_9|GPIO_PIN_10; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - GPIO_InitStruct.Pull = GPIO_PULLUP; + GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; GPIO_InitStruct.Alternate = GPIO_AF7_USART1; - HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); - /* USER CODE BEGIN USART1_MspInit 1 */ + /* USER CODE BEGIN USART1_MspInit 1 */ - /* USER CODE END USART1_MspInit 1 */ + /* USER CODE END USART1_MspInit 1 */ } - else if (huart->Instance == USART3) - { - /* USER CODE BEGIN USART3_MspInit 0 */ - /* USER CODE END USART3_MspInit 0 */ - /* Peripheral clock enable */ - __HAL_RCC_USART3_CLK_ENABLE(); - - __HAL_RCC_GPIOB_CLK_ENABLE(); - /**USART3 GPIO Configuration - PB10 ------> USART3_TX - PB11 ------> USART3_RX - */ - GPIO_InitStruct.Pin = GPIO_PIN_10 | GPIO_PIN_11; - GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - GPIO_InitStruct.Pull = GPIO_PULLUP; - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - GPIO_InitStruct.Alternate = GPIO_AF7_USART3; - HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); - - /* USER CODE BEGIN USART3_MspInit 1 */ - - /* USER CODE END USART3_MspInit 1 */ - } } /** @@ -194,13 +328,13 @@ void HAL_UART_MspInit(UART_HandleTypeDef *huart) * @param huart: UART handle pointer * @retval None */ -void HAL_UART_MspDeInit(UART_HandleTypeDef *huart) +void HAL_UART_MspDeInit(UART_HandleTypeDef* huart) { - if (huart->Instance == LPUART1) + if(huart->Instance==LPUART1) { - /* USER CODE BEGIN LPUART1_MspDeInit 0 */ + /* USER CODE BEGIN LPUART1_MspDeInit 0 */ - /* USER CODE END LPUART1_MspDeInit 0 */ + /* USER CODE END LPUART1_MspDeInit 0 */ /* Peripheral clock disable */ __HAL_RCC_LPUART1_CLK_DISABLE(); @@ -208,70 +342,241 @@ void HAL_UART_MspDeInit(UART_HandleTypeDef *huart) PA2 ------> LPUART1_TX PA3 ------> LPUART1_RX */ - HAL_GPIO_DeInit(GPIOA, GPIO_PIN_2 | GPIO_PIN_3); + HAL_GPIO_DeInit(GPIOA, GPIO_PIN_2|GPIO_PIN_3); - /* USER CODE BEGIN LPUART1_MspDeInit 1 */ + /* USER CODE BEGIN LPUART1_MspDeInit 1 */ - /* USER CODE END LPUART1_MspDeInit 1 */ + /* USER CODE END LPUART1_MspDeInit 1 */ } - else if (huart->Instance == UART4) + else if(huart->Instance==USART1) { - /* USER CODE BEGIN UART4_MspDeInit 0 */ + /* USER CODE BEGIN USART1_MspDeInit 0 */ - /* USER CODE END UART4_MspDeInit 0 */ - /* Peripheral clock disable */ - __HAL_RCC_UART4_CLK_DISABLE(); - - /**UART4 GPIO Configuration - PC10 ------> UART4_TX - PC11 ------> UART4_RX - */ - HAL_GPIO_DeInit(GPIOC, GPIO_PIN_10 | GPIO_PIN_11); - - /* USER CODE BEGIN UART4_MspDeInit 1 */ - - /* USER CODE END UART4_MspDeInit 1 */ - } - else if (huart->Instance == USART1) - { - /* USER CODE BEGIN USART1_MspDeInit 0 */ - - /* USER CODE END USART1_MspDeInit 0 */ + /* USER CODE END USART1_MspDeInit 0 */ /* Peripheral clock disable */ __HAL_RCC_USART1_CLK_DISABLE(); /**USART1 GPIO Configuration - PC4 ------> USART1_TX - PC5 ------> USART1_RX + PA9 ------> USART1_TX + PA10 ------> USART1_RX */ - HAL_GPIO_DeInit(GPIOC, USART1_TX_Pin | USART1_RX_Pin); + HAL_GPIO_DeInit(GPIOA, GPIO_PIN_9|GPIO_PIN_10); - /* USER CODE BEGIN USART1_MspDeInit 1 */ + /* USER CODE BEGIN USART1_MspDeInit 1 */ - /* USER CODE END USART1_MspDeInit 1 */ + /* USER CODE END USART1_MspDeInit 1 */ } - else if (huart->Instance == USART3) + +} + +/** +* @brief TIM_Base MSP Initialization +* This function configures the hardware resources used in this example +* @param htim_base: TIM_Base handle pointer +* @retval None +*/ +void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* htim_base) +{ + if(htim_base->Instance==TIM2) { - /* USER CODE BEGIN USART3_MspDeInit 0 */ + /* USER CODE BEGIN TIM2_MspInit 0 */ - /* USER CODE END USART3_MspDeInit 0 */ - /* Peripheral clock disable */ - __HAL_RCC_USART3_CLK_DISABLE(); + /* USER CODE END TIM2_MspInit 0 */ + /* Peripheral clock enable */ + __HAL_RCC_TIM2_CLK_ENABLE(); + /* USER CODE BEGIN TIM2_MspInit 1 */ - /**USART3 GPIO Configuration - PB10 ------> USART3_TX - PB11 ------> USART3_RX - */ - HAL_GPIO_DeInit(GPIOB, GPIO_PIN_10 | GPIO_PIN_11); - - /* USER CODE BEGIN USART3_MspDeInit 1 */ - - /* USER CODE END USART3_MspDeInit 1 */ + /* USER CODE END TIM2_MspInit 1 */ } + else if(htim_base->Instance==TIM3) + { + /* USER CODE BEGIN TIM3_MspInit 0 */ + + /* USER CODE END TIM3_MspInit 0 */ + /* Peripheral clock enable */ + __HAL_RCC_TIM3_CLK_ENABLE(); + /* USER CODE BEGIN TIM3_MspInit 1 */ + + /* USER CODE END TIM3_MspInit 1 */ + } + else if(htim_base->Instance==TIM4) + { + /* USER CODE BEGIN TIM4_MspInit 0 */ + + /* USER CODE END TIM4_MspInit 0 */ + /* Peripheral clock enable */ + __HAL_RCC_TIM4_CLK_ENABLE(); + /* USER CODE BEGIN TIM4_MspInit 1 */ + + /* USER CODE END TIM4_MspInit 1 */ + } + else if(htim_base->Instance==TIM8) + { + /* USER CODE BEGIN TIM8_MspInit 0 */ + + /* USER CODE END TIM8_MspInit 0 */ + /* Peripheral clock enable */ + __HAL_RCC_TIM8_CLK_ENABLE(); + /* USER CODE BEGIN TIM8_MspInit 1 */ + + /* USER CODE END TIM8_MspInit 1 */ + } + +} + +void HAL_TIM_MspPostInit(TIM_HandleTypeDef* htim) +{ + GPIO_InitTypeDef GPIO_InitStruct = {0}; + if(htim->Instance==TIM2) + { + /* USER CODE BEGIN TIM2_MspPostInit 0 */ + + /* USER CODE END TIM2_MspPostInit 0 */ + __HAL_RCC_GPIOB_CLK_ENABLE(); + /**TIM2 GPIO Configuration + PB10 ------> TIM2_CH3 + PB3 ------> TIM2_CH2 + */ + GPIO_InitStruct.Pin = GPIO_PIN_10|GPIO_PIN_3; + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + GPIO_InitStruct.Alternate = GPIO_AF1_TIM2; + HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); + + /* USER CODE BEGIN TIM2_MspPostInit 1 */ + + /* USER CODE END TIM2_MspPostInit 1 */ + } + else if(htim->Instance==TIM3) + { + /* USER CODE BEGIN TIM3_MspPostInit 0 */ + + /* USER CODE END TIM3_MspPostInit 0 */ + + __HAL_RCC_GPIOA_CLK_ENABLE(); + __HAL_RCC_GPIOB_CLK_ENABLE(); + /**TIM3 GPIO Configuration + PA7 ------> TIM3_CH2 + PB4 ------> TIM3_CH1 + */ + GPIO_InitStruct.Pin = GPIO_PIN_7; + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + GPIO_InitStruct.Alternate = GPIO_AF2_TIM3; + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + + GPIO_InitStruct.Pin = GPIO_PIN_4; + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + GPIO_InitStruct.Alternate = GPIO_AF2_TIM3; + HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); + + /* USER CODE BEGIN TIM3_MspPostInit 1 */ + + /* USER CODE END TIM3_MspPostInit 1 */ + } + else if(htim->Instance==TIM4) + { + /* USER CODE BEGIN TIM4_MspPostInit 0 */ + + /* USER CODE END TIM4_MspPostInit 0 */ + + __HAL_RCC_GPIOB_CLK_ENABLE(); + /**TIM4 GPIO Configuration + PB6 ------> TIM4_CH1 + */ + GPIO_InitStruct.Pin = GPIO_PIN_6; + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + GPIO_InitStruct.Alternate = GPIO_AF2_TIM4; + HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); + + /* USER CODE BEGIN TIM4_MspPostInit 1 */ + + /* USER CODE END TIM4_MspPostInit 1 */ + } + else if(htim->Instance==TIM8) + { + /* USER CODE BEGIN TIM8_MspPostInit 0 */ + + /* USER CODE END TIM8_MspPostInit 0 */ + + __HAL_RCC_GPIOC_CLK_ENABLE(); + /**TIM8 GPIO Configuration + PC7 ------> TIM8_CH2 + */ + GPIO_InitStruct.Pin = GPIO_PIN_7; + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + GPIO_InitStruct.Alternate = GPIO_AF4_TIM8; + HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); + + /* USER CODE BEGIN TIM8_MspPostInit 1 */ + + /* USER CODE END TIM8_MspPostInit 1 */ + } + +} +/** +* @brief TIM_Base MSP De-Initialization +* This function freeze the hardware resources used in this example +* @param htim_base: TIM_Base handle pointer +* @retval None +*/ +void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* htim_base) +{ + if(htim_base->Instance==TIM2) + { + /* USER CODE BEGIN TIM2_MspDeInit 0 */ + + /* USER CODE END TIM2_MspDeInit 0 */ + /* Peripheral clock disable */ + __HAL_RCC_TIM2_CLK_DISABLE(); + /* USER CODE BEGIN TIM2_MspDeInit 1 */ + + /* USER CODE END TIM2_MspDeInit 1 */ + } + else if(htim_base->Instance==TIM3) + { + /* USER CODE BEGIN TIM3_MspDeInit 0 */ + + /* USER CODE END TIM3_MspDeInit 0 */ + /* Peripheral clock disable */ + __HAL_RCC_TIM3_CLK_DISABLE(); + /* USER CODE BEGIN TIM3_MspDeInit 1 */ + + /* USER CODE END TIM3_MspDeInit 1 */ + } + else if(htim_base->Instance==TIM4) + { + /* USER CODE BEGIN TIM4_MspDeInit 0 */ + + /* USER CODE END TIM4_MspDeInit 0 */ + /* Peripheral clock disable */ + __HAL_RCC_TIM4_CLK_DISABLE(); + /* USER CODE BEGIN TIM4_MspDeInit 1 */ + + /* USER CODE END TIM4_MspDeInit 1 */ + } + else if(htim_base->Instance==TIM8) + { + /* USER CODE BEGIN TIM8_MspDeInit 0 */ + + /* USER CODE END TIM8_MspDeInit 0 */ + /* Peripheral clock disable */ + __HAL_RCC_TIM8_CLK_DISABLE(); + /* USER CODE BEGIN TIM8_MspDeInit 1 */ + + /* USER CODE END TIM8_MspDeInit 1 */ + } + } /* USER CODE BEGIN 1 */ /* USER CODE END 1 */ - -/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/bsp/stm32/stm32g474-st-nucleo/board/CubeMX_Config/Src/stm32g4xx_it.c b/bsp/stm32/stm32g474-st-nucleo/board/CubeMX_Config/Src/stm32g4xx_it.c deleted file mode 100644 index 3b9134d9d4..0000000000 --- a/bsp/stm32/stm32g474-st-nucleo/board/CubeMX_Config/Src/stm32g4xx_it.c +++ /dev/null @@ -1,203 +0,0 @@ -/* USER CODE BEGIN Header */ -/** - ****************************************************************************** - * @file stm32g4xx_it.c - * @brief Interrupt Service Routines. - ****************************************************************************** - * @attention - * - *

© Copyright (c) 2019 STMicroelectronics. - * All rights reserved.

- * - * This software component is licensed by ST under BSD 3-Clause license, - * the "License"; You may not use this file except in compliance with the - * License. You may obtain a copy of the License at: - * opensource.org/licenses/BSD-3-Clause - * - ****************************************************************************** - */ -/* USER CODE END Header */ - -/* Includes ------------------------------------------------------------------*/ -#include "main.h" -#include "stm32g4xx_it.h" -/* Private includes ----------------------------------------------------------*/ -/* USER CODE BEGIN Includes */ -/* USER CODE END Includes */ - -/* Private typedef -----------------------------------------------------------*/ -/* USER CODE BEGIN TD */ - -/* USER CODE END TD */ - -/* Private define ------------------------------------------------------------*/ -/* USER CODE BEGIN PD */ - -/* USER CODE END PD */ - -/* Private macro -------------------------------------------------------------*/ -/* USER CODE BEGIN PM */ - -/* USER CODE END PM */ - -/* Private variables ---------------------------------------------------------*/ -/* USER CODE BEGIN PV */ - -/* USER CODE END PV */ - -/* Private function prototypes -----------------------------------------------*/ -/* USER CODE BEGIN PFP */ - -/* USER CODE END PFP */ - -/* Private user code ---------------------------------------------------------*/ -/* USER CODE BEGIN 0 */ - -/* USER CODE END 0 */ - -/* External variables --------------------------------------------------------*/ - -/* USER CODE BEGIN EV */ - -/* USER CODE END EV */ - -/******************************************************************************/ -/* Cortex-M4 Processor Interruption and Exception Handlers */ -/******************************************************************************/ -/** - * @brief This function handles Non maskable interrupt. - */ -void NMI_Handler(void) -{ - /* USER CODE BEGIN NonMaskableInt_IRQn 0 */ - - /* USER CODE END NonMaskableInt_IRQn 0 */ - /* USER CODE BEGIN NonMaskableInt_IRQn 1 */ - - /* USER CODE END NonMaskableInt_IRQn 1 */ -} - -/** - * @brief This function handles Hard fault interrupt. - */ -void HardFault_Handler(void) -{ - /* USER CODE BEGIN HardFault_IRQn 0 */ - - /* USER CODE END HardFault_IRQn 0 */ - while (1) - { - /* USER CODE BEGIN W1_HardFault_IRQn 0 */ - /* USER CODE END W1_HardFault_IRQn 0 */ - } -} - -/** - * @brief This function handles Memory management fault. - */ -void MemManage_Handler(void) -{ - /* USER CODE BEGIN MemoryManagement_IRQn 0 */ - - /* USER CODE END MemoryManagement_IRQn 0 */ - while (1) - { - /* USER CODE BEGIN W1_MemoryManagement_IRQn 0 */ - /* USER CODE END W1_MemoryManagement_IRQn 0 */ - } -} - -/** - * @brief This function handles Prefetch fault, memory access fault. - */ -void BusFault_Handler(void) -{ - /* USER CODE BEGIN BusFault_IRQn 0 */ - - /* USER CODE END BusFault_IRQn 0 */ - while (1) - { - /* USER CODE BEGIN W1_BusFault_IRQn 0 */ - /* USER CODE END W1_BusFault_IRQn 0 */ - } -} - -/** - * @brief This function handles Undefined instruction or illegal state. - */ -void UsageFault_Handler(void) -{ - /* USER CODE BEGIN UsageFault_IRQn 0 */ - - /* USER CODE END UsageFault_IRQn 0 */ - while (1) - { - /* USER CODE BEGIN W1_UsageFault_IRQn 0 */ - /* USER CODE END W1_UsageFault_IRQn 0 */ - } -} - -/** - * @brief This function handles System service call via SWI instruction. - */ -void SVC_Handler(void) -{ - /* USER CODE BEGIN SVCall_IRQn 0 */ - - /* USER CODE END SVCall_IRQn 0 */ - /* USER CODE BEGIN SVCall_IRQn 1 */ - - /* USER CODE END SVCall_IRQn 1 */ -} - -/** - * @brief This function handles Debug monitor. - */ -void DebugMon_Handler(void) -{ - /* USER CODE BEGIN DebugMonitor_IRQn 0 */ - - /* USER CODE END DebugMonitor_IRQn 0 */ - /* USER CODE BEGIN DebugMonitor_IRQn 1 */ - - /* USER CODE END DebugMonitor_IRQn 1 */ -} - -/** - * @brief This function handles Pendable request for system service. - */ -void PendSV_Handler(void) -{ - /* USER CODE BEGIN PendSV_IRQn 0 */ - - /* USER CODE END PendSV_IRQn 0 */ - /* USER CODE BEGIN PendSV_IRQn 1 */ - - /* USER CODE END PendSV_IRQn 1 */ -} - -/** - * @brief This function handles System tick timer. - */ -void SysTick_Handler(void) -{ - /* USER CODE BEGIN SysTick_IRQn 0 */ - - /* USER CODE END SysTick_IRQn 0 */ - HAL_IncTick(); - /* USER CODE BEGIN SysTick_IRQn 1 */ - - /* USER CODE END SysTick_IRQn 1 */ -} - -/******************************************************************************/ -/* STM32G4xx Peripheral Interrupt Handlers */ -/* Add here the Interrupt Handlers for the used peripherals. */ -/* For the available peripheral interrupt handler names, */ -/* please refer to the startup file (startup_stm32g4xx.s). */ -/******************************************************************************/ - -/* USER CODE BEGIN 1 */ - -/* USER CODE END 1 */ -/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/bsp/stm32/stm32g474-st-nucleo/board/CubeMX_Config/Src/system_stm32g4xx.c b/bsp/stm32/stm32g474-st-nucleo/board/CubeMX_Config/Src/system_stm32g4xx.c new file mode 100644 index 0000000000..9aec032f83 --- /dev/null +++ b/bsp/stm32/stm32g474-st-nucleo/board/CubeMX_Config/Src/system_stm32g4xx.c @@ -0,0 +1,271 @@ +/** + ****************************************************************************** + * @file system_stm32g4xx.c + * @author MCD Application Team + * @brief CMSIS Cortex-M4 Device Peripheral Access Layer System Source File + * + * This file provides two functions and one global variable to be called from + * user application: + * - SystemInit(): This function is called at startup just after reset and + * before branch to main program. This call is made inside + * the "startup_stm32g4xx.s" file. + * + * - SystemCoreClock variable: Contains the core clock (HCLK), it can be used + * by the user application to setup the SysTick + * timer or configure other parameters. + * + * - SystemCoreClockUpdate(): Updates the variable SystemCoreClock and must + * be called whenever the core clock is changed + * during program execution. + * + * After each device reset the HSI (16 MHz) is used as system clock source. + * Then SystemInit() function is called, in "startup_stm32g4xx.s" file, to + * configure the system clock before to branch to main program. + * + * This file configures the system clock as follows: + *============================================================================= + *----------------------------------------------------------------------------- + * System Clock source | HSI + *----------------------------------------------------------------------------- + * SYSCLK(Hz) | 16000000 + *----------------------------------------------------------------------------- + * HCLK(Hz) | 16000000 + *----------------------------------------------------------------------------- + * AHB Prescaler | 1 + *----------------------------------------------------------------------------- + * APB1 Prescaler | 1 + *----------------------------------------------------------------------------- + * APB2 Prescaler | 1 + *----------------------------------------------------------------------------- + * PLL_M | 1 + *----------------------------------------------------------------------------- + * PLL_N | 16 + *----------------------------------------------------------------------------- + * PLL_P | 7 + *----------------------------------------------------------------------------- + * PLL_Q | 2 + *----------------------------------------------------------------------------- + * PLL_R | 2 + *----------------------------------------------------------------------------- + * Require 48MHz for RNG | Disabled + *----------------------------------------------------------------------------- + *============================================================================= + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2019 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/** @addtogroup CMSIS + * @{ + */ + +/** @addtogroup stm32g4xx_system + * @{ + */ + +/** @addtogroup STM32G4xx_System_Private_Includes + * @{ + */ + +#include "stm32g4xx.h" + +#if !defined (HSE_VALUE) + #define HSE_VALUE 8000000U /*!< Value of the External oscillator in Hz */ +#endif /* HSE_VALUE */ + +#if !defined (HSI_VALUE) + #define HSI_VALUE 16000000U /*!< Value of the Internal oscillator in Hz*/ +#endif /* HSI_VALUE */ + +/** + * @} + */ + +/** @addtogroup STM32G4xx_System_Private_TypesDefinitions + * @{ + */ + +/** + * @} + */ + +/** @addtogroup STM32G4xx_System_Private_Defines + * @{ + */ + +/************************* Miscellaneous Configuration ************************/ +/*!< Uncomment the following line if you need to relocate your vector Table in + Internal SRAM. */ +/* #define VECT_TAB_SRAM */ +#define VECT_TAB_OFFSET 0x00UL /*!< Vector Table base offset field. + This value must be a multiple of 0x200. */ +/******************************************************************************/ +/** + * @} + */ + +/** @addtogroup STM32G4xx_System_Private_Macros + * @{ + */ + +/** + * @} + */ + +/** @addtogroup STM32G4xx_System_Private_Variables + * @{ + */ + /* The SystemCoreClock variable is updated in three ways: + 1) by calling CMSIS function SystemCoreClockUpdate() + 2) by calling HAL API function HAL_RCC_GetHCLKFreq() + 3) each time HAL_RCC_ClockConfig() is called to configure the system clock frequency + Note: If you use this function to configure the system clock; then there + is no need to call the 2 first functions listed above, since SystemCoreClock + variable is updated automatically. + */ + uint32_t SystemCoreClock = HSI_VALUE; + + const uint8_t AHBPrescTable[16] = {0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 1U, 2U, 3U, 4U, 6U, 7U, 8U, 9U}; + const uint8_t APBPrescTable[8] = {0U, 0U, 0U, 0U, 1U, 2U, 3U, 4U}; + +/** + * @} + */ + +/** @addtogroup STM32G4xx_System_Private_FunctionPrototypes + * @{ + */ + +/** + * @} + */ + +/** @addtogroup STM32G4xx_System_Private_Functions + * @{ + */ + +/** + * @brief Setup the microcontroller system. + * @param None + * @retval None + */ + +void SystemInit(void) +{ + /* FPU settings ------------------------------------------------------------*/ + #if (__FPU_PRESENT == 1) && (__FPU_USED == 1) + SCB->CPACR |= ((3UL << (10*2))|(3UL << (11*2))); /* set CP10 and CP11 Full Access */ + #endif + + /* Configure the Vector Table location add offset address ------------------*/ +#ifdef VECT_TAB_SRAM + SCB->VTOR = SRAM_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM */ +#else + SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH */ +#endif +} + +/** + * @brief Update SystemCoreClock variable according to Clock Register Values. + * The SystemCoreClock variable contains the core clock (HCLK), it can + * be used by the user application to setup the SysTick timer or configure + * other parameters. + * + * @note Each time the core clock (HCLK) changes, this function must be called + * to update SystemCoreClock variable value. Otherwise, any configuration + * based on this variable will be incorrect. + * + * @note - The system frequency computed by this function is not the real + * frequency in the chip. It is calculated based on the predefined + * constant and the selected clock source: + * + * - If SYSCLK source is HSI, SystemCoreClock will contain the HSI_VALUE(**) + * + * - If SYSCLK source is HSE, SystemCoreClock will contain the HSE_VALUE(***) + * + * - If SYSCLK source is PLL, SystemCoreClock will contain the HSE_VALUE(***) + * or HSI_VALUE(*) multiplied/divided by the PLL factors. + * + * (**) HSI_VALUE is a constant defined in stm32g4xx_hal.h file (default value + * 16 MHz) but the real value may vary depending on the variations + * in voltage and temperature. + * + * (***) HSE_VALUE is a constant defined in stm32g4xx_hal.h file (default value + * 8 MHz), user has to ensure that HSE_VALUE is same as the real + * frequency of the crystal used. Otherwise, this function may + * have wrong result. + * + * - The result of this function could be not correct when using fractional + * value for HSE crystal. + * + * @param None + * @retval None + */ +void SystemCoreClockUpdate(void) +{ + uint32_t tmp, pllvco, pllr, pllsource, pllm; + + /* Get SYSCLK source -------------------------------------------------------*/ + switch (RCC->CFGR & RCC_CFGR_SWS) + { + case 0x04: /* HSI used as system clock source */ + SystemCoreClock = HSI_VALUE; + break; + + case 0x08: /* HSE used as system clock source */ + SystemCoreClock = HSE_VALUE; + break; + + case 0x0C: /* PLL used as system clock source */ + /* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLLM) * PLLN + SYSCLK = PLL_VCO / PLLR + */ + pllsource = (RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC); + pllm = ((RCC->PLLCFGR & RCC_PLLCFGR_PLLM) >> 4) + 1U ; + if (pllsource == 0x02UL) /* HSI used as PLL clock source */ + { + pllvco = (HSI_VALUE / pllm); + } + else /* HSE used as PLL clock source */ + { + pllvco = (HSE_VALUE / pllm); + } + pllvco = pllvco * ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> 8); + pllr = (((RCC->PLLCFGR & RCC_PLLCFGR_PLLR) >> 25) + 1U) * 2U; + SystemCoreClock = pllvco/pllr; + break; + + default: + break; + } + /* Compute HCLK clock frequency --------------------------------------------*/ + /* Get HCLK prescaler */ + tmp = AHBPrescTable[((RCC->CFGR & RCC_CFGR_HPRE) >> 4)]; + /* HCLK clock frequency */ + SystemCoreClock >>= tmp; +} + + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ + diff --git a/bsp/stm32/stm32g474-st-nucleo/board/Kconfig b/bsp/stm32/stm32g474-st-nucleo/board/Kconfig index 237d9e7aba..620f2a1a0a 100644 --- a/bsp/stm32/stm32g474-st-nucleo/board/Kconfig +++ b/bsp/stm32/stm32g474-st-nucleo/board/Kconfig @@ -9,6 +9,37 @@ config SOC_STM32G474RE menu "Onboard Peripheral Drivers" + config BSP_USING_STLINK_TO_USART + bool "Enable STLINK TO USART (lpuart1)" + select BSP_USING_UART + select BSP_USING_UART1 + default y + + config BSP_USING_ARDUINO + bool "Compatible with Arduino Ecosystem (RTduino)" + select PKG_USING_RTDUINO + select BSP_USING_STLINK_TO_USART + select BSP_USING_UART1 + select BSP_USING_GPIO + select BSP_USING_ADC + select BSP_USING_ADC1 + select BSP_USING_ADC2 + select BSP_USING_PWM + select BSP_USING_PWM2 + select BSP_USING_PWM2_CH2 + select BSP_USING_PWM2_CH3 + select BSP_USING_PWM3 + select BSP_USING_PWM3_CH1 + select BSP_USING_PWM3_CH2 + select BSP_USING_PWM4 + select BSP_USING_PWM4_CH1 + select BSP_USING_PWM8 + select BSP_USING_PWM8_CH2 + select BSP_USING_I2C + select BSP_USING_I2C1 + imply RTDUINO_USING_SERVO + imply RTDUINO_USING_WIRE + default n endmenu menu "On-chip Peripheral Drivers" @@ -25,7 +56,7 @@ menu "On-chip Peripheral Drivers" if BSP_USING_UART config BSP_USING_LPUART1 bool "Enable LPUART1" - default y + default n config BSP_LPUART1_RX_USING_DMA bool "Enable LPUART1 RX DMA" @@ -59,6 +90,84 @@ menu "On-chip Peripheral Drivers" depends on BSP_USING_UART4 && RT_SERIAL_USING_DMA default n endif + + menuconfig BSP_USING_ADC + bool "Enable ADC" + default n + select RT_USING_ADC + if BSP_USING_ADC + config BSP_USING_ADC1 + bool "Enable ADC1" + default n + config BSP_USING_ADC2 + bool "Enable ADC2" + default n + endif + + menuconfig BSP_USING_PWM + bool "Enable PWM" + default n + select RT_USING_PWM + if BSP_USING_PWM + menuconfig BSP_USING_PWM2 + bool "Enable timer2 output PWM" + default n + if BSP_USING_PWM2 + config BSP_USING_PWM2_CH2 + bool "Enable PWM2 channel2" + default n + config BSP_USING_PWM2_CH3 + bool "Enable PWM2 channel3" + default n + endif + + menuconfig BSP_USING_PWM3 + bool "Enable timer3 output PWM" + default n + if BSP_USING_PWM3 + config BSP_USING_PWM3_CH1 + bool "Enable PWM3 channel1" + default n + config BSP_USING_PWM3_CH2 + bool "Enable PWM3 channel2" + default n + endif + + menuconfig BSP_USING_PWM4 + bool "Enable timer4 output PWM" + default n + if BSP_USING_PWM4 + config BSP_USING_PWM4_CH1 + bool "Enable PWM4 channel1" + default n + endif + + menuconfig BSP_USING_PWM8 + bool "Enable timer8 output PWM" + default n + if BSP_USING_PWM8 + config BSP_USING_PWM8_CH2 + bool "Enable PWM8 channel2" + default n + endif + + endif + + menuconfig BSP_USING_I2C1 + bool "Enable I2C1 BUS (software simulation)" + default n + select RT_USING_I2C + select RT_USING_I2C_BITOPS + select RT_USING_PIN + if BSP_USING_I2C1 + config BSP_I2C1_SCL_PIN + int "i2c1 scl pin number (PB8)" + default 24 + config BSP_I2C1_SDA_PIN + int "i2c1 sda pin number (PB9)" + default 25 + endif + source "../libraries/HAL_Drivers/Kconfig" endmenu