stm32 pwm 주기 이용하여 LED 제어

김상훈·2022년 8월 30일
1

pwm 주기를 이용하여 LED를 제어해보겠다.

PC6은 LED가 있는 PIN이고 data sheet를 보면 TIM3_CH1이 있는데 이것은 PWM을 사용할 수 있는 타이머 채널이므로 이것을 설정해주겠다.

위와 같이 설정해주겠다. 주파수는 1khz로 설정해주었다. 이것에 관한 건 지난 글에 타이머 인터럽트를 참고하면 되겠다.

또한 PC6번 PIN을 TIM3_CH1으로 설정해주었다.

이렇게 하고 File - Save 후 generate code를 하고 main.c에 가보면

이 함수가 있는데 F3을 눌러 자세히 보면

설정한대로 잘 되어있음을 확인할 수 있다.

PWM을 사용하기 위해 main문에 위와 같은 함수를 선언해준다. 타이머3번 채널 1번을 사용할 것이므로 사진과 같이 써줬다.

그리고 while문 안에 다음과 같은 식을 써주었다.(주석은 무시)

코드를 간략하게 설명하자면 처음에는 flag가 0이고 ccr이 계속 증가하는데 그 값이 ARR보다 커지면 안되므로 ARR보다 커지면 flag를 1로 변경해주어 다시 ccr을 감소시켜주고 ccr이 0이 되면 다시 flag가 0이 되어 점차적으로 증가되게끔 구현하였다.

ccr값에 따라 pwm의 pulse가 달라지므로 25%펄스라고 가정하면 우리 눈에는 약 1/4의 밝기로 보일 것이다.

자세한 건 pwm의 개념에 대해 공부를 해보면 이해가 쉬울 것이다.

profile
처음 접하는 소프트웨어

0개의 댓글