亚洲精品久久久久久久久久久,亚洲国产精品一区二区制服,亚洲精品午夜精品,国产成人精品综合在线观看,最近2019中文字幕一页二页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

做控制的工程師特點

電子設計 ? 來源:電子設計 ? 作者:電子設計 ? 2022-02-17 16:20 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

前言

全局變量簡直就是嵌入式系統(tǒng)的戈蘭高地。沖突最激烈的雙方是:
1. 做控制的工程師;
2. 做非嵌入式的軟件工程師。

做控制的工程師特點

他們普遍的理解就是“變量都寫成全局該有多方便”。我之前面試過一個非常有名的做控制實驗室里出來的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ù)字電路設計、電磁波理論等。熟悉常用的放大電路、濾波電路、電源電路設計和分析。

做非嵌入式的軟件工程師特點

代碼的特點就是所有的靜態(tài)變量都不可以定義在.h文件里,必須寫在.c文件里以確保別的文件沒法訪問它們。

別的文件真要訪問怎么辦?那就給每一個變量寫get/set函數(shù)??!問題是靜態(tài)變量寫在.c文件里編譯器是沒法優(yōu)化get/set的。結果就大面積的變量訪問要花幾倍的CPU時間去做get/set的函數(shù)調用。嵌入式項目很多情況下對硬件的壓榨是很極端的,CPU利用率90%都不算什么,頂?shù)?7%都是有的。(注意下這些項目是實時性要求很高的,晚一個毫秒算不完都不行。不是跑在電腦上鼠標卡一卡也無所謂的。)然后為了封裝性,在代碼里面塞這么多get/set嗎?

總結

總的來說嵌入式軟件里大部分的代碼都是中斷驅動的,天生就有很多變量是沒法使用參數(shù)傳遞的。全局變量的存在是因為正義站在這邊。但是嵌入式軟件遠遠沒有特殊到不需要按照正常軟件工程方法去管理的地步。要真有人認為“嵌入式軟件只要能工作就成,代碼丑一點無所謂的”純粹是軟件工程水平不行,不是因為控制水平太高。

全局變量一定是要用的,管理它們也很重要。一些基本的代碼規(guī)則:

① 如果只是文件內調用,全局變量只能寫在這個.c文件里,不要寫進.h文件。
② 如果有文件外調用,全局變量要寫在.h文件里。
③ .h里面的全局變量全局可讀,但是只有本文件組可以寫。別的文件要寫請調用set函數(shù)。
④ 所有的全局變量無論在.h還是.c里面都要包成同名struct。哪怕只有一個變量也要寫進struct里面。比如PID.c里面有一個pid_S,PID.h里面有個PID_S。這樣其他人不僅可以立即識別出一個變量是project內global/文件內static/函數(shù)內local,同時還能輕松追溯到這個函數(shù)是屬于哪個文件的。
⑤ 不要寫函數(shù)內的static變量。函數(shù)內的static變量在實際的項目中幾乎就是bug生成器,沒法簡單的reset。而且對unit test非常不友好。

審核編輯:何安

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • C語言
    +關注

    關注

    183

    文章

    7636

    瀏覽量

    144223
  • 單片機開發(fā)

    關注

    3

    文章

    466

    瀏覽量

    20517
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    硬件工程師面試必會:10個核心考點#硬件設計 #硬件工程師 #電路設計 #電路設計

    硬件工程師
    安泰小課堂
    發(fā)布于 :2025年09月23日 18:00:33

    做了電子工程師之后,最好拍的視頻出現(xiàn)了#硬件設計 #電子DIY #電子工程師

    電子工程師
    安泰小課堂
    發(fā)布于 :2025年06月24日 17:45:57

    (仰天長嘯)為什么受傷的總是硬件工程師...#MDD#MDD辰達半導體 #電子工程師

    電子工程師
    MDD辰達半導體
    發(fā)布于 :2025年04月27日 18:21:47

    問,成為硬件工程師需要幾只手?#硬件工程師 #YXC晶振 #揚興科技 #搞笑

    硬件工程師
    揚興科技
    發(fā)布于 :2025年04月25日 17:15:37

    Allegro工程師能力升級建議 工程師技能如何升級進階

    根據(jù)Cadence認證體系及中國企業(yè)需求,Allegro工程師能力分三級,分別是初級、中級、高級工程師。那么這三種工程師技能如何升級進階? ? 1、初級工程師(Layout基礎) ①六
    的頭像 發(fā)表于 03-31 11:39 ?1125次閱讀

    硬件工程師:回答我!#回答我 #硬件工程師 #YXC晶振 #揚興科技

    硬件工程師
    揚興科技
    發(fā)布于 :2025年03月25日 18:46:59

    一招拿捏電子工程師#被AI拿捏了 #電子工程師 #電子電工

    電子工程師
    安泰小課堂
    發(fā)布于 :2025年03月25日 17:30:51

    硬件工程師的終極幻想:焊板子焊上人生巔峰!#半導體器件 #硬件工程師 #MDD辰達半導體

    硬件工程師
    MDD辰達半導體
    發(fā)布于 :2025年02月24日 19:00:35

    硬件工程師工作前VS工作后!抱歉!是我想的太簡單了!# #電工 #電子愛好者

    硬件工程師
    MDD辰達半導體
    發(fā)布于 :2025年01月08日 18:15:18

    笑死,掌握一眼識別資深硬件工程師的訣竅了!# #電路知識 #電工 #硬核拆解

    硬件工程師
    MDD辰達半導體
    發(fā)布于 :2024年12月20日 17:48:17