cancel
Showing results for 
Search instead for 
Did you mean: 

STM32F429 Discovery - PWM input capture

felixklemm
Associate II
Posted on May 26, 2016 at 10:34

 

 

The original post was too long to process during our migration. Please click on the attachment to read the original post.
6 REPLIES 6
Walid FTITI_O
Senior II
Posted on May 26, 2016 at 18:26

Hi klemm.felix,

Share the TIMs GPIO configuration ( stm32f4xx_hal_msp.c) .  Is your application requiring to interconnect both Timers and be suychronized by RESET mode. ? because you have configured it but you didn't enabled the master TIM3

sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;

-Hannibal-

felixklemm
Associate II
Posted on May 26, 2016 at 18:50 Hi Hannibal, thanks for your reply! TIM3 is only responsible for my PWM output and this output seems to be correct (checked with oscilloscope) :) Here is my MSP:


/**

******************************************************************************

* File Name : stm32f4xx_hal_msp.c

* Description : This file provides code for the MSP Initialization 

* and de-Initialization codes.

******************************************************************************

*

* COPYRIGHT(c) 2016 STMicroelectronics

*

* Redistribution and use in source and binary forms, with or without modification,

* are permitted provided that the following conditions are met:

* 1. Redistributions of source code must retain the above copyright notice,

* this list of conditions and the following disclaimer.

* 2. Redistributions in binary form must reproduce the above copyright notice,

* this list of conditions and the following disclaimer in the documentation

* and/or other materials provided with the distribution.

* 3. Neither the name of STMicroelectronics nor the names of its contributors

* may be used to endorse or promote products derived from this software

* without specific prior written permission.

*

* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ''AS IS''

* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE

* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE

* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR

* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER

* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,

* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE

* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

*

******************************************************************************

*/

/* Includes ------------------------------------------------------------------*/

#include ''stm32f4xx_hal.h''


/* USER CODE BEGIN 0 */


/* USER CODE END 0 */


/**

* Initializes the Global MSP.

*/

void
HAL_MspInit(
void
)

{

/* USER CODE BEGIN MspInit 0 */


/* USER CODE END MspInit 0 */


HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_4);


/* System interrupt init*/

/* MemoryManagement_IRQn interrupt configuration */

HAL_NVIC_SetPriority(MemoryManagement_IRQn, 0, 0);

/* BusFault_IRQn interrupt configuration */

HAL_NVIC_SetPriority(BusFault_IRQn, 0, 0);

/* UsageFault_IRQn interrupt configuration */

HAL_NVIC_SetPriority(UsageFault_IRQn, 0, 0);

/* DebugMonitor_IRQn interrupt configuration */

HAL_NVIC_SetPriority(DebugMonitor_IRQn, 0, 0);

/* SysTick_IRQn interrupt configuration */

HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0);


/* USER CODE BEGIN MspInit 1 */


/* USER CODE END MspInit 1 */

}


void
HAL_TIM_Base_MspInit(TIM_HandleTypeDef* htim_base)

{


GPIO_InitTypeDef GPIO_InitStruct;

if
(htim_base->Instance==TIM1)

{

/* USER CODE BEGIN TIM1_MspInit 0 */


/* USER CODE END TIM1_MspInit 0 */

/* Peripheral clock enable */

__HAL_RCC_TIM1_CLK_ENABLE();


/**TIM1 GPIO Configuration

PE9 ------> TIM1_CH1

*/

GPIO_InitStruct.Pin = GPIO_PIN_9;

GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;

GPIO_InitStruct.Pull = GPIO_NOPULL;

GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;

GPIO_InitStruct.Alternate = GPIO_AF1_TIM1;

HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);


/* Peripheral interrupt init */

HAL_NVIC_SetPriority(TIM1_CC_IRQn, 0, 0);

HAL_NVIC_EnableIRQ(TIM1_CC_IRQn);

/* USER CODE BEGIN TIM1_MspInit 1 */


/* USER CODE END TIM1_MspInit 1 */

}


}


void
HAL_TIM_PWM_MspInit(TIM_HandleTypeDef* htim_pwm)

{


if
(htim_pwm->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 */

}


}


void
HAL_TIM_MspPostInit(TIM_HandleTypeDef* htim)

{


GPIO_InitTypeDef GPIO_InitStruct;

if
(htim->Instance==TIM3)

{

/* USER CODE BEGIN TIM3_MspPostInit 0 */


/* USER CODE END TIM3_MspPostInit 0 */


/**TIM3 GPIO Configuration 

PA6 ------> TIM3_CH1

PA7 ------> TIM3_CH2

PB0 ------> TIM3_CH3

PB1 ------> TIM3_CH4 

*/

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);


GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1;

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 */

}


}


void
HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* htim_base)

{


if
(htim_base->Instance==TIM1)

{

/* USER CODE BEGIN TIM1_MspDeInit 0 */


/* USER CODE END TIM1_MspDeInit 0 */

/* Peripheral clock disable */

__HAL_RCC_TIM1_CLK_DISABLE();


/**TIM1 GPIO Configuration

PE9 ------> TIM1_CH1

*/

HAL_GPIO_DeInit(GPIOE, GPIO_PIN_9);


/* Peripheral interrupt DeInit*/

HAL_NVIC_DisableIRQ(TIM1_CC_IRQn);


}

/* USER CODE BEGIN TIM1_MspDeInit 1 */


/* USER CODE END TIM1_MspDeInit 1 */


}


void
HAL_TIM_PWM_MspDeInit(TIM_HandleTypeDef* htim_pwm)

{


if
(htim_pwm->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 */


}


/* USER CODE BEGIN 1 */


/* USER CODE END 1 */


/**

* @}

*/


/**

* @}

*/


/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/

Thank you very much! felix
Posted on May 27, 2016 at 03:01

Period = 0, seems a bit odd

Tips, Buy me a coffee, or three.. PayPal Venmo
Up vote any posts that you find helpful, it shows what's working..
felixklemm
Associate II
Posted on May 27, 2016 at 08:17

Hi clive!

Where do you read Period = 0?

Don't know what you mean.

thanks.

Posted on May 27, 2016 at 14:42

Sorry,

sConfigOC.Pulse = 0;

Tips, Buy me a coffee, or three.. PayPal Venmo
Up vote any posts that you find helpful, it shows what's working..
felixklemm
Associate II
Posted on May 27, 2016 at 23:03

sConfigOC.Pulse = 0;

is only for output mode. My Problem ist that i'm getting strange values when accessing CCR1 and CCR2 when CC1 interrupt is triggered.