Simulación STM usando PWM analógico

En el proceso de hacer el balance car, después de soldar la pcb, descubrí que el puerto BIN2 no tiene función de canal de temporizador y no puede generar PWM, pero no se puede usar de esta manera, definitivamente no.
No olvide cómo generar ondas PWM cuando use una microcomputadora de un solo chip 51, así que uso este método para realizar PWM.

  • Use temporizadores e interrupciones de temporizador directamente.
  • Utilice la función de devolución de llamada de la biblioteca HAL.
void HAL_TIM_PWM_PulseFinishedCallback(TIM_HandleTypeDef *htim) //Âö³å½áÊø£¬Ò²¾ÍÊǸߵçƽ½áÊø£¬ÖÃΪµÍµçƽ
{
    
    
    if(htim->Channel == HAL_TIM_ACTIVE_CHANNEL_3)
    {
    
    

        GPIOA->BRR = GPIO_PIN_3;//±äΪµÍµçƽ
    } else if(htim->Channel == HAL_TIM_ACTIVE_CHANNEL_4)
    {
    
    
        GPIOA->BRR = GPIO_PIN_4;
    }
		
}

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) //µ±Õû¸öÖÜÆÚ½áÊø£¬ÖÃΪ¸ßµçƽ
{
    
    
  /* USER CODE BEGIN Callback 0 */
    if(TIM3->CCR3 != 0)
        GPIOA->BSRR = GPIO_PIN_3; //±äΪ¸ßµçƽ
    if(TIM3->CCR4 != 0)
        GPIOA->BSRR = GPIO_PIN_4;
  /* USER CODE END Callback 0 */
  if (htim->Instance == TIM1) {
    
    
    HAL_IncTick();
  }
}

おすすめ

転載: blog.csdn.net/amimax/article/details/128423747