图一是我自己写的逆运动学函数,可以看到有三条算式pypxpz。现在的状态是运行不了的,会卡死在函数里面的一个Delay_ms里面(卡死在systick->crtl这一步),如下图。但是当我删除pz,py,px任意一条算式,或者删除for循环,函数都能正常运行(Delay_ms不会卡死)。下图是delay函数。
这些函数我在几个小时前测试过,全部都是能用的,但是后来我加入了蓝牙模块,将这些函数放进串口接收函数的中断函数里调用,但是调用不成功,也是在delay那里卡死(systick->crtl那里死循环)。然后当我去掉串口,拔掉蓝牙后,就发生了上的情况,连独立调用都不成功了,然后换过板子试过,也是如此,可以排除板子问题。唯一解决问题的办法是改掉delay的时钟源。但是改完之后只有上述的函数运行速度快了1000倍,所以要在函数里加Delay_ms(100000)才能正常使用(同样的,如果去掉某算式,或者去掉循环,函数恢复正常速度)。总结问题如下:
时钟源改成FCLK后的Delay_ms:
目标是不需要去除任何代码也能成功运行。猜测是算力不足?或者代码量过大?嵌套过多导致?板子是合泰公司的ht32f52352,基本逻辑架构和stm32f1是一样的。