0
저는 PWM 듀티 사이클을 0에서 50 %까지 증가시키고 자하는 프로젝트에서 일하고 있습니다. 내 기간은 16000 카운트 또는 1ms (16MHz 기본 타이머 카운트)입니다. 어떤 이유로, 각 기간의 듀티 사이클을 업데이트하는 대신 훨씬 더 느리게 업데이트합니다. 내가 타이머 인터럽트 내에서 새로운 듀티 사이클을 계산하고 있기 때문에 그것이 나올지 궁금해? 여기에 내가 사용하고있는 작업은 다음과 같습니다 내가 바보 인 것처럼STM32F4 PWM 램프
void TIM4_IRQHandler()
{
if (TIM_GetITStatus(TIM4, TIM_IT_Update) != RESET)
{
TIM_ClearITPendingBit(TIM4, TIM_IT_Update);
if (loop <= 8000) {
TIM4 -> CCR1 = CCR_i;
uint16_t y = CCR_i;
CCR_i = y + 1;
int x = loop;
loop = x + 1;
}
if (loop == 8001) {
TIM4 -> CCR1 = 0;
uint16_t x = CCR_i;
CCR_i = x + 1;
int c = loop;
loop = c + 1;
}
if (loop > 8001) {
int t;
for(t = 0; t < 10; t++){
// wait
}
GPIO_SetBits(GPIOG, GPIO_Pin_8);
//Stop2();
TIM_ITConfig(TIM4, TIM_IT_Update, DISABLE);
NVIC_DisableIRQ(TIM4_IRQn);
}
}
}