embeded/Cortex-M3 STM
stm32 pwm interrupt
구차니
2025. 6. 2. 17:23
그나저나 stm32f4xx_hal_tim.c 에서 내가 만든 파일의 함수를 호출하게해서
pwm이 끝나면 카운트를 갂아 원하는 횟수만큼 소리내려고 했는데
interrupt 내에서 호출한 변수가 증가만 하고 리셋되지 않는 이상한 현상이 발생
해결책은 나중에 찾아봐야겠다.
/* stm32f4xx_hal_tim.c */ void HAL_TIM_IRQHandler(TIM_HandleTypeDef *htim) { ...중략 /* TIM Update event */ if(__HAL_TIM_GET_FLAG(htim, TIM_FLAG_UPDATE) != RESET) { if(__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_UPDATE) !=RESET) { __HAL_TIM_CLEAR_IT(htim, TIM_IT_UPDATE); HAL_TIM_PeriodElapsedCallback(htim); } } ...중략 } |
[링크 https://m.blog.naver.com/eziya76/220934409487]
__HAL_TIM_CLEAR_IT(&htim3, TIM_IT_UPDATE); __HAL_TIM_ENABLE_IT(&htim3, TIM_IT_UPDATE); void TIM3_IRQHandler(void) { if (__HAL_TIM_GET_FLAG(&htim3, TIM_FLAG_UPDATE)) { __HAL_TIM_CLEAR_IT(&htim3, TIM_IT_UPDATE); // PWM 1회 출력 후 이벤트 처리 } } |
쉬운 방법으로 One pulse mode도 있다