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

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

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

3天內不再提示

在單片機編程中什么時候需要用到enum呢

2oON_changxuemc ? 來源:未知 ? 作者:胡薇 ? 2018-11-28 09:18 ? 次閱讀

當變量的數值在幾個范圍之間,如一個week變量取值只有Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday。這樣用enum比較好。當然也可以用define.但是define維護起來比較麻煩, 適合變量的數值范圍值較少的時候。

1、用enum關鍵字說明常量(即說明枚舉常量)有以下幾點好處:

(1) 使程序更容易維護和直觀。例如,下面定義的枚舉是描述UART支持的傳輸bit位數,從枚舉類型的定義就可以知道UART模塊提供的傳輸bit的幾種模式。

enum{usartDatabits4=USART_FRAME_DATABITS_FOUR,/*4databits(notavailableforUART).*/usartDatabits5=USART_FRAME_DATABITS_FIVE,/**《5databits(notavailableforUART).*/usartDatabits6=USART_FRAME_DATABITS_SIX,/**《6databits(notavailableforUART).*/usartDatabits7=USART_FRAME_DATABITS_SEVEN,/**《7databits(notavailableforUART).*/usartDatabits8=USART_FRAME_DATABITS_EIGHT,/**《8databits.*/usartDatabits9=USART_FRAME_DATABITS_NINE,/**《9databits.*/usartDatabits10=USART_FRAME_DATABITS_TEN,/**《10databits(notavailableforUART).*/}USART_Databits_Enum;

(2)使程序更安全

比如,在寫底層驅動是,向上層提供一個UART初始化函數UartInit(uint32 baudrate , uint32 bit)在調用該函數時,可能因為程序員不了解模塊UART支持的傳輸bit模式而提供了錯誤的bit參數。避免此類現象,我們當然也可以在UarTInit()函數中對bit范圍進行檢查。如果參數取值是連續的還好,如果不連續使用多個if-else或switch。將耗費一定的ROMCPU時間。

我們可以將函數定義為UarTInit(uint32 baudrate , USART_Databits_Enum bit)。一來我們可以通過查看USART_Databits_Enum枚舉類型很容易知道UART支持的傳輸bit模式。另一方面在編譯的時候就可以避免傳遞錯誤的參數。

2、枚舉與宏定義的區別和聯系:

宏和枚舉之間的差別主要在作用的時期和存儲的形式不同,宏是在預處理的階段進行替換工作的,它替換代碼段的文本,程序運行的過程中宏已不存在了。而枚舉是在程序運行之后才起作用的,枚舉常量存儲在數據段的靜態存儲區里。(在IAR編譯環境中,枚舉類型默認為字符型,在M3內核下編程,為了減少不必要的字符擴展指令,可以用?enum_is_int指令來強制使所有的枚舉類型為4bytes。)

但也不能就此說宏比枚舉好,如果需要定義非常多的常量,用一條enum {…。.}明顯比一大堆define更清晰,枚舉也可以用來定義一些特殊類型,比如Bool,如: type enum {FALSE,TRUE} Bool;

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

    關注

    6032

    文章

    44516

    瀏覽量

    633044
  • 編程
    +關注

    關注

    88

    文章

    3592

    瀏覽量

    93596
  • ENUM
    +關注

    關注

    0

    文章

    6

    瀏覽量

    8285

原文標題:枚舉常量在單片機編程中有何好處

文章出處:【微信號:changxuemcu,微信公眾號:暢學單片機】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    什么時候需要用到no phase reversal運放?

    什么時候需要用到no phase reversal運放? 此時不用的話會造成什么影響?
    發表于 08-02 14:09

    單片機或PLC需要用的東西是什么

    單片機或PLC需要用的東西一個580元的PLC,加了一根網線,加了個幾十元的萬用表與鉗子就可以賣1150,這是因為經驗不足和自己圖省事所以總結一下學習單片機或plc需要依賴的器材,但
    發表于 07-01 07:21

    STM32單片機需要用到的C語言知識有哪些

    STM32單片機需要用到的C語言知識一、基本內容二、疑問點1.聲明變量2.預處理一、基本內容二、疑問點1.聲明變量const:可創建全局常量 局部常量, 數字常量, 數組常量 結構常量. 用法
    發表于 07-15 09:24

    一個系統需要用到多個按鍵的時候怎么辦?

    需要用到多個按鍵的時候怎么辦?就像數碼管一樣,該如何解決多個按鍵輸入問題?這里就引入矩陣鍵盤的概念:鍵盤按鍵數量較多時,為了減少I/O
    發表于 01-21 07:49

    D語言編寫單片機應用需要用到的技巧是什么?

    D語言編寫單片機應用需要用到的技巧是什么?
    發表于 01-25 07:02

    D語言編寫單片機應用需要用到的技巧

    D語言編寫單片機應用需要用到的技巧volatile 關鍵字應用方法:volatile 關鍵字D語言(版本:2.094之前)并未實現內置volatile關鍵字,它提供的標準庫中有相關的實現.
    發表于 01-25 07:43

    使用GoRK3288庫的時候需要用到的語法有哪些

    使用GoRK3288庫的時候需要用到的語法有哪些
    發表于 03-10 06:49

    51單片機編程什么時候要用到波特率倍速?波特率倍速有什么用處?

    51單片機串口波特率倍速問題,51單片機編程什么時候要用到波特率倍速,波特率倍速有什么用處啊,不太明白,會不會因為串口波特率倍速影響到串口下
    發表于 10-27 07:34

    D語言編寫單片(STM32F401cc)應用需要用到的技巧 - 主入口函數

    D語言編寫單片機應用需要用到的技巧 - 主入口函數入口函數入口函數單片機一定會需要一個主入口函數,至于是那個主要看linker script
    發表于 11-29 21:06 ?13次下載
    D語言編寫<b class='flag-5'>單片</b>(STM32F401cc)<b class='flag-5'>機</b>應用<b class='flag-5'>需要用到</b>的技巧 - 主入口函數

    D語言(dlang)編寫單片機(cortex-m系列)應用需要用到的技巧

    D語言編寫單片機應用需要用到的技巧volatile 關鍵字應用方法:volatile 關鍵字D語言(版本:2.094之前)并未實現內置volatile關鍵字,它提供的標準庫中有相關的實現.
    發表于 12-01 12:36 ?1次下載
    D語言(dlang)編寫<b class='flag-5'>單片機</b>(cortex-m系列)應用<b class='flag-5'>需要用到</b>的技巧

    漲軸磨損修補需要用到什么材料

    漲軸磨損修補需要用到什么材料
    發表于 12-18 10:40 ?9次下載

    單片機或PLC需要用的東西

    單片機或PLC需要用的東西一個580元的PLC,加了一根網線,加了個幾十元的萬用表與鉗子就可以賣1150,這是因為經驗不足和自己圖省事所以總結一下學習單片機或plc需要依賴的器材,但
    發表于 12-17 18:49 ?6次下載
    搞<b class='flag-5'>單片機</b>或PLC<b class='flag-5'>需要用</b>的東西

    物聯網開發需要用到哪些編程語言?

    編程語言是關鍵,物聯網開發需要用到哪些編程語言?C語言是物聯網嵌入式開發的重要編程語言之一,是軟件開發的通用語言,可用于絕大多數的嵌入式系統,它是一門面向過程的編
    的頭像 發表于 02-23 15:39 ?1800次閱讀
    物聯網開發<b class='flag-5'>中</b><b class='flag-5'>需要用到</b>哪些<b class='flag-5'>編程</b>語言?

    單片機開發需要用到那些軟件?

    單片機又稱單片微控制器,它是把一個計算機系統,包括cpu、ram、rom、定時/計數器和多種i/o接口集成到一個芯片上。單片機很多領域都發揮了重要的作用,那么學習
    的頭像 發表于 09-21 14:39 ?5591次閱讀

    變頻器維修需要用到的工具都有哪些

    變頻器維修需要用到的工具都有哪些
    的頭像 發表于 10-20 08:42 ?3886次閱讀