日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > 原創(chuàng) > 振南技術干貨集(風云錄)
[導讀]memcpy函數的功能是用來作內存搬運,就是將數據從一個數組賦值到另一個數組。它的實現很簡單:

memcpy的效率

memcpy函數的功能是用來作內存搬運,就是將數據從一個數組賦值到另一個數組。它的實現很簡單:

但是這種實現方式,其實是比較膚淺而低效的。作為嵌入式或硬件工程師,如果對上面的代碼看不出什么問題的話,那可能要好好找找自身的原因。

上面的代碼,對CPU數據總線帶寬的利用率不高,我們把它改成這樣:

改進后的代碼最大限度的利用了CPU數據總線帶寬,每次傳輸多個字節(jié)(如32位平臺為4字節(jié))。這一實例告訴我們:C語言,尤其是嵌入式C語言很多時候需要考慮硬件層面的因素,如CPU總線、內存結構等。

[]的本質

當我們想取出一個數組中的某個元素時,我們會用到[],采用下標的方式。如下例:

int a[3]={1,2,3};

a[1]; //數組a的第2個元素

其實我們可以用其它方式取出這個元素,即*(a+1)。可以看到[]與*,在功能上有相似之處。其實[]并不限于與數組搭配訪問數組元素,它的實質是:訪問以指針所指向的地址為開始地址,以其下標為偏移量的存儲單元中的數據,如圖2.12所示。

圖2.12 []的實質其實就是所謂的“基址偏移量取值”

上圖可能顛覆了一些人對[]的認識,下標還能是負數?[]可以在一個開始地址后面去取數據,為什么不能在它前面取數據呢?我們可以理解[]是對指針加減和取值操作的綜合。

認清了[]的實質,再加上對C語言的精髓--指針深刻的理解,我們編程將會非常靈活,肆意揮灑。

#與##(串化與連接)

C語言中的#與##可能很多人都不了解,更沒有用過,因為在一般的教材上都沒有對它們的介紹。但是把它們用好了,也能使我們的代碼別有一番格調。

串化,在宏定義中#可以將宏參數轉換為字符串,即在宏參數的開頭和末尾添加引號。似乎有些雞肋,但是如果看到別人的代碼有用到串化的時候,我們需要能夠看懂。

再來看一下連接符##,它用來將參數和其它的內容連接起來,如下例:

#define CON1(a, b) a##e##b#define CON2(a, b) a##b##00

printf("%f\n", CON1(8.5, 2));printf("%d\n", CON2(12, 34));

printf("%f\n", 8.5e2); //展開后的效果

printf("%d\n", 123400); //展開后的效果

我在很多ARM官方評估板的配套代碼中看到過大量串化與連接的應用,當時我并不知道C語言還有串化連接這些東西(雖然我已經用C語言有十幾年了),所以有些看不明白。通過百度學習了一下#與##,這才懂了。所以,C語言學得多精都不為過,很多知識我們可能一輩子都不會用到,但是不代表我們可以不知道,因為別人在用。

OK,關于C語言方面的一些常見問題、非常規(guī)操作以及認知誤區(qū)振南就講這么多。C語言其實是博大精深,還是那句話:“學得多精都不為過!”我一直把嵌入式工程師比喻成“能與硬件對話的靈媒”,我們所使用的語言就是C語言。我們自認為對C語言已經足夠了解了,足夠精通了,但是我們又會發(fā)現在實際開發(fā)過程中,會遇到很多新的問題,很多問題是與C語言本身相關的。

所以記?。骸皩W海無涯!” 有C語言方面的問題,歡迎與振南來溝通交流,我自己也在不斷學習的過程中。

聲明:該篇文章為本站原創(chuàng),未經授權不予轉載,侵權必究。
換一批
延伸閱讀

LED驅動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關鍵字: 驅動電源

在工業(yè)自動化蓬勃發(fā)展的當下,工業(yè)電機作為核心動力設備,其驅動電源的性能直接關系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護是驅動電源設計中至關重要的兩個環(huán)節(jié),集成化方案的設計成為提升電機驅動性能的關鍵。

關鍵字: 工業(yè)電機 驅動電源

LED 驅動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設備的使用壽命。然而,在實際應用中,LED 驅動電源易損壞的問題卻十分常見,不僅增加了維護成本,還影響了用戶體驗。要解決這一問題,需從設計、生...

關鍵字: 驅動電源 照明系統(tǒng) 散熱

根據LED驅動電源的公式,電感內電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關鍵字: LED 設計 驅動電源

電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產業(yè)的重要發(fā)展方向。電動汽車的核心技術之一是電機驅動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機驅動系統(tǒng)中的關鍵元件,其性能直接影響到電動汽車的動力性能和...

關鍵字: 電動汽車 新能源 驅動電源

在現代城市建設中,街道及停車場照明作為基礎設施的重要組成部分,其質量和效率直接關系到城市的公共安全、居民生活質量和能源利用效率。隨著科技的進步,高亮度白光發(fā)光二極管(LED)因其獨特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關鍵字: 發(fā)光二極管 驅動電源 LED

LED通用照明設計工程師會遇到許多挑戰(zhàn),如功率密度、功率因數校正(PFC)、空間受限和可靠性等。

關鍵字: LED 驅動電源 功率因數校正

在LED照明技術日益普及的今天,LED驅動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關鍵字: LED照明技術 電磁干擾 驅動電源

開關電源具有效率高的特性,而且開關電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機重量也有所下降,所以,現在的LED驅動電源

關鍵字: LED 驅動電源 開關電源

LED驅動電源是把電源供應轉換為特定的電壓電流以驅動LED發(fā)光的電壓轉換器,通常情況下:LED驅動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關鍵字: LED 隧道燈 驅動電源
關閉