在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 牛人業(yè)話 > 《C與指針》讀書筆記九

            《C與指針》讀書筆記九

            作者: 時間:2016-08-22 來源:網(wǎng)絡(luò) 收藏

              之所以在語言中占據(jù)很大分量,是因?yàn)?a class="contentlabel" href="http://www.biyoush.com/news/listbylabel/label/指針">指針有很大的靈活性。以結(jié)構(gòu)體結(jié)合確實(shí)為程序的編寫提供了一把鋒利無比的寶劍。在有些資料上介紹結(jié)構(gòu)體是多種數(shù)據(jù)集合,也就是一個結(jié)構(gòu)體可以包含若干種不同類型的數(shù)據(jù)。不同類型的數(shù)據(jù)恰可以和客觀事物的不同屬性結(jié)合,用于描述客觀事物非常高效方便。

            本文引用地址:http://www.biyoush.com/article/201608/295845.htm

              #define RTX_MAX 50

              #define UART_TIME_LIMT 5

              typedef struct UART_TYPE

              {

              unsigned char RX_buf[RTX_MAX];

              unsigned char RX_count;

              unsigned char TX_buf[RTX_MAX];

              unsigned char TX_count;

              unsigned char TX_Len;

              unsigned char flag;

              unsigned char timer; //判斷一幀數(shù)據(jù)是否結(jié)束判斷

              }UART_TYPE;

              enum OM_FLAGE {NO_RE_ONE_FRAM,REC_ONE_FRAM};

              以上是一個串口管理信息的數(shù)據(jù)結(jié)構(gòu),RX_buf[RTX_MAX]、TX_buf[RTX_MAX] 是發(fā)送接收數(shù)據(jù)緩沖。RX_count 、TX_count接收發(fā)送數(shù)據(jù)計數(shù)器。TX_Len 發(fā)送數(shù)據(jù)總長度。flag數(shù)據(jù)接收完成標(biāo)志。timer接收數(shù)據(jù)起始計數(shù)器。

              結(jié)構(gòu)體定義相當(dāng)于一個數(shù)據(jù)集合模板。當(dāng)需要該數(shù)據(jù)結(jié)構(gòu)時只需聲明一個即可。

              UART_TYPE UART1 = {

              {0,0},

              0,

              {0,0},

              0,

              0,

              NO_REC_ONE_FRAM,

              0

              };

              在編程中管理也非常方便,如果需要為串口設(shè)計一個數(shù)據(jù)使用,UART_TYPE UART;即可實(shí)現(xiàn)。在程序中使用也非常方便,比如:

              //讀取多個寄存器

              if(UART1.RX_buf[1]==0x03)

              {

              if(readMuliReg( )==0)

              {

              UART1_Clear_Buf( );

              return;

              }

              else

              {

              goto RETURN_ERR;

              }

              }

              指針與結(jié)構(gòu)體的結(jié)合,在解析MODBUS協(xié)議時非常高效。借用一位同事話是“對內(nèi)存格式化”。也就是用結(jié)構(gòu)體指針對MODBUS報文分析。

              //讀多個寄存器

              typedef struct MODELBUS03CMD

              {

              unsigned char targetADD; //目標(biāo)地址

              unsigned char CMD; //命令字

              unsigned int regADD; //寄存器地址

              unsigned int regNum; //寄存器數(shù)量

              }MODELBUS03CMD;

              這是一個03命令的報文頭結(jié)構(gòu)。在程序使用方法是這樣

              MODELBUS03CMD *pModelBus03;

              pModelBus03 = UART1.RX_buf;

              REGNumber = pModelBus03->regNum;

              regADD = pModelBus03->regADD;

              使用pModelBus03指針指向接收數(shù)據(jù)緩沖區(qū),很容易提取了regNum寄存器數(shù)量以及regADD寄存器地址。



            關(guān)鍵詞: C 指針

            評論


            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉