工具/软件:Code Composer Studio
尊敬的团队
我的客户使用 计时器 PWM 和 PWM 模块生成250kHz 方波。
他用示波器进行了测试、发现 PWM 模块的方波频率非常精确、但计时器 PWM 生成的方波在249.8~250.2kHz 之间跳转。
问题是什么? 请提供帮助、因为我没有 TM4C129电路板。
uint32_t g_cpuFrequency = SysCtlClockFreqSet ((SYSCTL_XTAL_25MHz | SYSCTL_OSC_MAIN | SYSCTL_USE_PLL | SYSCTL_CFG_VCO_480)、120000000); //计时 器 ROM_SysCtlPeripheralEnable (TimsctL_Perip_PLL | SYSCT3_GPIOTP_1)、120000000;// Timer_GPIOPTMCTRO 1 (Timer_PIN_1引脚 1);GPIOPTM1_GPIO1 (Timer_PI_1) GPIO_PIN_3); ROM_TimerConfigure (Timer1_base、TIMER_CFG_SPLIT_PAIR | TIMER_CFG_B_PWM); ROM_TimerLoadSet (Timer1_base、TIMER_B、 480); ROM_TimerMatchSet (Timer1_base、timer_B、 ROM_TimerLoadGet (Timer1_base、timer_B)/ 2); ROM_TimerEnable (Timer1_base、timer_B); //PWM ROM_SysCtlPeripheralEnable (SYSCTL_Periph_PWM0); ROM_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOF); ROM_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOK); ROM_GPIOPinConfigure (GPIO_PF0_M0PWM0); ROM_GPIOPinConfigure (GPIO_PF2_M0PWM2); ROM_GPIOPinConfigure (GPIO_PK4_M0PWM6); ROM_GPIOPinTypePWM (GPIO_PORTF_BASE、GPIO_PIN_0|GPIO_PIN_2); ROM_GPIOPinTypePWM (GPIO_PORTK_base、GPIO_PIN_4); ROM_PWMClockSet (PWM0_BASE、PWM_SYSCLK_DIV_2); ROM_PWMGenConfigure (PWM0_BASE、PWM_GEN_0、 PWM_GEN_MODE_UP_DOWN | PWM_GEN_MODE_NO_SYNC); ROM_PWMGenConfigure (PWM0_BASE、PWM_GEN_1、PWM_GEN_MODE_UP_DOWN | PWM_GEN_MODE_NO_SYNC); ROM_PWMGenConfigure (PWM0_BASE、 PWM_GEN_3、PWM_GEN_MODE_UP_DOWN | PWM_GEN_MODE_NO_SYNC); ROM_PWMGenPeriodSet (PWM0_BASE、PWM_GEN_0、240); // 120M/2/240 = 250K ROM_PWMGenPeriodSet (PWM0_BASE、PWM_GEN_1、240); ROM_PWMGenPeriodSet (PWM0_BASE、PWM_GEN_3、 480); ROM_PWMPulseWidthSet (PWM0_BASE、PWM_OUT_0、 ROM_PWMGenPeriodGet (PWM0_BASE、PWM_GEN_0)/ 2); ROM_PWMPulseWidthSet (PWM0_BASE、PWM_OUT_2、 ROM_PWMGenPeriodGet (PWM0_BASE、PWM_GEN_1)/ 2); ROM_PWMPulseWidthSet (PWM0_BASE、 PWM_OUT_6、 ROM_PWMGenPeriodGet (PWM0_BASE、PWM_GEN_3)/ 2); ROM_PWMOutputState (PWM0_BASE、PWM_OUT_0_BIT、 TRUE); ROM_PWMOutputState (PWM0_BASE、PWM_OUT_2_BIT、TRUE); ROM_PWMOutputState (PWM0_BASE、 PWM_OUT_6_BIT、TRUE);