[STM32] 2024-01-09-STM32 4일차 PWM
개념정리
PWM
PWM이란 무엇입니까? PWM은 펄스 폭 변조라고도 합니다. PWM(Pulse Width Modulation)은 마이크로프로세서의 디지털 출력을 통해 아날로그 회로를 제어하는 방식으로 측정, 통신, 전력 제어 및 여러 분야의 변환에 널리 사용되는 매우 효과적인 기술입니다.
타이머 업데이트 발생 주기랑 PWM 신호의 주기가 같다
-> 이해 못한 부분 ARR 레지스터와 Prescaler의 주기를 조절하여 PWM 펄스의 주기를 조절이 가능하지만
ARR의 값을 나누면 CC의 값 조절하는 단계가 줄어들었다
-> 드론 활용이 어렵다
CC 레지스터 capture compare Register
펄스의 위상이 반대가 되는 시점이다 펄스 폭을 조절할 수 있다
최소 0부터 ARR 사이의 값을 가진다
타이머에서 Channels 의 갯수를 의미한다
펄스의 폭을
ARR 값을 바꾸든지
개발 환경 세팅
- gpio 채널 바꾸기
- TM Configuration 설정 -임시 구체적으로 값은 계산해야함 configuration 예시
소스코드
stm32f7xx_hal_tim.보면 파일에 보면
// 코드 추가해주면된다
HAL_TIM_PWM_Start(*htmi3,TIM_CHANNEL_1);
전체 소스코드
int main(void)
{
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_TIM7_Init();
MX_USART3_UART_Init();
MX_USB_OTG_FS_PCD_Init();
MX_TIM3_Init();
MX_TIM4_Init();
/* Initialize interrupts */
MX_NVIC_Init();
/* USER CODE BEGIN 2 */
HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_3);
HAL_TIM_PWM_Start(&htim4,TIM_CHANNEL_2);
uint16_t CCR =0;
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
__HAL_TIM_SetCompare(&htim3,TIM_CHANNEL_3,CCR);
__HAL_TIM_SetCompare(&htim4,TIM_CHANNEL_2,CCR);
// TIM3->CCR1 =CCR;
CCR +=1000;
if(CCR > TIM3->ARR)
{
CCR =0;
}
HAL_Delay(100);
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
}
출처
-
참고 영상강의 자료 https://www.youtube.com/watch?v=_7Ll95FITn4&list=PLUaCOzp6U-RqMo-QEJQOkVOl1Us8BNgXk&index=4&ab_channel=ChrisWonyeobPark
-
PWM 정의 https://www.veichi.kr/knowledge/what-is-pulse-width-modulation.html
-
참고 자료 https://sc.sogang.ac.kr/bbs/bbsview.do?pkid=51929&bbsid=3857&wslID=mecha&searchField=&searchValue=¤tPage=1
댓글남기기