Home » STM32

Category: STM32

Contrôle d’une led avec un µC STM32

Exemple de contrôle d’une led sur le port PE8 avec un microcontrôleur STM32F407 :

[pastacode lang=”c” manual=”void%20led_init(void)%0A%7B%0AGPIO_InitTypeDef%20GPIO_InitStruct%3B%0A%0A%09%20%20%2F%2F%20configuration%20en%20sortie%0A%09%20%20GPIO_InitStruct.Pin%20%3D%20GPIO_PIN_8%3B%0A%09%20%20GPIO_InitStruct.Mode%20%3D%20GPIO_MODE_OUTPUT_PP%3B%0A%09%20%20GPIO_InitStruct.Pull%20%3D%20GPIO_NOPULL%3B%0A%09%20%20GPIO_InitStruct.Speed%20%3D%20GPIO_SPEED_FREQ_LOW%3B%0A%09%20%20HAL_GPIO_Init(GPIOE%2C%20%26GPIO_InitStruct)%3B%0A%0A%7D%0A%0Avoid%20led_control(GPIO_PinState%20state_led)%0A%7B%0A%09HAL_GPIO_WritePin(GPIOE%2C%20GPIO_PIN_8%2C%20state_led)%3B%0A%7D%0A%0Avoid%20led_toggle(void)%0A%7B%0A%20%20HAL_GPIO_TogglePin(GPIOE%2C%20GPIO_PIN_8)%3B%0A%7D” message=”” highlight=”” provider=”manual”/]

 

STM32 – PWM complementary output exemple

GPIO_InitTypeDef GPIO_RGB_InitStruct;
TIM_BreakDeadTimeConfigTypeDef sBreakDeadTimeConfig;

__HAL_RCC_GPIOB_CLK_ENABLE();

// PB7 - TIMER17
 GPIO_RGB_InitStruct.Pin = GPIO_PIN_7;
 GPIO_RGB_InitStruct.Mode = GPIO_MODE_AF_PP;
 GPIO_RGB_InitStruct.Pull = GPIO_NOPULL;
 GPIO_RGB_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
 GPIO_RGB_InitStruct.Alternate = GPIO_AF2_TIM17;
 HAL_GPIO_Init(GPIOB, &GPIO_RGB_InitStruct);


 __HAL_RCC_TIM17_CLK_ENABLE();

// Init TIMER17 for 800KHz frequency
 // 48MHz/(19+1)/(2+1) = 800Khz
 TIMER_RGB_InitStruct.Instance = TIM17;
 TIMER_RGB_InitStruct.Init.Prescaler = 0;
 TIMER_RGB_InitStruct.Init.CounterMode = TIM_COUNTERMODE_UP;
 TIMER_RGB_InitStruct.Init.Period = 59;

TIMER_RGB_InitStruct.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;

HAL_TIM_Base_Init(&TIMER_RGB_InitStruct);

HAL_TIM_PWM_Init(&TIMER_RGB_InitStruct);

// Output Compare Configuration
 TIMER_RGB_OC_InitStruct.OCMode = TIM_OCMODE_PWM1;
 TIMER_RGB_OC_InitStruct.OCIdleState = TIM_OCIDLESTATE_RESET;
 TIMER_RGB_OC_InitStruct.OCNIdleState = TIM_OCNIDLESTATE_RESET;// ATTENTION ! TIM_OCNIDLESTATE_RESET
 TIMER_RGB_OC_InitStruct.Pulse = 1;// PWM 0 %
 TIMER_RGB_OC_InitStruct.OCPolarity = TIM_OCPOLARITY_HIGH;
 TIMER_RGB_OC_InitStruct.OCNPolarity = TIM_OCNPOLARITY_HIGH;// ATTENTION ! TIM_OCNPOLARITY_HIGH
 TIMER_RGB_OC_InitStruct.OCFastMode = TIM_OCFAST_DISABLE;

HAL_TIM_PWM_ConfigChannel(&TIMER_RGB_InitStruct, &TIMER_RGB_OC_InitStruct, TIM_CHANNEL_1);

HAL_TIMEx_PWMN_Start(&TIMER_RGB_InitStruct,TIM_CHANNEL_1);// ATTENTION HAL_TIMEx_PWMN_Start