01
前言
02
做控制的工程師特點(diǎn)
float SetSpeed;
float err;
float err_last;
float Kp,Ki,Kd;
float integral;
float result;
float PID(float speed)
{
err=SetSpeed-speed;
err; =
result=Kp*err+Ki*integral+Kd*(err-err_last);
err_last=err;
return result;
}
03
做非嵌入式的軟件工程師特點(diǎn)
04
總結(jié)
-
如果只是文件內(nèi)調(diào)用,全局變量只能寫在這個.c文件里,不要寫進(jìn).h文件。 -
如果有文件外調(diào)用,全局變量要寫在.h文件里。 -
.h里面的全局變量全局可讀,但是只有本文件組可以寫。別的文件要寫請調(diào)用set函數(shù)。 -
所有的全局變量無論在.h還是.c里面都要包成同名struct。哪怕只有一個變量也要寫進(jìn)struct里面。比如PID.c里面有一個pid_S,PID.h里面有個PID_S。這樣其他人不僅可以立即識別出一個變量是project內(nèi)global/文件內(nèi)static/函數(shù)內(nèi)local,同時還能輕松追溯到這個函數(shù)是屬于哪個文件的。 -
不要寫函數(shù)內(nèi)的static變量。函數(shù)內(nèi)的static變量在實(shí)際的項目中幾乎就是bug生成器,沒法簡單的reset。而且對unit test非常不友好。
-END-
推薦閱讀
免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺僅提供信息存儲服務(wù)。文章僅代表作者個人觀點(diǎn),不代表本平臺立場,如有問題,請聯(lián)系我們,謝謝!