diff --git a/ADCftPWM.ioc b/ADCftPWM.ioc index 9779ea1..9d66121 100644 --- a/ADCftPWM.ioc +++ b/ADCftPWM.ioc @@ -16,16 +16,17 @@ Mcu.IP0=ADC1 Mcu.IP1=NVIC Mcu.IP2=RCC Mcu.IP3=SYS -Mcu.IP4=TIM2 +Mcu.IP4=TIM1 Mcu.IPNb=5 Mcu.Name=STM32F429ZITx Mcu.Package=LQFP144 Mcu.Pin0=PA1 -Mcu.Pin1=PA2 +Mcu.Pin1=PE14 Mcu.Pin2=PA11 Mcu.Pin3=PA12 Mcu.Pin4=VP_SYS_VS_Systick -Mcu.PinsNb=5 +Mcu.Pin5=VP_TIM1_VS_ClockSourceINT +Mcu.PinsNb=6 Mcu.ThirdPartyNb=0 Mcu.UserConstants= Mcu.UserName=STM32F429ZITx @@ -51,8 +52,7 @@ PA12.GPIOParameters=GPIO_Label PA12.GPIO_Label=LED_ERR PA12.Locked=true PA12.Signal=GPIO_Output -PA2.Locked=true -PA2.Signal=S_TIM2_CH3 +PE14.Signal=S_TIM1_CH4 PinOutPanel.RotationAngle=0 ProjectManager.AskForMigrate=true ProjectManager.BackupPrevious=false @@ -85,7 +85,7 @@ ProjectManager.ToolChainLocation= ProjectManager.UAScriptAfterPath= ProjectManager.UAScriptBeforePath= ProjectManager.UnderRoot=false -ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_ADC1_Init-ADC1-false-HAL-true,4-MX_TIM2_Init-TIM2-false-HAL-true +ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_ADC1_Init-ADC1-false-HAL-true,4-MX_TIM1_Init-TIM1-false-HAL-true RCC.48MHZClocksFreq_Value=22857142.85714286 RCC.AHBFreq_Value=80000000 RCC.APB1CLKDivider=RCC_HCLK_DIV2 @@ -128,12 +128,14 @@ RCC.VcooutputI2S=192000000 RCC.VcooutputI2SQ=192000000 SH.ADCx_IN1.0=ADC1_IN1,IN1 SH.ADCx_IN1.ConfNb=1 -SH.S_TIM2_CH3.0=TIM2_CH3,PWM Generation3 CH3 -SH.S_TIM2_CH3.ConfNb=1 -TIM2.Channel-PWM\ Generation3\ CH3=TIM_CHANNEL_3 -TIM2.IPParameters=Channel-PWM Generation3 CH3,Period -TIM2.Period=7999 +SH.S_TIM1_CH4.0=TIM1_CH4,PWM Generation4 CH4 +SH.S_TIM1_CH4.ConfNb=1 +TIM1.Channel-PWM\ Generation4\ CH4=TIM_CHANNEL_4 +TIM1.IPParameters=Channel-PWM Generation4 CH4,Period +TIM1.Period=7999 VP_SYS_VS_Systick.Mode=SysTick VP_SYS_VS_Systick.Signal=SYS_VS_Systick +VP_TIM1_VS_ClockSourceINT.Mode=Internal +VP_TIM1_VS_ClockSourceINT.Signal=TIM1_VS_ClockSourceINT board=STM32F429I-DISC1 boardIOC=true diff --git a/Core/Src/main.c b/Core/Src/main.c index c71b7c6..5e6d912 100644 --- a/Core/Src/main.c +++ b/Core/Src/main.c @@ -18,7 +18,7 @@ /* USER CODE END Header */ /* Includes ------------------------------------------------------------------*/ #include "main.h" -#include "stm32f4xx_hal_gpio.h" +#include "stm32f4xx_hal_tim.h" /* Private includes ----------------------------------------------------------*/ /* USER CODE BEGIN Includes */ @@ -43,7 +43,7 @@ /* Private variables ---------------------------------------------------------*/ ADC_HandleTypeDef hadc1; -TIM_HandleTypeDef htim2; +TIM_HandleTypeDef htim1; /* USER CODE BEGIN PV */ uint16_t duty; @@ -54,7 +54,7 @@ uint16_t duty; void SystemClock_Config(void); static void MX_GPIO_Init(void); static void MX_ADC1_Init(void); -static void MX_TIM2_Init(void); +static void MX_TIM1_Init(void); /* USER CODE BEGIN PFP */ /* USER CODE END PFP */ @@ -94,13 +94,17 @@ int main(void) /* Initialize all configured peripherals */ MX_GPIO_Init(); MX_ADC1_Init(); - MX_TIM2_Init(); + MX_TIM1_Init(); /* USER CODE BEGIN 2 */ //uint16_t val_raw; //float voltage; HAL_GPIO_WritePin(LED_ERR_GPIO_Port, LED_ERR_Pin, GPIO_PIN_RESET); HAL_GPIO_WritePin(LED_ON_GPIO_Port, LED_ON_Pin, GPIO_PIN_SET); + + if (HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_4) != HAL_OK) + Error_Handler(); + /* USER CODE END 2 */ /* Infinite loop */ @@ -117,12 +121,27 @@ int main(void) /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ - __HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_3, duty); + //if (HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_4) != HAL_OK) + // Error_Handler(); + + // Rising: + __HAL_TIM_SET_COMPARE(&htim1, TIM_CHANNEL_4, duty); duty += 100; if (duty >= 8000) duty = 0; + /* + // Falling: + __HAL_TIM_SET_COMPARE(&htim1, TIM_CHANNEL_4, duty); + duty -= 100; + + if (duty <= 100) + duty = 8000; + + */ + + /* End Delay, lop this off later */ HAL_Delay(10); } /* USER CODE END 3 */ @@ -227,35 +246,48 @@ static void MX_ADC1_Init(void) } /** - * @brief TIM2 Initialization Function + * @brief TIM1 Initialization Function * @param None * @retval None */ -static void MX_TIM2_Init(void) +static void MX_TIM1_Init(void) { - /* USER CODE BEGIN TIM2_Init 0 */ - /* USER CODE END TIM2_Init 0 */ + /* USER CODE BEGIN TIM1_Init 0 */ + /* USER CODE END TIM1_Init 0 */ + + TIM_ClockConfigTypeDef sClockSourceConfig = {0}; TIM_MasterConfigTypeDef sMasterConfig = {0}; TIM_OC_InitTypeDef sConfigOC = {0}; + TIM_BreakDeadTimeConfigTypeDef sBreakDeadTimeConfig = {0}; - /* USER CODE BEGIN TIM2_Init 1 */ + /* USER CODE BEGIN TIM1_Init 1 */ - /* USER CODE END TIM2_Init 1 */ - htim2.Instance = TIM2; - htim2.Init.Prescaler = 0; - htim2.Init.CounterMode = TIM_COUNTERMODE_UP; - htim2.Init.Period = 7999; - htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - if (HAL_TIM_PWM_Init(&htim2) != HAL_OK) + /* USER CODE END TIM1_Init 1 */ + htim1.Instance = TIM1; + htim1.Init.Prescaler = 0; + htim1.Init.CounterMode = TIM_COUNTERMODE_UP; + htim1.Init.Period = 7999; + htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; + htim1.Init.RepetitionCounter = 0; + htim1.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; + if (HAL_TIM_Base_Init(&htim1) != HAL_OK) + { + Error_Handler(); + } + sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; + if (HAL_TIM_ConfigClockSource(&htim1, &sClockSourceConfig) != HAL_OK) + { + Error_Handler(); + } + if (HAL_TIM_PWM_Init(&htim1) != HAL_OK) { Error_Handler(); } sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK) + if (HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig) != HAL_OK) { Error_Handler(); } @@ -263,20 +295,27 @@ static void MX_TIM2_Init(void) sConfigOC.Pulse = 0; sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) + sConfigOC.OCIdleState = TIM_OCIDLESTATE_RESET; + sConfigOC.OCNIdleState = TIM_OCNIDLESTATE_RESET; + if (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_4) != HAL_OK) { Error_Handler(); } - /* USER CODE BEGIN TIM2_Init 2 */ - HAL_TIM_Base_Start(&htim2); - //HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_3); - - /* We need error handling for this specifically */ - if (HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_3)) + sBreakDeadTimeConfig.OffStateRunMode = TIM_OSSR_DISABLE; + sBreakDeadTimeConfig.OffStateIDLEMode = TIM_OSSI_DISABLE; + sBreakDeadTimeConfig.LockLevel = TIM_LOCKLEVEL_OFF; + sBreakDeadTimeConfig.DeadTime = 0; + sBreakDeadTimeConfig.BreakState = TIM_BREAK_DISABLE; + sBreakDeadTimeConfig.BreakPolarity = TIM_BREAKPOLARITY_HIGH; + sBreakDeadTimeConfig.AutomaticOutput = TIM_AUTOMATICOUTPUT_DISABLE; + if (HAL_TIMEx_ConfigBreakDeadTime(&htim1, &sBreakDeadTimeConfig) != HAL_OK) + { Error_Handler(); + } + /* USER CODE BEGIN TIM1_Init 2 */ - /* USER CODE END TIM2_Init 2 */ - HAL_TIM_MspPostInit(&htim2); + /* USER CODE END TIM1_Init 2 */ + HAL_TIM_MspPostInit(&htim1); } @@ -294,6 +333,7 @@ static void MX_GPIO_Init(void) /* GPIO Ports Clock Enable */ __HAL_RCC_GPIOA_CLK_ENABLE(); + __HAL_RCC_GPIOE_CLK_ENABLE(); /*Configure GPIO pin Output Level */ HAL_GPIO_WritePin(GPIOA, LED_ON_Pin|LED_ERR_Pin, GPIO_PIN_RESET); diff --git a/Core/Src/stm32f4xx_hal_msp.c b/Core/Src/stm32f4xx_hal_msp.c index 5f64270..68df828 100644 --- a/Core/Src/stm32f4xx_hal_msp.c +++ b/Core/Src/stm32f4xx_hal_msp.c @@ -144,23 +144,23 @@ void HAL_ADC_MspDeInit(ADC_HandleTypeDef* hadc) } /** - * @brief TIM_PWM MSP Initialization + * @brief TIM_Base MSP Initialization * This function configures the hardware resources used in this example - * @param htim_pwm: TIM_PWM handle pointer + * @param htim_base: TIM_Base handle pointer * @retval None */ -void HAL_TIM_PWM_MspInit(TIM_HandleTypeDef* htim_pwm) +void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* htim_base) { - if(htim_pwm->Instance==TIM2) + if(htim_base->Instance==TIM1) { - /* USER CODE BEGIN TIM2_MspInit 0 */ + /* USER CODE BEGIN TIM1_MspInit 0 */ - /* USER CODE END TIM2_MspInit 0 */ + /* USER CODE END TIM1_MspInit 0 */ /* Peripheral clock enable */ - __HAL_RCC_TIM2_CLK_ENABLE(); - /* USER CODE BEGIN TIM2_MspInit 1 */ + __HAL_RCC_TIM1_CLK_ENABLE(); + /* USER CODE BEGIN TIM1_MspInit 1 */ - /* USER CODE END TIM2_MspInit 1 */ + /* USER CODE END TIM1_MspInit 1 */ } @@ -169,47 +169,47 @@ void HAL_TIM_PWM_MspInit(TIM_HandleTypeDef* htim_pwm) void HAL_TIM_MspPostInit(TIM_HandleTypeDef* htim) { GPIO_InitTypeDef GPIO_InitStruct = {0}; - if(htim->Instance==TIM2) + if(htim->Instance==TIM1) { - /* USER CODE BEGIN TIM2_MspPostInit 0 */ + /* USER CODE BEGIN TIM1_MspPostInit 0 */ - /* USER CODE END TIM2_MspPostInit 0 */ + /* USER CODE END TIM1_MspPostInit 0 */ - __HAL_RCC_GPIOA_CLK_ENABLE(); - /**TIM2 GPIO Configuration - PA2 ------> TIM2_CH3 + __HAL_RCC_GPIOE_CLK_ENABLE(); + /**TIM1 GPIO Configuration + PE14 ------> TIM1_CH4 */ - GPIO_InitStruct.Pin = GPIO_PIN_2; + GPIO_InitStruct.Pin = GPIO_PIN_14; 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); + GPIO_InitStruct.Alternate = GPIO_AF1_TIM1; + HAL_GPIO_Init(GPIOE, &GPIO_InitStruct); - /* USER CODE BEGIN TIM2_MspPostInit 1 */ + /* USER CODE BEGIN TIM1_MspPostInit 1 */ - /* USER CODE END TIM2_MspPostInit 1 */ + /* USER CODE END TIM1_MspPostInit 1 */ } } /** - * @brief TIM_PWM MSP De-Initialization + * @brief TIM_Base MSP De-Initialization * This function freeze the hardware resources used in this example - * @param htim_pwm: TIM_PWM handle pointer + * @param htim_base: TIM_Base handle pointer * @retval None */ -void HAL_TIM_PWM_MspDeInit(TIM_HandleTypeDef* htim_pwm) +void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* htim_base) { - if(htim_pwm->Instance==TIM2) + if(htim_base->Instance==TIM1) { - /* USER CODE BEGIN TIM2_MspDeInit 0 */ + /* USER CODE BEGIN TIM1_MspDeInit 0 */ - /* USER CODE END TIM2_MspDeInit 0 */ + /* USER CODE END TIM1_MspDeInit 0 */ /* Peripheral clock disable */ - __HAL_RCC_TIM2_CLK_DISABLE(); - /* USER CODE BEGIN TIM2_MspDeInit 1 */ + __HAL_RCC_TIM1_CLK_DISABLE(); + /* USER CODE BEGIN TIM1_MspDeInit 1 */ - /* USER CODE END TIM2_MspDeInit 1 */ + /* USER CODE END TIM1_MspDeInit 1 */ } } diff --git a/Makefile b/Makefile index 42d8c59..c642f4a 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ ########################################################################################################################## -# File automatically-generated by tool: [projectgenerator] version: [4.7.0-B52] date: [Thu Dec 18 18:52:59 CST 2025] +# File automatically-generated by tool: [projectgenerator] version: [4.7.0-B52] date: [Thu Dec 18 19:20:16 CST 2025] ########################################################################################################################## # ------------------------------------------------