STM32F1

STM32F1, STMCubeMX, GPIO, PWM, Digital Buzzer

CoyoteUgly 2018. 8. 6. 12:55

STM32F1, STMCubeMX, GPIO, PWM, Digital Buzzer




0. 참고 자료

해당 모듈은 기본적으로 On/Off 기능만 있지만 PWM 기능을 이용해도 동작하는지 테스트를 진행하였습니다.
PWM을 사용하면 duty 100%가 아니면 부저의 음질이 좋지 않은 것으로 확인되었습니다.

1. 모듈



2. HW 구성

스펙상으로는 5V이지만 3V3에서도 동작하네요.


3. Timer Enable & GPIO Enable

Timer를 이용하여 PWM 방식으로 제어할 것인지
아니면 GPIO 방식으로 제어할 것인지 애매해서 2가지 방법으로 테스트하였습니다.


4. RCC > HSE > Crystal/Ceramic Resonator


5. Clock Configuration > 72MHz


6. Configuration > TIM


7. Parameter Settings

  • Prescaler : 72-1
  • Counter Period : 100-1


8. SW 구성

HAL_GPIO_WritePin(BUZZER_GPIO_Port, BUZZER_Pin, GPIO_PIN_SET);
HAL_Delay(1000);

HAL_GPIO_WritePin(BUZZER_GPIO_Port, BUZZER_Pin, GPIO_PIN_RESET);


or


HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_1);
htim3.Instance->CCR1 = 100; // 100% duty cycle

HAL_Delay(1000);

HAL_TIM_PWM_Stop(&htim3, TIM_CHANNEL_1);


9. 소스


10. 결과

PWM 방식으로 100% duty 에서 정상 동작하기 때문에
그냥 GPIO 방식으로 하는 것이 적절한 거 같네요.