精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

3天內不再提示

讓單片機代碼性能起飛的七大技巧

無際單片機編程 ? 來源:無際單片機編程 ? 2024-11-16 10:21 ? 次閱讀

單片機的程序比軟開少一些,真正想編寫出高效的代碼,還是要積累很多年的。

在做研發工程師的10年里,我經歷過幾個公司,看過很多工程師寫的代碼,但真正能讓我跪著看完的,極少。哪怕是大廠工程師,也會有讓人笑掉大牙的代碼。

高效的背后,有很多學問,需要有一定的數學功底,對編譯器有較深的了解,懂匯編

具備這些能力,寫出來的代碼,才能讓cpu執行這段代碼所花費的時間,以及占用的ROMRAM資源更少。

然而,如果把項目每個細節,都優化到高效的程度,花費的時間,是平時的兩倍。

所以,我們在做項目時,一般只優化核心功能,才能趕上項目的進度,除非經驗相當豐富。

下面分享幾點高效代碼的技巧:1.使用位操作代替算術操作,因為位操作更快。

40e8cb68-9080-11ef-a511-92fbcf53809c.png

還有就是用左移、右移替代乘除法。 比如a=b*256,可以改成a = b<<8 比如a=b/256,可以改成a = b>>8

2.避免不必要的操作去除代碼中不必要的操作,如多余的變量賦值、函數調用等。

40fe4272-9080-11ef-a511-92fbcf53809c.png

3.控制數據類型大小特別是盡量別用float,浮點運算通常需要更多的CPU周期和內存空間,因為浮點數的表示和運算比整數復雜,除非單片機內置了硬件浮點單元(FPU)。 能用unsigned就不用signed,無符號整數的運算可能比有符號整數更快,因為不需要處理符號位。 能用char就不用int,較小的數據類型在處理和傳輸時更快,因為它們占用的內存和帶寬更少。特別對于存儲大量數據的數組或緩沖區,使用 char 類型可以顯著減少內存占用。

4.利用硬件資源比如說STM32單片機,可以利用DMA傳輸數據,減少CPU負載。 5.代碼重用 一些重復的代碼,通過函數或宏來重用代碼。

4107bfdc-9080-11ef-a511-92fbcf53809c.png

6.自加、自減指令用i--、i-=1、i++、i+=1、去替代i = i-1,i=i+1的操作,有些編譯器對前者進行了優化,效率更高。 7.優化算法以計算1到100的和為例。 我們可能會首先想到使用循環,來寫程序:

4116e386-9080-11ef-a511-92fbcf53809c.png

這種方法雖然直觀,但在效率上可能不是最優的。那怎么去優化?這時候就要考驗工程師的數學功底了。 可以根據等差數列求和公式,1到100的和可以表示為:

4125aeac-9080-11ef-a511-92fbcf53809c.png

n是序列的最后一項,即100。將這個公式應用到代碼中:

413879d8-9080-11ef-a511-92fbcf53809c.png

對以上兩種實現代碼的總結:盡管程序都能得到相同的結果,但是第二種方法在運行效率上明顯優于第一種。因為它避免了循環的開銷,直接通過數學公式計算出結果。 在編寫單片機代碼時,盡量通過數學方法,或其他算法技巧,提高程序的執行效率。 這不僅可以減少了CPU的計算時間,還能減少程序占用的內存空間,從而提高整體性能。

插個題外話,之前很多老鐵問我,數學不好,可以學單片機嗎?

我覺得這就是一個很好的例子,數學不是門檻,而是天花板。

第一種實現方式,是小學算數低,但效率低。

第二種,則需要一定的數學能力,但效率高。

那同樣都能實現功能,效率低點就低點唄,有什么所謂?

其實這個會間接影響到硬件成本。

比如數學功底好的,可以用低端單片機去實現功能,而數學功底不好的,寫出來代碼效率低,則需要性能更強的單片機支撐。

不過,很多產品,對效率的要求并沒這么苛刻,哪怕用第一種方式,照樣沒問題。

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

    關注

    6032

    文章

    44525

    瀏覽量

    633247
  • 程序
    +關注

    關注

    116

    文章

    3778

    瀏覽量

    80858
  • 代碼
    +關注

    關注

    30

    文章

    4753

    瀏覽量

    68368

原文標題:讓單片機代碼性能起飛的七大技巧,從位操作到算法優化

文章出處:【微信號:nanshuqg,微信公眾號:無際單片機編程】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    全球七大主流單片機詳解

    單片機是Atmel公司推出的較為新穎的單片機,其顯著的特點為高性能、高速度、低功耗。它取消機器周期,以時鐘周期為指令周期,實行流水作業。
    發表于 11-27 17:22 ?7.7w次閱讀

    《提高測量精度的七大技巧》

    偶然間在其他網站上看到的《提高測量精度的七大技巧》資源包,覺得還不錯,挺有用的,大家可以去看看!資源包將討論提高測量精度的七大技巧,涉及傳感器技術,隔離屏蔽技術,硬件指標考量,后端信號處理等
    發表于 08-05 18:00

    轉: 七大主流單片機最細剖析

    。這七大主流單片機到底哪家強?相信現在的你應該知道了吧~~也有朋友會說瑞薩單片機是銷量最大的,且在車載電子行業應用較多,穩定性好,但是我個人不怎么喜歡小日本的產品,所以也沒用過瑞薩的東西。這個因人而異
    發表于 06-12 11:10

    七大主流單片機最細剖析

    單片機現在可謂是鋪天蓋地,種類繁多,讓開發者們應接不暇,發展也是相當的迅速,從上世紀80年代,由當時的4位8位發展到現在的各種高速單片機…… 各個廠商們也在速度、內存、功能上此起彼伏,參差不齊
    發表于 07-05 13:05

    業界七大主流單片機最細剖析

    渴望超低功耗,MSP430肯定不會你失望;如果你想支持國產,STC會你興奮…  這七大主流單片機到底哪家強?相信現在的你應該知道了吧~~  也有朋友會說瑞薩
    發表于 05-26 19:34

    VS-RK3399超強七大性能優勢

    RK3399芯片資料簡介,RK3399硬件開發資料VS-RK3399超強七大性能優勢
    發表于 02-05 07:55

    51單片機應用實例及源代碼

    51單片機應用實例及源代碼
    發表于 12-16 12:15 ?107次下載
    51<b class='flag-5'>單片機</b>應用實例及源<b class='flag-5'>代碼</b>

    單片機教程:單片機的特殊功能寄存器

    單片機教程:單片機的特殊功能寄存器 通過前面的學習,我們已知單片機的內部有ROM、有RAM、有并行I/O口,那么,除了這些東西之外,單片機
    發表于 05-15 23:01 ?2252次閱讀
    <b class='flag-5'>單片機</b>教程<b class='flag-5'>七</b>:<b class='flag-5'>單片機</b>的特殊功能寄存器

    51單片機與串口通信代碼

    51單片機與串口通信的代碼設計
    發表于 11-09 17:47 ?180次下載

    七大主流單片機優缺點比較

    就是一般常用的單片機的比較,有優點和缺點。
    發表于 06-17 15:42 ?2次下載

    章AVR單片機的應用

    章AVR單片機的應用
    發表于 09-21 11:41 ?4次下載
    第<b class='flag-5'>七</b>章AVR<b class='flag-5'>單片機</b>的應用

    單片機系統開發設計的七大規則

    單片機的能力的關鍵就在軟件設計者編寫的軟件上。只有充分地了解到單片機的能力,才不會做出“冗余”的系統設計。而采用許多的外圍芯片來實現單片機能實現的功能。這樣做,即增加了系統成本,也可能會降低了系統的可靠性。
    發表于 11-19 15:35 ?3742次閱讀

    使用51單片機驅動段LED數碼管的代碼免費下載

    本文檔的主要內容詳細介紹的是使用51單片機驅動段LED數碼管的代碼免費下載。
    發表于 07-02 17:42 ?9次下載
    使用51<b class='flag-5'>單片機</b>驅動<b class='flag-5'>七</b>段LED數碼管的<b class='flag-5'>代碼</b>免費下載

    新唐單片機代碼評審總結

    昨晚上,我們一個同事組織了一個小會議,大家一起討論了一個項目的單片機代碼,這個單片機用的是新唐單片機,期間大家也討論了一些問題,總結一下,希望對寫
    發表于 12-01 16:06 ?15次下載
    新唐<b class='flag-5'>單片機</b><b class='flag-5'>代碼</b>評審總結

    單片機解析g代碼的方法

    單片機是一種完整的計算機系統,它集成了處理器、存儲器、輸入輸出接口等基本的計算機組成部分。單片機應用廣泛,可以用于控制各種電子設備。在單片機中,G代碼是一種常用的數控編程語言,用于控制
    的頭像 發表于 12-22 14:15 ?1675次閱讀