부저 볼륨을 조절하기 위해서는 PWM을 해야만 한다. 그리고 음계 주파수는 일반적인 PWM 제어와 달리 정해진 주파수 안에서 조절되어야만 한다. 만일 8비트로만 조절하게 된다면 TOP은 0xFF로 고정되어 있다. 오버플로우 인터럽트 때는 매번 ISR로 jump를 하기 때문에 TCNT를 조절할 수 있었다. 하지만 PWM 모드에서는 TCNT를 매번 제어할 수 있는 구간이 없고, TOP은 항상 고정되어있기 때문에 문제가 된다. 따라서 TOP을 내려야하는데 이때는 반드시 TOP이 ICR 혹은 OCRnA가 되는 파형 생성 모드를 사용해야 한다. 따라서 16비트 타이머를 꼭 사용해야 한다
https://cafe.naver.com/stm32study/1201
부하의 최소 스위칭 주파수와 최대 스위칭 주파수를 확인해야 한다 LED 같은 경우에는 잔상 효과를 넘기는 최소 스위칭 주파수와 플리커 현상이 나오기 전의 최대 스위칭 주파수 안에서 맞춰야 한다. 이는 소자의 데이터 시트로 확인할 수 있다. 또는 모터를 구동한다면 기계적인 진동에 의한 소음이 발생하지 않도록 적당히 주파수를 높여야한다 쓸데없이 높은 주파수는 전력낭비의 원인이 되는데 이는 손쉽게 스위칭 소자의 발열(온도)을 체크해서 측정할 수 있다. 같은 듀티에서도 주파수가 (스위칭 소자의 최대 주파수에 가까울 수록) 높으면 스위칭 손실에 의해서 발열이 증가한다.
uint8_t *ocr[3] = {&OCR3A, &OCR3B, &OCR3C}; 상수값이 아닌 주소값임을 명시해줘야기 때문에 반드시 &를 붙여야 한다
1번 타이머 1, 2, 3 8분주, 고속 PWM 14번, 비반전, ICR1 1000 https://github.com/surinoel/avr/tree/master/timer/rgbLED/rgbLED
외부자료를 참고한 것이 아닌 ST사에서 제공하는 SPL로 진행한 것이라서 이론적인 부분은 아직 부족하다. 이 포스팅은 SPL 개발환경 설정을 포함한 속성으로 GPIO를 이용한 LED 제어를 한 내용들이다 개발환경 1. Atollic TrueSTUDIO for STM32 9.3.0 2. STM32F4xx_DSP_StdPeriph_Lib_V1.8.0 * STLink와 TrueSTUDIO가 깔렸다는 전제하에서 시작한다 백지에서 시작한다는 것은 재미가 없을뿐더러 MCU 제어에 대한 전반적으로 익힌 사람들에게만 가능한, 굉장히 어려운 내용들이다. 나는 초보이기에 ST사에서 제공하는 SPL 템플릿들을 이용하려고 한다 1. 구글에 stm32f429ZI SPL을 검색하면 첫 링크에 ST 사이트가 뜰 것이다. 접속하자 ..