您好,
我无法理解 PWM 和预分频器...
如果我使用没有预分频器的 PWM、
一切都按 预期工作。
如果我使用密封剂,错误的地方……
TimerPrescaleSet (TIMER0_BASE,TIMER_Both,1);
我想这将会将/2除。
频率将为1kHz 而不是2kHz、但 PWM 占空比不再工作。
据我所知,我将有一个24位计数器(16位+ 8位预分频器),但它的作用是什么
负载和匹配、它们仍然是16位?
我必须做什么、才能将 PWM 与预分频器结合使用?
以 Hz 为单位的//PWM 频率
uint32_t freq = 2000;
int tmain()
{
//将系统时钟设置为80MHz
SysCtlClockSet (SYSCTL_SYSDIV_2_5|SYSCTL_USE_PLL|SYSCTL_OSC_MAIN|SYSCTL_XTAL_16MHz);
SysTickbege();
uint32_t 周期、dutyCycle;
周期= SysCtlClockGet ()/freq;
dutyCycle =周期2;
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOF);
SysCtlDelay(3);
GPIOPinConfigure (GPIO_PF1_T0CCP1);
GPIOPinTypeTimer (GPIO_PORTF_BASE、GPIO_PIN_1);
SysCtlPeripheralEnable (SYSCTL_Periph_TIMER0);
SysCtlDelay(3);
TimerPrescaleSet (TIMER0_BASE,TIMER_Both,1);
TimerConfigure (TIMER0_BASE、TIMER_CFG_SPLIT_PAGE|TIMER_CFG_B_PWM);
TimerLoadSet (TIMER0_BASE、TIMER_B、周期-1);
TimerMatchSet (TIMER0_BASE、TIMER_B、PERIOD );// PWM
TimerEnable (TIMER0_BASE、TIMER_B);
int i;
while (1)
{
for (i=1;i < (周期)-1;i++){
TimerMatchSet (TIMER0_BASE、TIMER_B、I);
SysCtlDelay (200);
}
}
}