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

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

3天內(nèi)不再提示

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

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

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

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

(1) 使程序更容易維護和直觀。例如,下面定義的枚舉是描述UART支持的傳輸bit位數(shù),從枚舉類型的定義就可以知道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)使程序更安全

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

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

2、枚舉與宏定義的區(qū)別和聯(lián)系:

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

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

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

    關(guān)注

    6023

    文章

    44376

    瀏覽量

    628482
  • 編程
    +關(guān)注

    關(guān)注

    88

    文章

    3521

    瀏覽量

    93276
  • ENUM
    +關(guān)注

    關(guān)注

    0

    文章

    6

    瀏覽量

    8274

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

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

收藏 人收藏

    評論

    相關(guān)推薦

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

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

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

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

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

    STM32單片機需要用到的C語言知識一、基本內(nèi)容二、疑問點1.聲明變量2.預處理一、基本內(nèi)容二、疑問點1.聲明變量const:可創(chuàng)建全局常量 局部常量, 數(shù)字常量, 數(shù)組常量 結(jié)構(gòu)常量. 用法
    發(fā)表于 07-15 09:24

    一個系統(tǒng)需要用到多個按鍵的時候怎么辦?

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

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

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

    D語言編寫單片機應(yīng)用需要用到的技巧

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

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

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

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

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

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

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

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

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

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

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

    單片機或PLC需要用的東西

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

    物聯(lián)網(wǎng)開發(fā)需要用到哪些編程語言?

    編程語言是關(guān)鍵,物聯(lián)網(wǎng)開發(fā)需要用到哪些編程語言?C語言是物聯(lián)網(wǎng)嵌入式開發(fā)的重要編程語言之一,是軟件開發(fā)的通用語言,可用于絕大多數(shù)的嵌入式系統(tǒng),它是一門面向過程的編
    的頭像 發(fā)表于 02-23 15:39 ?1680次閱讀
    物聯(lián)網(wǎng)開發(fā)<b class='flag-5'>中</b><b class='flag-5'>需要用到</b>哪些<b class='flag-5'>編程</b>語言?

    單片機開發(fā)需要用到那些軟件?

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

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

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