你好
我使用 TM4C1294xl 来控制三个步进电机。 通常、需要 PWM 信号来进行移动步进。 对于加速器/去加速器、有必要增加/减少频率。
我已记下以下代码进行测试。
int main (void){ //激活端口 SysCtlPeripheralEnable (SYSCTL_Periph_GPIOF); SysCtlPeripheralEnable (SYSCTL_Periph_GPIOG); SysCtlPeripheralEnable (SYSCTL_Periph_GPIOOK); //切换到 PWM 模式 GPIOM6 PinConfigure (GPIO_PFT1_PWM4 );GPIOPM1_PWMPM1_PM1_PM1_PWMPM1_PM1_PM1_GP0PM1_BASE (GPIOM4);GPIOPM1_PWM0PM1_PWM0PM1_PM1_PM1_PM1_PM1_PM1_PM1_PM1_PM1_PM1_PM1_PM1_PM1_PM1_PM1_PM1_PM1_PM1_GPIOM4;GPI GPIOPinTypePWM (GPIO_PORTG_base、GPIO_PIN_1); GPIOPinTypePWM (GPIO_PORTK_base、GPIO_PIN_4); //在发生器上切换 SysCtlPeripheralEnable (SYSCTL_Periph_PWM0); PWMGenConfigure (PWM0_BASE、PWM_GEN_0、PWM_GEN_0、PWM0);/PWM0 (SYNC_MODE) PWM_GEN_2、PWM_GEN_MODE_DOWN | PWM_GEN_MODE_NO_SYNC);//PortG (generato2) PWMGenConfigure (PWM0_BASE、PWM_GEN_3、PWM_GEN_MODE_DOWN | PWM_GEN_MODE_NO_SYNC);//PortK (generator3) //设置频谱脉宽/频率 PWMGenPeriodSet (PWM0_BASE、PWM_GEN_0、100);//PortF (PWM0_BASE 、PWM0_Width1、PWM0_BASE) 50); PWMGenEnable (PWM0_BASE、PWM_GEN_0); PWMGenPeriodSet (PWM0_BASE、PWM_GEN_2、 400);//PortG PWMPulseWidthSet (PWM0_BASE、PWM_OUT_5、300); PWMGenEnable (PWM0_BASE、 PWM_GEN_2); PWMGenPeriodSet (PWM0_BASE、PWM_GEN_3、400);//PortK PWMPulseWidthSet (PWM0_BASE、 PWM_OUT_6、100); PWMGenEnable (PWM0_BASE、PWM_GEN_3); PWMOutputState (PWM0_BASE、 PWM_OUT_1_BIT | PWM_OUT_5_BIT | PWM_OUT_6_BIT,TRUE); }
我现在的问题是:是否可以即时更改每个信号的频率和占空比? 我已经尝试使用插入了单个命令的 for 循环、如下所示
for (i=1;i<400;i++){ PWMGenPeriodSet (PWM0_BASE、PWM_GEN_3、I); }
但没有成功。 唯一可以测量的是 PWM 输出变得危险。 它可在两者之间提供 PWM 信号、并可实现开关。
是否有人知道更好/有建议?
感谢您的响应!
大家好
