برای ساختن pwm از چهار کانال مقایسه و 3 کانال مکمل استفاده کرد که مجموع 7 کانال خروجی pwm هستش ولی برای pwm دلخواه از 4 کانال میشود استفاده کرد
در اول کار شما با دستور تایمر بیس اون و مقدار دهی میکنید مثل کد پایین
در این دستور کانتر شما به صورت افزایشی و در پریود 4096 بارگزاری شدهکد:TIM1_TimeBaseInit(0, TIM1_COUNTERMODE_UP, 4095, 0);
حالا ما با دستور
کانال مقایسه و کانال مکمل و به صورت خروجی در میاریم که مثلا در دستور بالا اگر پهنای پالس 1 ما تا مقدار 2048 هستش که دستور در خروجی TIME_CH1 ,TIM1_CHN ایجاد میشه و به این صورت ما موج pwm ساختیمکد:TIM1_OC1Init(TIM1_OCMODE_PWM2, TIM1_OUTPUTSTATE_ENABLE, TIM1_OUTPUTNSTATE_ENABLE, 2047, TIM1_OCPOLARITY_LOW, TIM1_OCNPOLARITY_HIGH, TIM1_OCIDLESTATE_RESET,
TIM1_OCNIDLESTATE_RESET);
با کد پایین میتونید مقدار کانال 1 تایمر 1 و هر مقداری کمتر از مقدار سکل برگذاری کنید تا موج با پهنای مختلف ببنید در خروجی کانال یک
در اخر من فایل مثال و قرار میدم تا بیشتر درک کنیدکد:while(i<4095){
TIM1_SetCompare1(i);
Delay(500);
i++;
}
i=0;