工具/软件:Code Composer Studio
大家好、
我使用 QEI 模块读取编码器、使用 PWM 第3代读取电机的生成 PWM。 当我不激活 PWM 模块时一切正常。 当我激活 PWM 模块时、QEI 模块读取错误的数字。
我认为配置 PWM 模块时出错了。
空 Config_PWM (空)
{
//配置 PWM 时钟以匹配系统
ROM_SysCtlPWMClockSet (SYSCTL_PWMDIV_1);
//启用此程序使用的外设。
ROM_SysCtlPeripheralEnable (SYSCTL_Periph_PWM1);//Tiva Launchpad 具有2个模块(0和1)和
ROM_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOF);
ROM_GPIOPinTypePWM (GPIO_PORTF_BASE、GPIO_PIN_3);
ROM_GPIOPinConfigure (GPIO_PF3_M1PWM7);
//5ms
Period=(SysCtlClockGet ()/20000)-1;
//配置 PWM 选项
PWMGenConfigure (PWM1_base、PWM_GEN_3、PWM_GEN_MODE_UP_DOWN | PWM_GEN_MODE_NO_SYNC);
PWMGenPeriodSet (PWM1_base、PWM_GEN_3、周期);
ROM_PWMOutputState (PWM1_base、PWM_OUT_7_bit、true);
//启用 PWM 发生器
ROM_PWMGenEnable (PWM1_base、PWM_GEN_3);
}
并使用以下函数更新 PID 控制器
空 PROCESS_PWM (浮点占空比)
{
if (占空比>0)
{
//dir =1.
GPIOPinWrite (GPIO_Porta_base、GPIO_PIN_4、GPIO_PIN_4);
PWMPulseWidthSet (PWM1_base、PWM_OUT_7、(uint32_t)(DutyCycle *周期));
}
其他
{
GPIOPinWrite (GPIO_Porta_base、GPIO_PIN_4、~(GPIO_PIN_4));
PWMPulseWidthSet (PWM1_base、PWM_OUT_7、(uint32_t)(-DutyCycle *周期));
}
}
此致、
Ngoc Phu