균형 차를 만드는 과정에서 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();
}
}