이번에는 TIM2 4개 채널을 DMA 방식 PWM으로 사용하는 프로그램 입니다.
1. 소스코드
uint16_t pwm_1 = 0;
uint16_t pwm_2 = 100;
uint16_t pwm_3 = 0;
uint16_t pwm_4 = 50;
int main(void)
{
// 6. TIM2 ==>> PWM Ch4 PWM OUT
HAL_TIM_PWM_Start_DMA(&htim2, TIM_CHANNEL_1, (uint32_t *)&pwm_1, 1);
HAL_TIM_PWM_Start_DMA(&htim2, TIM_CHANNEL_2, (uint32_t *)&pwm_2, 1);
HAL_TIM_PWM_Start_DMA(&htim2, TIM_CHANNEL_3, (uint32_t *)&pwm_3, 1);
HAL_TIM_PWM_Start_DMA(&htim2, TIM_CHANNEL_4, (uint32_t *)&pwm_4, 1);
while(1)
{
(pwm_1 += 100);
(pwm_2 += 200);
(pwm_3 += 300);
(pwm_4 += 400);
HAL_TIM_PWM_Start_DMA(&htim2, TIM_CHANNEL_1, (uint32_t *)&pwm_1, 1);
HAL_TIM_PWM_Start_DMA(&htim2, TIM_CHANNEL_2, (uint32_t *)&pwm_2, 1);
HAL_TIM_PWM_Start_DMA(&htim2, TIM_CHANNEL_3, (uint32_t *)&pwm_3, 1);
HAL_TIM_PWM_Start_DMA(&htim2, TIM_CHANNEL_4, (uint32_t *)&pwm_4, 1);
printf("PWM_DMA = %d, CNT = %d\r\n", TIM2 -> CCR1, TIM2 -> CNT);
HAL_Delay(300);
}
}
2. 실행결과
3. CUbe MX
4. PWM 출력 핀 == TIM2