STM模拟使用模拟PWM

在制作平衡小车的过程中,焊接好pcb发现,BIN2口没有定时器通道功能,无法输出PWM,但这样就不能用了吗,肯定不是啊。
别忘了使用51单片机的时候是如何产生PWM波的,于是我就用这种方法来实现PWM。

  • 直接用定时器和定时器中断。
  • 利用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
今日推荐