From e961b051f9da1b0d461c1337bd7c83a76156d960 Mon Sep 17 00:00:00 2001 From: Meco Man <920369182@qq.com> Date: Thu, 7 Mar 2024 18:44:53 -0500 Subject: [PATCH] [stm32f412-nucleo] support RTduino Tone feature --- .../arduino_pinout/pins_arduino.h | 2 ++ .../board/CubeMX_Config/CubeMX_Config.ioc | 20 ++++++++++++----- .../CubeMX_Config/Src/stm32f4xx_hal_msp.c | 22 +++++++++++++++++++ bsp/stm32/stm32f412-st-nucleo/board/Kconfig | 12 ++++++++++ 4 files changed, 50 insertions(+), 6 deletions(-) diff --git a/bsp/stm32/stm32f412-st-nucleo/applications/arduino_pinout/pins_arduino.h b/bsp/stm32/stm32f412-st-nucleo/applications/arduino_pinout/pins_arduino.h index dcee3ff1f0..249f0e7e77 100644 --- a/bsp/stm32/stm32f412-st-nucleo/applications/arduino_pinout/pins_arduino.h +++ b/bsp/stm32/stm32f412-st-nucleo/applications/arduino_pinout/pins_arduino.h @@ -53,4 +53,6 @@ #define SS D10 #define RTDUINO_DEFAULT_SPI_BUS_NAME "spi1" +#define RTDUINO_TONE_HWTIMER_DEVICE_NAME "timer6" + #endif /* Pins_Arduino_h */ diff --git a/bsp/stm32/stm32f412-st-nucleo/board/CubeMX_Config/CubeMX_Config.ioc b/bsp/stm32/stm32f412-st-nucleo/board/CubeMX_Config/CubeMX_Config.ioc index 0ad953bbea..939f3cf0f6 100644 --- a/bsp/stm32/stm32f412-st-nucleo/board/CubeMX_Config/CubeMX_Config.ioc +++ b/bsp/stm32/stm32f412-st-nucleo/board/CubeMX_Config/CubeMX_Config.ioc @@ -5,6 +5,9 @@ ADC1.NbrOfConversionFlag=1 ADC1.Rank-0\#ChannelRegularConversion=1 ADC1.SamplingTime-0\#ChannelRegularConversion=ADC_SAMPLETIME_3CYCLES ADC1.master=1 +CAD.formats= +CAD.pinconfig= +CAD.provider= File.Version=6 KeepUserPlacement=true Mcu.CPN=STM32F412ZGT6 @@ -15,10 +18,11 @@ Mcu.IP2=RCC Mcu.IP3=SYS Mcu.IP4=TIM1 Mcu.IP5=TIM4 -Mcu.IP6=TIM14 -Mcu.IP7=USART3 -Mcu.IP8=USB_OTG_FS -Mcu.IPNb=9 +Mcu.IP6=TIM6 +Mcu.IP7=TIM14 +Mcu.IP8=USART3 +Mcu.IP9=USB_OTG_FS +Mcu.IPNb=10 Mcu.Name=STM32F412Z(E-G)Tx Mcu.Package=LQFP144 Mcu.Pin0=PC13 @@ -52,14 +56,15 @@ Mcu.Pin33=VP_ADC1_Vref_Input Mcu.Pin34=VP_SYS_VS_Systick Mcu.Pin35=VP_TIM1_VS_ClockSourceINT Mcu.Pin36=VP_TIM4_VS_ClockSourceINT -Mcu.Pin37=VP_TIM14_VS_ClockSourceINT +Mcu.Pin37=VP_TIM6_VS_ClockSourceINT +Mcu.Pin38=VP_TIM14_VS_ClockSourceINT Mcu.Pin4=PH1 - OSC_OUT Mcu.Pin5=PC0 Mcu.Pin6=PC1 Mcu.Pin7=PC3 Mcu.Pin8=PA3 Mcu.Pin9=PA7 -Mcu.PinsNb=38 +Mcu.PinsNb=39 Mcu.ThirdPartyNb=0 Mcu.UserConstants= Mcu.UserName=STM32F412ZGTx @@ -206,6 +211,7 @@ 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 @@ -340,5 +346,7 @@ VP_TIM1_VS_ClockSourceINT.Mode=Internal VP_TIM1_VS_ClockSourceINT.Signal=TIM1_VS_ClockSourceINT VP_TIM4_VS_ClockSourceINT.Mode=Internal VP_TIM4_VS_ClockSourceINT.Signal=TIM4_VS_ClockSourceINT +VP_TIM6_VS_ClockSourceINT.Mode=Enable_Timer +VP_TIM6_VS_ClockSourceINT.Signal=TIM6_VS_ClockSourceINT board=NUCLEO-F412ZG boardIOC=true diff --git a/bsp/stm32/stm32f412-st-nucleo/board/CubeMX_Config/Src/stm32f4xx_hal_msp.c b/bsp/stm32/stm32f412-st-nucleo/board/CubeMX_Config/Src/stm32f4xx_hal_msp.c index 01a0c6def9..de4ae17fde 100644 --- a/bsp/stm32/stm32f412-st-nucleo/board/CubeMX_Config/Src/stm32f4xx_hal_msp.c +++ b/bsp/stm32/stm32f412-st-nucleo/board/CubeMX_Config/Src/stm32f4xx_hal_msp.c @@ -210,6 +210,17 @@ void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* htim_base) /* USER CODE END TIM4_MspInit 1 */ } + else if(htim_base->Instance==TIM6) + { + /* USER CODE BEGIN TIM6_MspInit 0 */ + + /* USER CODE END TIM6_MspInit 0 */ + /* Peripheral clock enable */ + __HAL_RCC_TIM6_CLK_ENABLE(); + /* USER CODE BEGIN TIM6_MspInit 1 */ + + /* USER CODE END TIM6_MspInit 1 */ + } else if(htim_base->Instance==TIM14) { /* USER CODE BEGIN TIM14_MspInit 0 */ @@ -324,6 +335,17 @@ void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* htim_base) /* USER CODE END TIM4_MspDeInit 1 */ } + else if(htim_base->Instance==TIM6) + { + /* USER CODE BEGIN TIM6_MspDeInit 0 */ + + /* USER CODE END TIM6_MspDeInit 0 */ + /* Peripheral clock disable */ + __HAL_RCC_TIM6_CLK_DISABLE(); + /* USER CODE BEGIN TIM6_MspDeInit 1 */ + + /* USER CODE END TIM6_MspDeInit 1 */ + } else if(htim_base->Instance==TIM14) { /* USER CODE BEGIN TIM14_MspDeInit 0 */ diff --git a/bsp/stm32/stm32f412-st-nucleo/board/Kconfig b/bsp/stm32/stm32f412-st-nucleo/board/Kconfig index 4a80bb5963..87f9d5136f 100644 --- a/bsp/stm32/stm32f412-st-nucleo/board/Kconfig +++ b/bsp/stm32/stm32f412-st-nucleo/board/Kconfig @@ -15,6 +15,8 @@ menu "Onboard Peripheral Drivers" select BSP_USING_GPIO select BSP_USING_ADC select BSP_USING_ADC1 + select BSP_USING_TIM + select BSP_USING_TIM6 select BSP_USING_PWM select BSP_USING_PWM14 select BSP_USING_PWM4 @@ -123,6 +125,16 @@ menu "On-chip Peripheral Drivers" endif endif + menuconfig BSP_USING_TIM + bool "Enable timer" + default n + select RT_USING_HWTIMER + if BSP_USING_TIM + config BSP_USING_TIM6 + bool "Enable TIM6" + default n + endif + menuconfig BSP_USING_I2C bool "Enable I2C BUS" default n