From d3139706e45d0dfc966d7fd8db1d9c987353e35d Mon Sep 17 00:00:00 2001 From: solar_li <64183082+solar-li@users.noreply.github.com> Date: Tue, 5 Jul 2022 10:05:31 +0800 Subject: [PATCH] Adapt RTduino package for stm32f469-st-disco BSP (#6139) * Adapt RTdunio package for stm32f469-st-disco BSP --- .../applications/SConscript | 3 + .../applications/arduino_main.cpp | 26 ++ .../applications/arduino_pinout/README.md | 65 +++++ .../applications/arduino_pinout/SConscript | 9 + .../arduino_pinout/disco-f469-pinout.png | Bin 0 -> 140985 bytes .../arduino_pinout/pins_arduino.c | 52 ++++ .../arduino_pinout/pins_arduino.h | 50 ++++ .../board/CubeMX_Config/.mxproject | 17 +- .../board/CubeMX_Config/CubeMX_Config.ioc | 192 +++++++++----- .../board/CubeMX_Config/Inc/pdm2pcm.h | 2 + .../CubeMX_Config/Inc/stm32f4xx_hal_conf.h | 67 +++-- .../board/CubeMX_Config/Inc/stm32f4xx_it.h | 2 +- .../CubeMX_Config/Src/stm32f4xx_hal_msp.c | 234 +++++++++++++++++- .../board/CubeMX_Config/Src/stm32f4xx_it.c | 2 +- bsp/stm32/stm32f469-st-disco/board/Kconfig | 81 ++++++ 15 files changed, 699 insertions(+), 103 deletions(-) create mode 100644 bsp/stm32/stm32f469-st-disco/applications/arduino_main.cpp create mode 100644 bsp/stm32/stm32f469-st-disco/applications/arduino_pinout/README.md create mode 100644 bsp/stm32/stm32f469-st-disco/applications/arduino_pinout/SConscript create mode 100644 bsp/stm32/stm32f469-st-disco/applications/arduino_pinout/disco-f469-pinout.png create mode 100644 bsp/stm32/stm32f469-st-disco/applications/arduino_pinout/pins_arduino.c create mode 100644 bsp/stm32/stm32f469-st-disco/applications/arduino_pinout/pins_arduino.h diff --git a/bsp/stm32/stm32f469-st-disco/applications/SConscript b/bsp/stm32/stm32f469-st-disco/applications/SConscript index bd59bb5f77..15e49f3294 100644 --- a/bsp/stm32/stm32f469-st-disco/applications/SConscript +++ b/bsp/stm32/stm32f469-st-disco/applications/SConscript @@ -8,6 +8,9 @@ main.c lcd_init.c """) +if GetDepend(['PKG_USING_RTDUINO']) and not GetDepend(['RTDUINO_NO_SETUP_LOOP']): + src += ['arduino_main.cpp'] + group = DefineGroup('Applications', src, depend = [''], CPPPATH = CPPPATH) list = os.listdir(cwd) diff --git a/bsp/stm32/stm32f469-st-disco/applications/arduino_main.cpp b/bsp/stm32/stm32f469-st-disco/applications/arduino_main.cpp new file mode 100644 index 0000000000..873d6b7676 --- /dev/null +++ b/bsp/stm32/stm32f469-st-disco/applications/arduino_main.cpp @@ -0,0 +1,26 @@ +/* + * Copyright (c) 2006-2022, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2021-12-10 Meco Man first version + */ + +#include + +uint8_t led = LED_BUILTIN; + +void setup(void) +{ + /* put your setup code here, to run once: */ + pinMode(led, OUTPUT); +} + +void loop(void) +{ + /* put your main code here, to run repeatedly: */ + digitalWrite(led, !digitalRead(led)); + delay(100); +} diff --git a/bsp/stm32/stm32f469-st-disco/applications/arduino_pinout/README.md b/bsp/stm32/stm32f469-st-disco/applications/arduino_pinout/README.md new file mode 100644 index 0000000000..2156ad0b26 --- /dev/null +++ b/bsp/stm32/stm32f469-st-disco/applications/arduino_pinout/README.md @@ -0,0 +1,65 @@ +# STM32F69 Discovery开发板的Arduino生态兼容说明 + +## 1 RTduino - RT-Thread的Arduino生态兼容层 + +STM32F469 Discovery开发板已经完整适配了[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 ---> + [*] Support Arduino +``` + +## 2 Arduino引脚排布 + +![disco-f469-pinout](disco-f469-pinout.png) + +该BSP遵照Arduino UNO板的引脚排列方式。详见 `pins_arduino.c` + +| Arduino引脚编号 | STM32引脚编号 | 5V容忍 | 备注 | +| --------------- | ------------- | ------ | ------------------------------------------------------------ | +| 0 (D0) | -- | | 该引脚在UNO板中为串口RX引脚,不可当做普通IO | +| 1 (D1) | -- | | 该引脚在UNO板中为串口TX引脚,不可当做普通IO | +| 2 (D2) | PG13 | 是 | | +| 3 (D3) | PA1 | 是 | PWM(定时器2发生) | +| 4 (D4) | PG12 | 是 | | +| 5 (D5) | PA2 | 是 | PWM(定时器2发生) | +| 6 (D6) | PA6 | 是 | PWM(定时器3发生) | +| 7 (D7) | PG11 | 是 | | +| 8 (D8) | PG10 | 是 | | +| 9 (D9) | PA7 | 是 | PWM(定时器3发生) | +| 10 (D10) | PH6 | 是 | PWM(定时器12发生) | +| 11 (D11) | PB15 | 是 | PWM(定时器12发生) | +| 12 (D12) | PB14 | 是 | | +| 13 (D13) | PD3 | 是 | RTduino LED | +| 14 (D14) | PB9 | 是 | I2C1-SDA,被RT-Thread的I2C设备框架i2c1总线接管,不可当做普通IO | +| 15 (D15) | PB8 | 是 | I2C1_SCL,被RT-Thread的I2C设备框架i2c1总线接管,不可当做普通IO | +| 16 (D16) | PA0 | 是 | Discovery板载用户按键(蓝色) | +| 17(D17) | PG6 | 是 | user LED1(用户LED) | +| 18(D18) | PD4 | 是 | user LED2(用户LED) | +| 19(D19) | PD5 | 是 | user LED3(用户LED) | +| 20(D20) | PK3 | 是 | user LED4(用户LED) | +| A0 | PB1 | 是 | ADC Channel_9 | +| A1 | PC2 | 是 | ADC Channel_12 | +| A2 | PC3 | 是 | ADC Channel_13 | +| A3 | PC4 | 是 | ADC Channel_14 | +| A4 | PC5 | 是 | ADC Channel_15 | +| A5 | PA4 | 是 | ADC Channel_4 | +| A6 | -- | | 芯片内部参考电压 ADC | +| A7 | -- | | 芯片内部温度 ADC | + +> 注意: +> +> - 暂无 + +> 参考资料 +> +> 【1】[STM32F469 Discovery官方资料](https://www.st.com/en/evaluation-tools/32f469idiscovery.html#documentation) + +## 3 I2C总线 + +STM32F469 Discovery板的I2C总线是板上丝印的 `SCL/D15` 和 `SDA/D14` 引脚,这两个引脚是被RT-Thread I2C设备框架接管的,不需要直接操控这两个引脚,直接引用`#include `(Arduino官方I2C头文件)即可使用。 diff --git a/bsp/stm32/stm32f469-st-disco/applications/arduino_pinout/SConscript b/bsp/stm32/stm32f469-st-disco/applications/arduino_pinout/SConscript new file mode 100644 index 0000000000..beb0cb7a7c --- /dev/null +++ b/bsp/stm32/stm32f469-st-disco/applications/arduino_pinout/SConscript @@ -0,0 +1,9 @@ +from building import * + +cwd = GetCurrentDir() +src = Glob('*.c') + Glob('*.cpp') +inc = [cwd] + +group = DefineGroup('Arduino', src, depend = ['PKG_USING_RTDUINO'], CPPPATH = inc) + +Return('group') diff --git a/bsp/stm32/stm32f469-st-disco/applications/arduino_pinout/disco-f469-pinout.png b/bsp/stm32/stm32f469-st-disco/applications/arduino_pinout/disco-f469-pinout.png new file mode 100644 index 0000000000000000000000000000000000000000..ff9c65e86afc658b18cb55a88ba8c10ee1e11cf0 GIT binary patch literal 140985 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 qPp&PT&{(F)(!@)sC>jYL5%u#$vNYePnzO8de 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%0DrTxc6_DW|97uBZ1Jxcf6*ogd47E}RLyD5Tj- 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 z%0A+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 literal 0 HcmV?d00001 diff --git a/bsp/stm32/stm32f469-st-disco/applications/arduino_pinout/pins_arduino.c b/bsp/stm32/stm32f469-st-disco/applications/arduino_pinout/pins_arduino.c new file mode 100644 index 0000000000..69cb333319 --- /dev/null +++ b/bsp/stm32/stm32f469-st-disco/applications/arduino_pinout/pins_arduino.c @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2006-2021, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2022-07-04 solar first version + */ +#include +#include +#include "pins_arduino.h" + +/* + {Arduino Pin, RT-Thread Pin [, Device Name(PWM or ADC), 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}, /* RX */ + {D1}, /* TX */ + {D2, GET_PIN(G,13)}, + {D3, GET_PIN(A,1), "pwm2", 2}, /* PWM */ + {D4, GET_PIN(G,12)}, + {D5, GET_PIN(A,2), "pwm2", 3}, /* PWM */ + {D6, GET_PIN(A,6), "pwm3", 1}, /* PWM */ + {D7, GET_PIN(G,11)}, + {D8, GET_PIN(G,10)}, + {D9, GET_PIN(A,7), "pwm3", 2}, /* PWM */ + {D10, GET_PIN(H,6),"pwm12", 1}, /* PWM */ + {D11, GET_PIN(B,15),"pwm12", 2}, /* PWM */ + {D12, GET_PIN(B,14)}, + {D13, GET_PIN(D,3)}, + {D14}, /* I2C1-SDA */ + {D15}, /* I2C1-SCL */ + {D16, GET_PIN(A,0)}, /* user button */ + {D17, GET_PIN(G,6)}, /* user LED */ + {D18, GET_PIN(D,4)}, /* user LED */ + {D19, GET_PIN(D,5)}, /* user LED */ + {D20, GET_PIN(K,3)}, /* user LED */ + {A0, GET_PIN(B,1), "adc1", 9}, /* ADC */ + {A1, GET_PIN(C,2), "adc1", 12}, /* ADC */ + {A2, GET_PIN(C,3), "adc1", 13}, /* ADC */ + {A3, GET_PIN(C,4), "adc1", 14}, /* ADC */ + {A4, GET_PIN(C,5), "adc1", 15}, /* ADC */ + {A5, GET_PIN(A,4), "adc1", 4}, /* ADC */ + {A6, RT_NULL, "adc1", 17}, /* ADC, On-Chip: internal reference voltage, ADC_CHANNEL_VREFINT */ + {A7, RT_NULL, "adc1", 16} /* ADC, On-Chip: internal temperature sensor, ADC_CHANNEL_TEMPSENSOR */ +}; diff --git a/bsp/stm32/stm32f469-st-disco/applications/arduino_pinout/pins_arduino.h b/bsp/stm32/stm32f469-st-disco/applications/arduino_pinout/pins_arduino.h new file mode 100644 index 0000000000..6539ca0422 --- /dev/null +++ b/bsp/stm32/stm32f469-st-disco/applications/arduino_pinout/pins_arduino.h @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2006-2021, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2022-07-04 solar 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 D17 (17) +#define D18 (18) +#define D19 (19) +#define D20 (20) +#define A0 (21) +#define A1 (22) +#define A2 (23) +#define A3 (24) +#define A4 (25) +#define A5 (26) +#define A6 (27) +#define A7 (28) + +#define F_CPU 180000000L /* CPU: 180MHz */ +#define LED_BUILTIN D13 /* Default Built-in LED */ + +#define RTDUINO_DEFAULT_IIC_BUS_NAME "i2c1" + +#endif /* Pins_Arduino_h */ diff --git a/bsp/stm32/stm32f469-st-disco/board/CubeMX_Config/.mxproject b/bsp/stm32/stm32f469-st-disco/board/CubeMX_Config/.mxproject index a7ae4f1e37..4253c0b4f9 100644 --- a/bsp/stm32/stm32f469-st-disco/board/CubeMX_Config/.mxproject +++ b/bsp/stm32/stm32f469-st-disco/board/CubeMX_Config/.mxproject @@ -1,13 +1,16 @@ -[PreviousGenFiles] -HeaderPath=D:/Work_RT-Thread/My_GitHub/rt-thread/bsp/stm32/stm32f469-st-disco/board/CubeMX_Config/Inc -HeaderFiles=stm32f4xx_it.h;stm32f4xx_hal_conf.h;main.h;pdm2pcm.h; -SourcePath=D:/Work_RT-Thread/My_GitHub/rt-thread/bsp/stm32/stm32f469-st-disco/board/CubeMX_Config/Src -SourceFiles=stm32f4xx_it.c;stm32f4xx_hal_msp.c;main.c;pdm2pcm.c; - [PreviousLibFiles] -LibFiles=Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_crc.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_dma2d.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_dsi.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_fmc.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_sdram.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_i2s.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_i2s_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_ltdc.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_ltdc_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_qspi.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_sdmmc.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_sd.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_tim.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_tim_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_uart.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pcd.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pcd_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_usb.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_rcc.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_rcc_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_flash.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_flash_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_flash_ramfunc.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_gpio.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_gpio_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_dma_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_dma.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pwr.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pwr_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_cortex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal.h;Drivers/STM32F4xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_def.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_exti.h;Middlewares/ST/STM32_Audio/Addons/PDM/Inc/pdm2pcm_glo.h;Middlewares/ST/STM32_Audio/Addons/PDM/Lib/libPDMFilter_CM4_Keil_wc16.lib;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_crc.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma2d.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dsi.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_fmc.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_sdram.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2s.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2s_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_ltdc.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_ltdc_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_qspi.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_sdmmc.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_sd.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_pcd.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.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;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_exti.c;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_crc.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_dma2d.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_dsi.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_fmc.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_sdram.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_i2s.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_i2s_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_ltdc.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_ltdc_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_qspi.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_sdmmc.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_sd.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_tim.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_tim_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_uart.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pcd.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pcd_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_usb.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_rcc.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_rcc_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_flash.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_flash_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_flash_ramfunc.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_gpio.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_gpio_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_dma_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_dma.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pwr.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pwr_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_cortex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal.h;Drivers/STM32F4xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_def.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_exti.h;Middlewares/ST/STM32_Audio/Addons/PDM/Inc/pdm2pcm_glo.h;Middlewares/ST/STM32_Audio/Addons/PDM/Lib/libPDMFilter_CM4_Keil_wc16.lib;Drivers/CMSIS/Device/ST/STM32F4xx/Include/stm32f469xx.h;Drivers/CMSIS/Device/ST/STM32F4xx/Include/stm32f4xx.h;Drivers/CMSIS/Device/ST/STM32F4xx/Include/system_stm32f4xx.h;Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.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/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_adc.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_adc_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_rcc.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_rcc_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_flash.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_flash_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_flash_ramfunc.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_gpio.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_gpio_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_dma_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_dma.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pwr.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pwr_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_cortex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal.h;Drivers/STM32F4xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_def.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_exti.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_crc.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_dma2d.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_dsi.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_fmc.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_sdram.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_i2s.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_i2s_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_ltdc.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_ltdc_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_qspi.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_sdmmc.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_sd.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_tim.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_tim_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_uart.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pcd.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pcd_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_usb.h;Middlewares/ST/STM32_Audio/Addons/PDM/Inc/pdm2pcm_glo.h;Middlewares/ST/STM32_Audio/Addons/PDM/Lib/libPDMFilter_CM4_Keil_wc16.lib;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_adc.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_adc_ex.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;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_exti.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_crc.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma2d.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dsi.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_fmc.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_sdram.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2s.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2s_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_ltdc.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_ltdc_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_qspi.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_sdmmc.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_sd.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_pcd.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.c;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_adc.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_adc_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_rcc.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_rcc_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_flash.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_flash_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_flash_ramfunc.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_gpio.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_gpio_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_dma_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_dma.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pwr.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pwr_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_cortex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal.h;Drivers/STM32F4xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_def.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_exti.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_crc.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_dma2d.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_dsi.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_fmc.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_sdram.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_i2s.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_i2s_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_ltdc.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_ltdc_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_qspi.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_sdmmc.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_sd.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_tim.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_tim_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_uart.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pcd.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pcd_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_usb.h;Middlewares/ST/STM32_Audio/Addons/PDM/Inc/pdm2pcm_glo.h;Middlewares/ST/STM32_Audio/Addons/PDM/Lib/libPDMFilter_CM4_Keil_wc16.lib;Drivers/CMSIS/Device/ST/STM32F4xx/Include/stm32f469xx.h;Drivers/CMSIS/Device/ST/STM32F4xx/Include/stm32f4xx.h;Drivers/CMSIS/Device/ST/STM32F4xx/Include/system_stm32f4xx.h;Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.c; [PreviousUsedKeilFiles] SourceFiles=..\Src\main.c;..\Src\pdm2pcm.c;..\Src\stm32f4xx_it.c;..\Src\stm32f4xx_hal_msp.c;../Middlewares/ST/STM32_Audio/Addons/PDM/Lib/libPDMFilter_CM4_Keil_wc16.lib;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_crc.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma2d.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dsi.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_fmc.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_sdram.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2s.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2s_ex.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_ltdc.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_ltdc_ex.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_qspi.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_sdmmc.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_sd.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_pcd.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.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;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_exti.c;../Middlewares/ST/STM32_Audio/Addons/PDM/Lib/libPDMFilter_CM4_Keil_wc16.lib;../\Src/system_stm32f4xx.c;../Middlewares/ST/STM32_Audio/Addons/PDM/Lib/libPDMFilter_CM4_Keil_wc16.lib;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_crc.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma2d.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dsi.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_fmc.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_sdram.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2s.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2s_ex.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_ltdc.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_ltdc_ex.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_qspi.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_sdmmc.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_sd.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_pcd.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.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;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_exti.c;../Middlewares/ST/STM32_Audio/Addons/PDM/Lib/libPDMFilter_CM4_Keil_wc16.lib;../\Src/system_stm32f4xx.c;../Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.c;null;../Middlewares/ST/STM32_Audio/Addons/PDM/Lib/libPDMFilter_CM4_Keil_wc16.lib; HeaderPath=..\Drivers\STM32F4xx_HAL_Driver\Inc;..\Drivers\STM32F4xx_HAL_Driver\Inc\Legacy;..\Middlewares\ST\STM32_Audio\Addons\PDM\Inc;..\Drivers\CMSIS\Device\ST\STM32F4xx\Include;..\Drivers\CMSIS\Include;..\Inc; +[PreviousGenFiles] +HeaderPath=C:/Users/94184/Desktop/RT-Thread/rt-thread/bsp/stm32/stm32f469-st-disco/board/CubeMX_Config/Inc +HeaderFiles=pdm2pcm.h;stm32f4xx_it.h;stm32f4xx_hal_conf.h;main.h; +SourcePath=C:/Users/94184/Desktop/RT-Thread/rt-thread/bsp/stm32/stm32f469-st-disco/board/CubeMX_Config/Src +SourceFiles=pdm2pcm.c;stm32f4xx_it.c;stm32f4xx_hal_msp.c;main.c; + +[] +SourceFiles=;; + diff --git a/bsp/stm32/stm32f469-st-disco/board/CubeMX_Config/CubeMX_Config.ioc b/bsp/stm32/stm32f469-st-disco/board/CubeMX_Config/CubeMX_Config.ioc index 3e1042d18c..a395808eae 100644 --- a/bsp/stm32/stm32f469-st-disco/board/CubeMX_Config/CubeMX_Config.ioc +++ b/bsp/stm32/stm32f469-st-disco/board/CubeMX_Config/CubeMX_Config.ioc @@ -1,4 +1,10 @@ #MicroXplorer Configuration settings - do not modify +ADC1.Channel-0\#ChannelRegularConversion=ADC_CHANNEL_9 +ADC1.IPParameters=Rank-0\#ChannelRegularConversion,master,Channel-0\#ChannelRegularConversion,SamplingTime-0\#ChannelRegularConversion,NbrOfConversionFlag +ADC1.NbrOfConversionFlag=1 +ADC1.Rank-0\#ChannelRegularConversion=1 +ADC1.SamplingTime-0\#ChannelRegularConversion=ADC_SAMPLETIME_3CYCLES +ADC1.master=1 DSIHOST_CKN.Mode=DSIHost_Video DSIHOST_CKN.Signal=DSIHOST_CKN DSIHOST_CKP.Mode=DSIHost_Video @@ -38,28 +44,41 @@ I2S3.Standard=I2S_STANDARD_LSB I2S3.VirtualMode=I2S_MODE_MASTER KeepUserPlacement=false Mcu.Family=STM32F4 -Mcu.IP0=CRC -Mcu.IP1=DMA2D +Mcu.IP0=ADC1 +Mcu.IP1=CRC Mcu.IP10=RCC Mcu.IP11=SDIO Mcu.IP12=SYS -Mcu.IP13=TIM4 -Mcu.IP14=USART3 -Mcu.IP15=USB_OTG_FS -Mcu.IP2=DSIHOST -Mcu.IP3=FMC -Mcu.IP4=GFXSIMULATOR +Mcu.IP13=TIM2 +Mcu.IP14=TIM3 +Mcu.IP15=TIM4 +Mcu.IP16=TIM12 +Mcu.IP17=USART3 +Mcu.IP18=USB_OTG_FS +Mcu.IP2=DMA2D +Mcu.IP3=DSIHOST +Mcu.IP4=FMC Mcu.IP5=I2S3 Mcu.IP6=LTDC Mcu.IP7=NVIC Mcu.IP8=PDM2PCM Mcu.IP9=QUADSPI -Mcu.IPNb=16 +Mcu.IPNb=19 Mcu.Name=STM32F469NIHx Mcu.Package=TFBGA216 Mcu.Pin0=PE1 Mcu.Pin1=PE0 Mcu.Pin10=PD0 +Mcu.Pin100=PB15 +Mcu.Pin101=VP_CRC_VS_CRC +Mcu.Pin102=VP_DMA2D_VS_DMA2D +Mcu.Pin103=VP_LTDC_DSIMode +Mcu.Pin104=VP_PDM2PCM_VS_PDM2PCM +Mcu.Pin105=VP_SYS_VS_Systick +Mcu.Pin106=VP_TIM2_VS_ClockSourceINT +Mcu.Pin107=VP_TIM3_VS_ClockSourceINT +Mcu.Pin108=VP_TIM4_VS_ControllerModeClock +Mcu.Pin109=VP_TIM12_VS_ClockSourceINT Mcu.Pin11=PC11 Mcu.Pin12=PC10 Mcu.Pin13=PA12 @@ -111,48 +130,53 @@ Mcu.Pin54=PD10 Mcu.Pin55=PF10 Mcu.Pin56=PF9 Mcu.Pin57=PF8 -Mcu.Pin58=PD14 -Mcu.Pin59=PD9 +Mcu.Pin58=PC3 +Mcu.Pin59=PD14 Mcu.Pin6=PA13 -Mcu.Pin60=PD8 -Mcu.Pin61=PC0 -Mcu.Pin62=PF12 -Mcu.Pin63=PG1 -Mcu.Pin64=PF15 -Mcu.Pin65=PD12 -Mcu.Pin66=PD13 -Mcu.Pin67=PH12 -Mcu.Pin68=PF13 -Mcu.Pin69=PG0 +Mcu.Pin60=PD9 +Mcu.Pin61=PD8 +Mcu.Pin62=PC0 +Mcu.Pin63=PC2 +Mcu.Pin64=PF12 +Mcu.Pin65=PG1 +Mcu.Pin66=PF15 +Mcu.Pin67=PD12 +Mcu.Pin68=PD13 +Mcu.Pin69=PH12 Mcu.Pin7=PB6 -Mcu.Pin70=PE8 -Mcu.Pin71=PG5 -Mcu.Pin72=PG4 -Mcu.Pin73=PH9 -Mcu.Pin74=PH11 -Mcu.Pin75=PF14 -Mcu.Pin76=PF11 -Mcu.Pin77=PE9 -Mcu.Pin78=PE11 -Mcu.Pin79=PE14 +Mcu.Pin70=PA1 +Mcu.Pin71=PA4 +Mcu.Pin72=PC4 +Mcu.Pin73=PF13 +Mcu.Pin74=PG0 +Mcu.Pin75=PE8 +Mcu.Pin76=PG5 +Mcu.Pin77=PG4 +Mcu.Pin78=PH9 +Mcu.Pin79=PH11 Mcu.Pin8=PG15 -Mcu.Pin80=PB10 -Mcu.Pin81=PH8 -Mcu.Pin82=PH10 -Mcu.Pin83=PE7 -Mcu.Pin84=PE10 -Mcu.Pin85=PE12 -Mcu.Pin86=PE15 -Mcu.Pin87=PE13 -Mcu.Pin88=PB11 -Mcu.Pin89=VP_CRC_VS_CRC +Mcu.Pin80=PA2 +Mcu.Pin81=PA6 +Mcu.Pin82=PC5 +Mcu.Pin83=PF14 +Mcu.Pin84=PF11 +Mcu.Pin85=PE9 +Mcu.Pin86=PE11 +Mcu.Pin87=PE14 +Mcu.Pin88=PB10 +Mcu.Pin89=PH6 Mcu.Pin9=PD6 -Mcu.Pin90=VP_DMA2D_VS_DMA2D -Mcu.Pin91=VP_LTDC_DSIMode -Mcu.Pin92=VP_PDM2PCM_VS_PDM2PCM -Mcu.Pin93=VP_SYS_VS_Systick -Mcu.Pin94=VP_TIM4_VS_ControllerModeClock -Mcu.PinsNb=95 +Mcu.Pin90=PH8 +Mcu.Pin91=PH10 +Mcu.Pin92=PA7 +Mcu.Pin93=PB1 +Mcu.Pin94=PE7 +Mcu.Pin95=PE10 +Mcu.Pin96=PE12 +Mcu.Pin97=PE15 +Mcu.Pin98=PE13 +Mcu.Pin99=PB11 +Mcu.PinsNb=110 Mcu.ThirdPartyNb=0 Mcu.UserConstants= Mcu.UserName=STM32F469NIHx @@ -160,6 +184,7 @@ MxCube.Version=5.1.0 MxDb.Version=DB.5.0.10 NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\: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 @@ -170,6 +195,8 @@ NVIC.SPI3_IRQn=true\:0\:0\:false\:false\:true\:true\:true 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 +PA1.Locked=true +PA1.Signal=S_TIM2_CH2 PA11.Mode=Device_Only PA11.Signal=USB_OTG_FS_DM PA12.Mode=Device_Only @@ -182,6 +209,15 @@ PA15.GPIOParameters=GPIO_Speed PA15.GPIO_Speed=GPIO_SPEED_FREQ_HIGH PA15.Mode=Half_Duplex_Master PA15.Signal=I2S3_WS +PA2.Signal=S_TIM2_CH3 +PA4.Locked=true +PA4.Signal=ADCx_IN4 +PA6.Locked=true +PA6.Signal=S_TIM3_CH1 +PA7.Locked=true +PA7.Signal=S_TIM3_CH2 +PB1.Locked=true +PB1.Signal=ADCx_IN9 PB10.GPIOParameters=GPIO_PuPd PB10.GPIO_PuPd=GPIO_PULLUP PB10.Mode=Asynchronous @@ -190,6 +226,8 @@ PB11.GPIOParameters=GPIO_PuPd PB11.GPIO_PuPd=GPIO_PULLUP PB11.Mode=Asynchronous PB11.Signal=USART3_RX +PB15.Locked=true +PB15.Signal=S_TIM12_CH2 PB3.GPIOParameters=GPIO_Speed PB3.GPIO_Speed=GPIO_SPEED_FREQ_HIGH PB3.Mode=Half_Duplex_Master @@ -208,18 +246,18 @@ PC14/OSC32_IN.Mode=LSE-External-Oscillator PC14/OSC32_IN.Signal=RCC_OSC32_IN PC15/OSC32_OUT.Mode=LSE-External-Oscillator PC15/OSC32_OUT.Signal=RCC_OSC32_OUT +PC2.Locked=true +PC2.Signal=ADCx_IN12 +PC3.Locked=true +PC3.Signal=ADCx_IN13 +PC4.Locked=true +PC4.Signal=ADCx_IN14 +PC5.Locked=true +PC5.Signal=ADCx_IN15 PC8.Mode=SD_4_bits_Wide_bus PC8.Signal=SDIO_D0 PC9.Mode=SD_4_bits_Wide_bus PC9.Signal=SDIO_D1 -PCC.Checker=false -PCC.Line=STM32F469/479 -PCC.MCU=STM32F469NIHx -PCC.PartNumber=STM32F469NIHx -PCC.Seq0=0 -PCC.Series=STM32F4 -PCC.Temperature=25 -PCC.Vdd=3.3 PD0.Signal=FMC_D2_DA2 PD1.Signal=FMC_D3_DA3 PD10.Signal=FMC_D15_DA15 @@ -296,6 +334,8 @@ PH2.Mode=SdramChipSelect1_1 PH2.Signal=FMC_SDCKE0 PH3.Mode=SdramChipSelect1_1 PH3.Signal=FMC_SDNE0 +PH6.Locked=true +PH6.Signal=S_TIM12_CH1 PH8.Signal=FMC_D16 PH9.Signal=FMC_D17 PI0.Signal=FMC_D24 @@ -332,11 +372,12 @@ ProjectManager.PreviousToolchain= ProjectManager.ProjectBuild=false ProjectManager.ProjectFileName=CubeMX_Config.ioc ProjectManager.ProjectName=CubeMX_Config +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-MX_USART3_UART_Init-USART3-false-HAL-true,3-MX_FMC_Init-FMC-false-HAL-true,4-MX_QUADSPI_Init-QUADSPI-false-HAL-true,5-MX_GFXSIMULATOR_Init-GFXSIMULATOR-false-HAL-true,6-MX_CRC_Init-CRC-false-HAL-true,7-MX_I2S3_Init-I2S3-false-HAL-true,8-MX_TIM4_Init-TIM4-false-HAL-true,9-MX_PDM2PCM_Init-PDM2PCM-false-HAL-true,10-MX_USB_OTG_FS_PCD_Init-USB_OTG_FS-false-HAL-true,11-SystemClock_Config-RCC-false-HAL-false,12-MX_LTDC_Init-LTDC-false-HAL-true,13-MX_DMA2D_Init-DMA2D-false-HAL-true,14-MX_DSIHOST_DSI_Init-DSIHOST-false-HAL-true,15-MX_SDIO_SD_Init-SDIO-false-HAL-true +ProjectManager.functionlistsort=1-MX_GPIO_Init-GPIO-false-HAL-true,2-MX_USART3_UART_Init-USART3-false-HAL-true,3-MX_FMC_Init-FMC-false-HAL-true,4-MX_QUADSPI_Init-QUADSPI-false-HAL-true,5-MX_CRC_Init-CRC-false-HAL-true,6-MX_I2S3_Init-I2S3-false-HAL-true,7-MX_TIM4_Init-TIM4-false-HAL-true,8-MX_PDM2PCM_Init-PDM2PCM-false-HAL-false,9-MX_USB_OTG_FS_PCD_Init-USB_OTG_FS-false-HAL-true,10-SystemClock_Config-RCC-false-HAL-false,11-MX_LTDC_Init-LTDC-false-HAL-true,12-MX_DMA2D_Init-DMA2D-false-HAL-true,13-MX_DSIHOST_DSI_Init-DSIHOST-false-HAL-true,14-MX_SDIO_SD_Init-SDIO-false-HAL-true QUADSPI.ChipSelectHighTime=QSPI_CS_HIGH_TIME_5_CYCLE QUADSPI.ClockPrescaler=1 QUADSPI.FifoThreshold=4 @@ -393,6 +434,18 @@ RCC.VCOI2SOutputFreq_Value=192000000 RCC.VCOInputFreq_Value=1000000 RCC.VCOOutputFreq_Value=360000000 RCC.VCOSAIOutputFreq_Value=192000000 +SH.ADCx_IN12.0=ADC1_IN12,IN12 +SH.ADCx_IN12.ConfNb=1 +SH.ADCx_IN13.0=ADC1_IN13,IN13 +SH.ADCx_IN13.ConfNb=1 +SH.ADCx_IN14.0=ADC1_IN14,IN14 +SH.ADCx_IN14.ConfNb=1 +SH.ADCx_IN15.0=ADC1_IN15,IN15 +SH.ADCx_IN15.ConfNb=1 +SH.ADCx_IN4.0=ADC1_IN4,IN4 +SH.ADCx_IN4.ConfNb=1 +SH.ADCx_IN9.0=ADC1_IN9,IN9 +SH.ADCx_IN9.ConfNb=1 SH.FMC_A0.0=FMC_A0,12b-sda1 SH.FMC_A0.ConfNb=1 SH.FMC_A1.0=FMC_A1,12b-sda1 @@ -501,10 +554,31 @@ SH.FMC_SDNRAS.0=FMC_SDNRAS,12b-sda1 SH.FMC_SDNRAS.ConfNb=1 SH.FMC_SDNWE.0=FMC_SDNWE,12b-sda1 SH.FMC_SDNWE.ConfNb=1 +SH.S_TIM12_CH1.0=TIM12_CH1,Forced Output1 CH1 +SH.S_TIM12_CH1.ConfNb=1 +SH.S_TIM12_CH2.0=TIM12_CH2,PWM Generation2 CH2 +SH.S_TIM12_CH2.ConfNb=1 +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,TriggerSource_TI1FP1 SH.S_TIM4_CH1.ConfNb=1 SH.S_TIM4_CH2.0=TIM4_CH2,PWM Generation2 CH2 SH.S_TIM4_CH2.ConfNb=1 +TIM12.Channel-Forced\ Output1\ CH1=TIM_CHANNEL_1 +TIM12.Channel-PWM\ Generation2\ CH2=TIM_CHANNEL_2 +TIM12.IPParameters=Channel-Forced Output1 CH1,Channel-PWM Generation2 CH2 +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 Generation1 CH1,Channel-PWM Generation2 CH2 TIM4.Channel-PWM\ Generation2\ CH2=TIM_CHANNEL_2 TIM4.IPParameters=Channel-PWM Generation2 CH2,Prescaler,Period,Slave_TriggerPolarity,Pulse-PWM Generation2 CH2 TIM4.Period=1 @@ -525,6 +599,12 @@ VP_PDM2PCM_VS_PDM2PCM.Mode=PDM2PCM_Channel VP_PDM2PCM_VS_PDM2PCM.Signal=PDM2PCM_VS_PDM2PCM VP_SYS_VS_Systick.Mode=SysTick VP_SYS_VS_Systick.Signal=SYS_VS_Systick +VP_TIM12_VS_ClockSourceINT.Mode=Internal +VP_TIM12_VS_ClockSourceINT.Signal=TIM12_VS_ClockSourceINT +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_ControllerModeClock.Mode=Clock Mode VP_TIM4_VS_ControllerModeClock.Signal=TIM4_VS_ControllerModeClock board=custom diff --git a/bsp/stm32/stm32f469-st-disco/board/CubeMX_Config/Inc/pdm2pcm.h b/bsp/stm32/stm32f469-st-disco/board/CubeMX_Config/Inc/pdm2pcm.h index eaf29f9783..9dc77caa66 100644 --- a/bsp/stm32/stm32f469-st-disco/board/CubeMX_Config/Inc/pdm2pcm.h +++ b/bsp/stm32/stm32f469-st-disco/board/CubeMX_Config/Inc/pdm2pcm.h @@ -36,6 +36,8 @@ /* Global variables ---------------------------------------------------------*/ extern PDM_Filter_Handler_t PDM1_filter_handler; extern PDM_Filter_Config_t PDM1_filter_config; +extern PDM_Filter_Handler_t PDM2_filter_handler; +extern PDM_Filter_Config_t PDM2_filter_config; /* USER CODE BEGIN 1 */ /* USER CODE END 1 */ diff --git a/bsp/stm32/stm32f469-st-disco/board/CubeMX_Config/Inc/stm32f4xx_hal_conf.h b/bsp/stm32/stm32f469-st-disco/board/CubeMX_Config/Inc/stm32f4xx_hal_conf.h index 62161561c5..89f4af032f 100644 --- a/bsp/stm32/stm32f469-st-disco/board/CubeMX_Config/Inc/stm32f4xx_hal_conf.h +++ b/bsp/stm32/stm32f469-st-disco/board/CubeMX_Config/Inc/stm32f4xx_hal_conf.h @@ -1,11 +1,11 @@ /** ****************************************************************************** * @file stm32f4xx_hal_conf.h - * @brief HAL configuration file. + * @brief HAL configuration file. ****************************************************************************** * @attention * - *

© COPYRIGHT(c) 2019 STMicroelectronics

+ *

© COPYRIGHT(c) 2022 STMicroelectronics

* * Redistribution and use in source and binary forms, with or without modification, * are permitted provided that the following conditions are met: @@ -30,7 +30,7 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * ****************************************************************************** - */ + */ /* Define to prevent recursive inclusion -------------------------------------*/ #ifndef __STM32F4xx_HAL_CONF_H @@ -45,11 +45,11 @@ /* ########################## 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_MODULE_ENABLED -/* #define HAL_ADC_MODULE_ENABLED */ +#define HAL_ADC_MODULE_ENABLED /* #define HAL_CRYP_MODULE_ENABLED */ /* #define HAL_CAN_MODULE_ENABLED */ #define HAL_CRC_MODULE_ENABLED @@ -103,9 +103,9 @@ /** * @brief Adjust the value of External High Speed oscillator (HSE) used in your application. * 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). + * (when HSE is used as system clock source, directly or through the PLL). */ -#if !defined (HSE_VALUE) +#if !defined (HSE_VALUE) #define HSE_VALUE ((uint32_t)8000000U) /*!< Value of the External oscillator in Hz */ #endif /* HSE_VALUE */ @@ -116,7 +116,7 @@ /** * @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). + * (when HSI is used as system clock source, directly or through the PLL). */ #if !defined (HSI_VALUE) #define HSI_VALUE ((uint32_t)16000000U) /*!< Value of the Internal oscillator in Hz*/ @@ -125,7 +125,7 @@ /** * @brief Internal Low Speed oscillator (LSI) value. */ -#if !defined (LSI_VALUE) +#if !defined (LSI_VALUE) #define LSI_VALUE ((uint32_t)32000U) /*!< LSI Typical Value in Hz*/ #endif /* LSI_VALUE */ /*!< Value of the Internal Low Speed oscillator in Hz The real value may vary depending on the variations @@ -143,8 +143,8 @@ /** * @brief External clock source for I2S peripheral - * This value is used by the I2S HAL module to compute the I2S clock source - * frequency, this source is inserted directly through I2S_CKIN pad. + * This value is used by the I2S HAL module to compute the I2S clock source + * frequency, this source is inserted directly through I2S_CKIN pad. */ #if !defined (EXTERNAL_CLOCK_VALUE) #define EXTERNAL_CLOCK_VALUE ((uint32_t)12288000U) /*!< Value of the External audio frequency in Hz*/ @@ -157,16 +157,16 @@ /** * @brief This is the HAL system configuration section */ -#define VDD_VALUE ((uint32_t)3300U) /*!< Value of VDD in mv */ -#define TICK_INT_PRIORITY ((uint32_t)0U) /*!< tick interrupt priority */ -#define USE_RTOS 0U +#define VDD_VALUE ((uint32_t)3300U) /*!< Value of VDD in mv */ +#define TICK_INT_PRIORITY ((uint32_t)0U) /*!< tick interrupt priority */ +#define USE_RTOS 0U #define PREFETCH_ENABLE 1U #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 + * @brief Uncomment the line below to expanse the "assert_param" macro in the * HAL drivers code */ /* #define USE_FULL_ASSERT 1U */ @@ -183,7 +183,7 @@ #define MAC_ADDR4 0U #define MAC_ADDR5 0U -/* Definition of the Ethernet driver buffers size and count */ +/* Definition of the Ethernet driver buffers size and count */ #define ETH_RX_BUF_SIZE ETH_MAX_PACKET_SIZE /* buffer size for receive */ #define ETH_TX_BUF_SIZE ETH_MAX_PACKET_SIZE /* buffer size for transmit */ #define ETH_RXBUFNB ((uint32_t)4U) /* 4 Rx buffers of size ETH_RX_BUF_SIZE */ @@ -191,9 +191,9 @@ /* Section 2: PHY configuration section */ -/* DP83848_PHY_ADDRESS Address*/ +/* DP83848_PHY_ADDRESS Address*/ #define DP83848_PHY_ADDRESS 0x01U -/* PHY Reset delay these values are based on a 1 ms Systick interrupt*/ +/* PHY Reset delay these values are based on a 1 ms Systick interrupt*/ #define PHY_RESET_DELAY ((uint32_t)0x000000FFU) /* PHY Configuration delay */ #define PHY_CONFIG_DELAY ((uint32_t)0x00000FFFU) @@ -205,7 +205,7 @@ #define PHY_BCR ((uint16_t)0x0000U) /*!< Transceiver Basic Control Register */ #define PHY_BSR ((uint16_t)0x0001U) /*!< Transceiver Basic Status Register */ - + #define PHY_RESET ((uint16_t)0x8000U) /*!< PHY Reset */ #define PHY_LOOPBACK ((uint16_t)0x4000U) /*!< Select loop-back mode */ #define PHY_FULLDUPLEX_100M ((uint16_t)0x2100U) /*!< Set the full-duplex mode at 100 Mb/s */ @@ -220,7 +220,7 @@ #define PHY_AUTONEGO_COMPLETE ((uint16_t)0x0020U) /*!< Auto-Negotiation process completed */ #define PHY_LINKED_STATUS ((uint16_t)0x0004U) /*!< Valid link established */ #define PHY_JABBER_DETECTION ((uint16_t)0x0002U) /*!< Jabber condition detected */ - + /* Section 4: Extended PHY Registers */ #define PHY_SR ((uint16_t)0x10U) /*!< PHY status register Offset */ @@ -238,7 +238,7 @@ /* Includes ------------------------------------------------------------------*/ /** - * @brief Include module's header file + * @brief Include module's header file */ #ifdef HAL_RCC_MODULE_ENABLED @@ -246,7 +246,7 @@ #endif /* HAL_RCC_MODULE_ENABLED */ #ifdef HAL_EXTI_MODULE_ENABLED - #include "stm32f4xx_ll_exti.h" + #include "stm32f4xx_hal_exti.h" #endif /* HAL_EXTI_MODULE_ENABLED */ #ifdef HAL_GPIO_MODULE_ENABLED @@ -256,7 +256,7 @@ #ifdef HAL_DMA_MODULE_ENABLED #include "stm32f4xx_hal_dma.h" #endif /* HAL_DMA_MODULE_ENABLED */ - + #ifdef HAL_CORTEX_MODULE_ENABLED #include "stm32f4xx_hal_cortex.h" #endif /* HAL_CORTEX_MODULE_ENABLED */ @@ -274,7 +274,7 @@ #endif /* HAL_CRC_MODULE_ENABLED */ #ifdef HAL_CRYP_MODULE_ENABLED - #include "stm32f4xx_hal_cryp.h" + #include "stm32f4xx_hal_cryp.h" #endif /* HAL_CRYP_MODULE_ENABLED */ #ifdef HAL_DMA2D_MODULE_ENABLED @@ -296,7 +296,7 @@ #ifdef HAL_FLASH_MODULE_ENABLED #include "stm32f4xx_hal_flash.h" #endif /* HAL_FLASH_MODULE_ENABLED */ - + #ifdef HAL_SRAM_MODULE_ENABLED #include "stm32f4xx_hal_sram.h" #endif /* HAL_SRAM_MODULE_ENABLED */ @@ -311,11 +311,11 @@ #ifdef HAL_PCCARD_MODULE_ENABLED #include "stm32f4xx_hal_pccard.h" -#endif /* HAL_PCCARD_MODULE_ENABLED */ - +#endif /* HAL_PCCARD_MODULE_ENABLED */ + #ifdef HAL_SDRAM_MODULE_ENABLED #include "stm32f4xx_hal_sdram.h" -#endif /* HAL_SDRAM_MODULE_ENABLED */ +#endif /* HAL_SDRAM_MODULE_ENABLED */ #ifdef HAL_HASH_MODULE_ENABLED #include "stm32f4xx_hal_hash.h" @@ -396,7 +396,7 @@ #ifdef HAL_HCD_MODULE_ENABLED #include "stm32f4xx_hal_hcd.h" #endif /* HAL_HCD_MODULE_ENABLED */ - + #ifdef HAL_DSI_MODULE_ENABLED #include "stm32f4xx_hal_dsi.h" #endif /* HAL_DSI_MODULE_ENABLED */ @@ -424,14 +424,14 @@ #ifdef HAL_LPTIM_MODULE_ENABLED #include "stm32f4xx_hal_lptim.h" #endif /* HAL_LPTIM_MODULE_ENABLED */ - + /* Exported macro ------------------------------------------------------------*/ #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 * which reports the name of the source file and the source - * line number of the call that failed. + * line number of the call that failed. * If expr is true, it returns no value. * @retval None */ @@ -440,13 +440,12 @@ void assert_failed(uint8_t* file, uint32_t line); #else #define assert_param(expr) ((void)0U) -#endif /* USE_FULL_ASSERT */ +#endif /* USE_FULL_ASSERT */ #ifdef __cplusplus } #endif #endif /* __STM32F4xx_HAL_CONF_H */ - /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/bsp/stm32/stm32f469-st-disco/board/CubeMX_Config/Inc/stm32f4xx_it.h b/bsp/stm32/stm32f469-st-disco/board/CubeMX_Config/Inc/stm32f4xx_it.h index e3ace094d0..3b83da1512 100644 --- a/bsp/stm32/stm32f469-st-disco/board/CubeMX_Config/Inc/stm32f4xx_it.h +++ b/bsp/stm32/stm32f469-st-disco/board/CubeMX_Config/Inc/stm32f4xx_it.h @@ -24,7 +24,7 @@ #ifdef __cplusplus extern "C" { -#endif +#endif /* Private includes ----------------------------------------------------------*/ /* USER CODE BEGIN Includes */ diff --git a/bsp/stm32/stm32f469-st-disco/board/CubeMX_Config/Src/stm32f4xx_hal_msp.c b/bsp/stm32/stm32f469-st-disco/board/CubeMX_Config/Src/stm32f4xx_hal_msp.c index 4c00b2386a..2613bc96db 100644 --- a/bsp/stm32/stm32f469-st-disco/board/CubeMX_Config/Src/stm32f4xx_hal_msp.c +++ b/bsp/stm32/stm32f469-st-disco/board/CubeMX_Config/Src/stm32f4xx_hal_msp.c @@ -60,7 +60,7 @@ /* USER CODE END 0 */ void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim); - /** + /** * Initializes the Global MSP. */ void HAL_MspInit(void) @@ -79,6 +79,93 @@ void HAL_MspInit(void) /* USER CODE END MspInit 1 */ } +/** +* @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}; + if(hadc->Instance==ADC1) + { + /* USER CODE BEGIN ADC1_MspInit 0 */ + + /* USER CODE END ADC1_MspInit 0 */ + /* Peripheral clock enable */ + __HAL_RCC_ADC1_CLK_ENABLE(); + + __HAL_RCC_GPIOC_CLK_ENABLE(); + __HAL_RCC_GPIOA_CLK_ENABLE(); + __HAL_RCC_GPIOB_CLK_ENABLE(); + /**ADC1 GPIO Configuration + PC3 ------> ADC1_IN13 + PC2 ------> ADC1_IN12 + PA4 ------> ADC1_IN4 + PC4 ------> ADC1_IN14 + PC5 ------> ADC1_IN15 + PB1 ------> ADC1_IN9 + */ + GPIO_InitStruct.Pin = GPIO_PIN_3|GPIO_PIN_2|GPIO_PIN_4|GPIO_PIN_5; + GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); + + GPIO_InitStruct.Pin = GPIO_PIN_4; + GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + + GPIO_InitStruct.Pin = GPIO_PIN_1; + 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 */ + } + +} + +/** +* @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_ADC1_CLK_DISABLE(); + + /**ADC1 GPIO Configuration + PC3 ------> ADC1_IN13 + PC2 ------> ADC1_IN12 + PA4 ------> ADC1_IN4 + PC4 ------> ADC1_IN14 + PC5 ------> ADC1_IN15 + PB1 ------> ADC1_IN9 + */ + HAL_GPIO_DeInit(GPIOC, GPIO_PIN_3|GPIO_PIN_2|GPIO_PIN_4|GPIO_PIN_5); + + HAL_GPIO_DeInit(GPIOA, GPIO_PIN_4); + + HAL_GPIO_DeInit(GPIOB, GPIO_PIN_1); + + /* USER CODE BEGIN ADC1_MspDeInit 1 */ + + /* USER CODE END ADC1_MspDeInit 1 */ + } + +} + /** * @brief CRC MSP Initialization * This function configures the hardware resources used in this example @@ -532,7 +619,29 @@ void HAL_SD_MspDeInit(SD_HandleTypeDef* hsd) void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* htim_base) { GPIO_InitTypeDef GPIO_InitStruct = {0}; - if(htim_base->Instance==TIM4) + if(htim_base->Instance==TIM2) + { + /* USER CODE BEGIN TIM2_MspInit 0 */ + + /* USER CODE END TIM2_MspInit 0 */ + /* Peripheral clock enable */ + __HAL_RCC_TIM2_CLK_ENABLE(); + /* USER CODE BEGIN TIM2_MspInit 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 */ @@ -555,13 +664,67 @@ void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* htim_base) /* USER CODE END TIM4_MspInit 1 */ } + else if(htim_base->Instance==TIM12) + { + /* USER CODE BEGIN TIM12_MspInit 0 */ + + /* USER CODE END TIM12_MspInit 0 */ + /* Peripheral clock enable */ + __HAL_RCC_TIM12_CLK_ENABLE(); + /* USER CODE BEGIN TIM12_MspInit 1 */ + + /* USER CODE END TIM12_MspInit 1 */ + } } void HAL_TIM_MspPostInit(TIM_HandleTypeDef* htim) { GPIO_InitTypeDef GPIO_InitStruct = {0}; - if(htim->Instance==TIM4) + if(htim->Instance==TIM2) + { + /* USER CODE BEGIN TIM2_MspPostInit 0 */ + + /* USER CODE END TIM2_MspPostInit 0 */ + __HAL_RCC_GPIOA_CLK_ENABLE(); + /**TIM2 GPIO Configuration + PA1 ------> TIM2_CH2 + PA2 ------> TIM2_CH3 + */ + GPIO_InitStruct.Pin = GPIO_PIN_1|GPIO_PIN_2; + 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(GPIOA, &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(); + /**TIM3 GPIO Configuration + PA6 ------> TIM3_CH1 + PA7 ------> TIM3_CH2 + */ + GPIO_InitStruct.Pin = GPIO_PIN_6|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); + + /* USER CODE BEGIN TIM3_MspPostInit 1 */ + + /* USER CODE END TIM3_MspPostInit 1 */ + } + else if(htim->Instance==TIM4) { /* USER CODE BEGIN TIM4_MspPostInit 0 */ @@ -582,6 +745,36 @@ void HAL_TIM_MspPostInit(TIM_HandleTypeDef* htim) /* USER CODE END TIM4_MspPostInit 1 */ } + else if(htim->Instance==TIM12) + { + /* USER CODE BEGIN TIM12_MspPostInit 0 */ + + /* USER CODE END TIM12_MspPostInit 0 */ + + __HAL_RCC_GPIOH_CLK_ENABLE(); + __HAL_RCC_GPIOB_CLK_ENABLE(); + /**TIM12 GPIO Configuration + PH6 ------> TIM12_CH1 + PB15 ------> TIM12_CH2 + */ + 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_AF9_TIM12; + HAL_GPIO_Init(GPIOH, &GPIO_InitStruct); + + GPIO_InitStruct.Pin = GPIO_PIN_15; + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + GPIO_InitStruct.Alternate = GPIO_AF9_TIM12; + HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); + + /* USER CODE BEGIN TIM12_MspPostInit 1 */ + + /* USER CODE END TIM12_MspPostInit 1 */ + } } /** @@ -592,7 +785,29 @@ void HAL_TIM_MspPostInit(TIM_HandleTypeDef* htim) */ void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* htim_base) { - if(htim_base->Instance==TIM4) + 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 */ @@ -610,6 +825,17 @@ void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* htim_base) /* USER CODE END TIM4_MspDeInit 1 */ } + else if(htim_base->Instance==TIM12) + { + /* USER CODE BEGIN TIM12_MspDeInit 0 */ + + /* USER CODE END TIM12_MspDeInit 0 */ + /* Peripheral clock disable */ + __HAL_RCC_TIM12_CLK_DISABLE(); + /* USER CODE BEGIN TIM12_MspDeInit 1 */ + + /* USER CODE END TIM12_MspDeInit 1 */ + } } diff --git a/bsp/stm32/stm32f469-st-disco/board/CubeMX_Config/Src/stm32f4xx_it.c b/bsp/stm32/stm32f469-st-disco/board/CubeMX_Config/Src/stm32f4xx_it.c index e34771f98d..5aeb60b47b 100644 --- a/bsp/stm32/stm32f469-st-disco/board/CubeMX_Config/Src/stm32f4xx_it.c +++ b/bsp/stm32/stm32f469-st-disco/board/CubeMX_Config/Src/stm32f4xx_it.c @@ -63,7 +63,7 @@ extern PCD_HandleTypeDef hpcd_USB_OTG_FS; /* USER CODE END EV */ /******************************************************************************/ -/* Cortex-M4 Processor Interruption and Exception Handlers */ +/* Cortex-M4 Processor Interruption and Exception Handlers */ /******************************************************************************/ /** * @brief This function handles Non maskable interrupt. diff --git a/bsp/stm32/stm32f469-st-disco/board/Kconfig b/bsp/stm32/stm32f469-st-disco/board/Kconfig index 8f05844f71..6dc9e76f42 100644 --- a/bsp/stm32/stm32f469-st-disco/board/Kconfig +++ b/bsp/stm32/stm32f469-st-disco/board/Kconfig @@ -15,6 +15,31 @@ menu "Onboard Peripheral Drivers" select BSP_USING_TOUCH default n + config BSP_USING_ARDUINO + bool "Support Arduino" + select PKG_USING_RTDUINO + select BSP_USING_STLINK_TO_USART + select BSP_USING_GPIO + select BSP_USING_ADC + select BSP_USING_ADC1 + 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_PWM12 + select BSP_USING_PWM12_CH1 + select BSP_USING_PWM12_CH2 + select BSP_USING_I2C + select BSP_USING_I2C1 + imply RTDUINO_USING_SERVO + imply RTDUINO_USING_WIRE + imply RTDUINO_USING_ADAFRUIT + imply RTDUINO_USING_MSTIMER2 + default n + if BSP_USING_LVGL config BSP_USING_LVGL_DEMO bool "Enable LVGL demo" @@ -103,6 +128,62 @@ menu "On-chip Peripheral Drivers" select RT_USING_PIN default y + 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 + 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 + endif + if BSP_USING_PWM2 + 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 + endif + if BSP_USING_PWM3 + config BSP_USING_PWM3_CH2 + bool "Enable PWM3 channel2" + default n + endif + menuconfig BSP_USING_PWM12 + bool "Enable timer12 output PWM" + default n + if BSP_USING_PWM12 + config BSP_USING_PWM12_CH1 + bool "Enable PWM12 channel1" + default n + endif + if BSP_USING_PWM12 + config BSP_USING_PWM12_CH2 + bool "Enable PWM12 channel2" + default n + endif + endif + menuconfig BSP_USING_UART bool "Enable UART" select RT_USING_SERIAL