中文字幕 另类精品,亚洲欧美一区二区蜜桃,日本在线精品视频免费,孩交精品乱子片免费

<sup id="3hn2b"></sup>

    1. <sub id="3hn2b"><ol id="3hn2b"></ol></sub><legend id="3hn2b"></legend>

      1. <xmp id="3hn2b"></xmp>

      2. 新聞中心

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

        《C與指針》讀書(shū)筆記九

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

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

        本文引用地址:http://www.antipu.com.cn/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};

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

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

          UART_TYPE UART1 = {

          {0,0},

          0,

          {0,0},

          0,

          0,

          NO_REC_ONE_FRAM,

          0

          };

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

          //讀取多個(gè)寄存器

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

          {

          if(readMuliReg( )==0)

          {

          UART1_Clear_Buf( );

          return;

          }

          else

          {

          goto RETURN_ERR;

          }

          }

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

          //讀多個(gè)寄存器

          typedef struct MODELBUS03CMD

          {

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

          unsigned char CMD; //命令字

          unsigned int regADD; //寄存器地址

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

          }MODELBUS03CMD;

          這是一個(gè)03命令的報(bào)文頭結(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 指針

        評(píng)論


        相關(guān)推薦

        技術(shù)專(zhuān)區(qū)

        關(guān)閉