有一问题需要补充下:TIME_TCK()函数需要自已添加,他的功能大意是在自整定的1阶段时需要外部定时器计时,这个定时器要跟程序循环周期参数做比较,差值超过5%整定就会失败的。TIME_TCK()函数只要在外面用1ms的定时器就可以了。另外在C原程序中将//tTime = TIME_TCK();去掉注释,我没记错的话应该是两个地方。例如:
void TIM6_DAC_IRQHandler(void)//1ms中断程序
{
TIM_ClearFlag(TIM6, TIM_FLAG_Update);
if(Time_zzd++>=2147483647)
Time_zzd=0;
}
在PID程序中添加以下函数:
static s32 TIME_TCK(void)
{
return (Time_zzd);
}
转载 |