
- FLIP 32 F3 OMNIBUS PRO NOT USING STM32 DRIVER GENERATOR
- FLIP 32 F3 OMNIBUS PRO NOT USING STM32 DRIVER UPDATE
FLIP 32 F3 OMNIBUS PRO NOT USING STM32 DRIVER UPDATE
In another function, I have an algorithm that would update the pulse_width global variable. This is enough to run the PWM at a fixed duty cycle specified in the comments above when I hard code the right value to replace pulse_width value in sConfigOC.Pulse = pulse_width. If (HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_2) != HAL_OK) If (HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_1) != HAL_OK)//Starts the PWM signal generation HAL_TIM_Base_Start(&htim1) //Starts the TIM Base generation HAL_TIM_MspPostInit(&htim1) //output pin assignment If (HAL_TIMEx_ConfigBreakDeadTime(&htim1, &sBreakDeadTimeConfig) != HAL_OK) SBreakDeadTimeConfig.AutomaticOutput = TIM_AUTOMATICOUTPUT_ENABLE SBreakDeadTimeConfig.BreakPolarity = TIM_BREAKPOLARITY_HIGH

SBreakDeadTimeConfig.BreakState = TIM_BREAK_ENABLE SBreakDeadTimeConfig.LockLevel = TIM_LOCKLEVEL_1 SBreakDeadTimeConfig.OffStateIDLEMode = TIM_OSSI_ENABLE SBreakDeadTimeConfig.OffStateRunMode = TIM_OSSR_ENABLE If (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_2) != HAL_OK)

If (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) SConfigOC.OCNIdleState = TIM_OCNIDLESTATE_RESET SConfigOC.OCIdleState = TIM_OCIDLESTATE_RESET SConfigOC.OCFastMode = TIM_OCFAST_DISABLE SConfigOC.OCNPolarity = TIM_OCNPOLARITY_HIGH SConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH SConfigOC.Pulse = pulse_width /* 50% duty cycle is 538, set to 0 initially*/// sConfig: TIM PWM configuration structure If (HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig) != HAL_OK) SMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE SMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET

parameters in the TIM_HandleTypeDef and create the associated handle. If (HAL_TIM_ConfigClockSource(&htim1, &sClockSourceConfig) != HAL_OK)//Initializes the TIM PWM Time Base according to the specified SClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL //the default clock is the internal clock from the APBx, using this function If (HAL_TIM_Base_Init(&htim1) != HAL_OK)/* to use the Timer to generate a simple time base for TIM1 */ In our case, for 15Khz PWM_frequency, set Period to TIM_Period = 16MHz / 15KHz - 1 = 1066 = 1066 //max value for timer is 16bit = 65535, TIM_Period = timer_tick_frequency / PWM_frequency - 1 = 0 //we want a max frequency for timer, so we set prescaller to 0 TIM_BreakDeadTimeConfigTypeDef sBreakDeadTimeConfig TIM_ClockConfigTypeDef sClockSourceConfig To generate a fixed duty cycle PWM signal I added HAL_TIM_Base_Start(&htim1) //Starts the TIM Base generation and HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_1)//Starts the PWM signal generation to the Timer initialization function as shown below.
FLIP 32 F3 OMNIBUS PRO NOT USING STM32 DRIVER GENERATOR
I used the STM32Cube initialization code generator to generate an initialized Timer function.
