[導讀]01前言全局變量簡直就是嵌入式系統(tǒng)的戈蘭高地。沖突最激烈的雙方是:1.做控制的工程師;2.做非嵌入式的軟件工程師。02做控制的工程師特點他們普遍的理解就是“變量都寫成全局該有多方便”。我之前面試過一個非常有名的做控制實驗室里出來的PhD/Master,前前后后陸續(xù)有快十個人。面試...
01前言全局變量簡直就是嵌入式系統(tǒng)的戈蘭高地。沖突最激烈的雙方是:1. 做控制的工程師;2. 做非嵌入式的軟件工程師。02做控制的工程師特點他們普遍的理解就是“變量都寫成全局該有多方便”。我之前面試過一個非常有名的做控制實驗室里出來的PhD/Master,前前后后陸續(xù)有快十個人。面試問題是用C寫PID。到后面的幾位面試的時候我都覺得沒有看的意義了,因為全都寫的是同一個風格。大概就是這樣的:
float SetSpeed;
float err;
float err_last;
float Kp,Ki,Kd;
float integral;
float result;
float PID(float speed)
{
err=SetSpeed-speed;
integral =err;
result=Kp*err Ki*integral Kd*(err-err_last);
err_last=err;
return result;
}
代碼的特點就是所有的變量一定定義在函數(shù)外面。問他們?yōu)槭裁矗卮鹗恰叭肿兞糠奖阏{試”。事實上,在學校里做搞自動控制的人最重要的根本就是控制的結果,而不是代碼本身。代碼只要能工作就行。變量名污染,低耦合之類的和他們就不在同一個世界。進了公司有些人代碼質量會變好,但有的還是會延續(xù)之前的習慣。前公司代碼庫里面凡是看不懂的代碼一律都是那一兩個Control Engineer寫的,寫完了還會用自己的名字給函數(shù)命名的那種。要成為一個資深的嵌入式工程師相當難,一方面要有非常扎實的理論知識,同時也要有相當?shù)哪欠N大型的、高頻CPU、多層PCB板的設計經(jīng)驗。嵌入式硬件工程師要學的課程主要有模擬電路設計、數(shù)字電路設計、電磁波理論等。熟悉常用的放大電路、濾波電路、電源電路設計和分析。
03做非嵌入式的軟件工程師特點代碼的特點就是所有的靜態(tài)變量都不可以定義在.h文件里,必須寫在.c文件里以確保別的文件沒法訪問它們。別的文件真要訪問怎么辦?那就給每一個變量寫get/set函數(shù)?。栴}是靜態(tài)變量寫在.c文件里編譯器是沒法優(yōu)化get/set的。結果就大面積的變量訪問要花幾倍的CPU時間去做get/set的函數(shù)調用。嵌入式項目很多情況下對硬件的壓榨是很極端的,CPU利用率90%都不算什么,頂?shù)?7%都是有的。(注意下這些項目是實時性要求很高的,晚一個毫秒算不完都不行。不是跑在電腦上鼠標卡一卡也無所謂的。)然后為了封裝性,在代碼里面塞這么多get/set嗎?
04總結
總的來說,嵌入式軟件里大部分的代碼都是中斷驅動的,天生就有很多變量是沒法使用參數(shù)傳遞的。全局變量的存在,是因為正義站在這邊。但是,嵌入式軟件遠遠沒有特殊到不需要按照正常軟件工程方法去管理的地步。要真有人認為“嵌入式軟件只要能工作就成,代碼丑一點無所謂的”純粹是軟件工程水平不行,不是因為控制水平太高。全局變量一定是要用的,管理它們也很重要。一些基本的代碼規(guī)則:
- 如果只是文件內(nèi)調用,全局變量只能寫在這個.c文件里,不要寫進.h文件。
- 如果有文件外調用,全局變量要寫在.h文件里。
- .h里面的全局變量全局可讀,但是只有本文件組可以寫。別的文件要寫請調用set函數(shù)。
- 所有的全局變量無論在.h還是.c里面都要包成同名struct。哪怕只有一個變量也要寫進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變量在實際的項目中幾乎就是bug生成器,沒法簡單的reset。而且對unit test非常不友好。
END來源:網(wǎng)絡版權歸原作者所有,如有侵權,請聯(lián)系刪除。▍
掃描二維碼,關注更多精彩內(nèi)容
本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權益,請及時聯(lián)系本站刪除。
LED驅動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。
關鍵字:
驅動電源
在工業(yè)自動化蓬勃發(fā)展的當下,工業(yè)電機作為核心動力設備,其驅動電源的性能直接關系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護是驅動電源設計中至關重要的兩個環(huán)節(jié),集成化方案的設計成為提升電機驅動性能的關鍵。
關鍵字:
工業(yè)電機
驅動電源
LED 驅動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設備的使用壽命。然而,在實際應用中,LED 驅動電源易損壞的問題卻十分常見,不僅增加了維護成本,還影響了用戶體驗。要解決這一問題,需從設計、生...
關鍵字:
驅動電源
照明系統(tǒng)
散熱
根據(jù)LED驅動電源的公式,電感內(nèi)電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。
關鍵字:
LED
設計
驅動電源
電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動汽車的核心技術之一是電機驅動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機驅動系統(tǒng)中的關鍵元件,其性能直接影響到電動汽車的動力性能和...
關鍵字:
電動汽車
新能源
驅動電源
在現(xiàn)代城市建設中,街道及停車場照明作為基礎設施的重要組成部分,其質量和效率直接關系到城市的公共安全、居民生活質量和能源利用效率。隨著科技的進步,高亮度白光發(fā)光二極管(LED)因其獨特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...
關鍵字:
發(fā)光二極管
驅動電源
LED
在LED照明技術日益普及的今天,LED驅動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...
關鍵字:
LED照明技術
電磁干擾
驅動電源
開關電源具有效率高的特性,而且開關電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機重量也有所下降,所以,現(xiàn)在的LED驅動電源
關鍵字:
LED
驅動電源
開關電源
LED驅動電源是把電源供應轉換為特定的電壓電流以驅動LED發(fā)光的電壓轉換器,通常情況下:LED驅動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。
關鍵字:
LED
隧道燈
驅動電源
LED驅動電源在LED照明系統(tǒng)中扮演著至關重要的角色。由于LED具有節(jié)能、環(huán)保、長壽命等優(yōu)點,使得LED照明在各個領域得到廣泛應用。然而,LED的電流、電壓特性需要特定的驅動電源才能正常工作。本文將介紹常用的LED驅動電...
關鍵字:
LED驅動電源
led照明
LED驅動電源是把電源供應轉換為特定的電壓電流以驅動LED發(fā)光的電源轉換器,通常情況下:LED驅動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。
關鍵字:
LED
驅動電源
高壓工頻交流
種種跡象都在表明,半導體行業(yè)或已提前進入寒冬時期,越來越多的廠商開始扛不住了……
關鍵字:
LED
半導體
驅動電源
崧盛股份9日發(fā)布投資者關系活動記錄表,就植物照明發(fā)展趨勢、行業(yè)壁壘等問題進行分享。植物照明未來市場需求廣闊崧盛股份指出,植物照明將會走向長期產(chǎn)業(yè)領域。主要原因有三:第一,LED植物照明賦能終端種植更具有經(jīng)濟價值。由于LE...
關鍵字:
崧盛股份
驅動電源
在當今高度發(fā)展的技術中,電子產(chǎn)品的升級越來越快,LED燈技術也在不斷發(fā)展,這使我們的城市變得豐富多彩。 LED驅動電源將電源轉換為特定的電壓和電流,以驅動LED發(fā)光。通常情況下:LED驅動電源的輸入包括高壓工頻交流電(即...
關鍵字:
LED
驅動電源
高壓直流
人類社會的進步離不開社會上各行各業(yè)的努力,各種各樣的電子產(chǎn)品的更新?lián)Q代離不開我們的設計者的努力,其實很多人并不會去了解電子產(chǎn)品的組成,比如LED電源。
關鍵字:
LED
驅動電源
低壓直流
隨著科學技術的發(fā)展,LED技術也在不斷發(fā)展,為我們的生活帶來各種便利,為我們提供各種各樣生活信息,造福著我們?nèi)祟?。LED驅動電源實際上是一種電源,但是它是一種特定的電源,用于驅動LED發(fā)射帶有電壓或電流的光。 因此,LE...
關鍵字:
LED
驅動電源
電流
LED燈作為一種新型節(jié)能和無污染光源,由于其特有的發(fā)光照明特性,在現(xiàn)代照明應用中發(fā)揮著革命性的作用。作為 LED 照明產(chǎn)業(yè)鏈中最為核心的部件之一,LED 驅動電源的驅動控制技術所存在的可靠性低、成本高等典型問題一直制約著...
關鍵字:
多路
LED
驅動電源
隨著社會的快速發(fā)展,LED技術也在飛速發(fā)展,為我們的城市的燈光煥發(fā)光彩,讓我們的生活越來越有趣,那么你知道LED需要LED驅動電源嗎?那么你知道什么是LED驅動電源嗎?
關鍵字:
LED
開關電源
驅動電源
早前有新聞稱,Cree在2018年開始宣布轉型高科技半導體領域,并一邊逐漸脫離照明與LED相關業(yè)務,一邊持續(xù)投資半導體。在今日,Cree宣布與SMART Global Holdings, Inc.達成最終協(xié)議,擬將LED...
關鍵字:
cree
led照明