我正在使用 CCS 中的"Stack Usage"工具来了解代码中占用最多空间的部分。 我包含一个头文件、其中除其他外、定义了当前代码未调用的 Park 和逆向 Park 变换函数。 这些器件内的正弦和余弦运算显示出非常大的堆栈使用量。
问题1:"Stack Usage"函数是否显示函数的栈使用情况、无论它们是否包含在最终可执行文件中? 如果没有、为什么这些未使用的函数会显示在我的堆栈使用中?
问题2:由于我使用的是启用了浮点支持的 F28379D、正弦和余弦函数应分别使用636字节的栈吗? 技术简介 SPRY288B 举例说明、帕克变换只需短短13个 CPU 周期。 我意识到我在 math.h 中使用正弦和余弦的实现可能没有那么高效、但是这么大的堆栈使用使我怀疑正在进行一个长而复杂的近似、并且可能会有问题。
void control_ab_to_dq (comp_num * p_ab,
float * p_theta,
dq_quantity * p_dq)
{
p_dq->d = p_ab->real*cos(*p_theta) + p_ab->imag*sin(*p_theta);
p_dq->q = p_ab->real*-sin(*p_theta) + p_ab->imag*cos(*p_theta);
return;
}
