• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統 > 牛人業話 > 一段關代碼的鑒賞

    一段關代碼的鑒賞

    作者: 時間:2016-07-21 來源:網絡 收藏

      在其他單位見到一位工程師,從事了上位軟件開發很多年。近幾年開始做電子產品的軟件。剛剛開發完一款通訊產品。平臺是。其作品完整的體現了其在方面的深厚功底。觀之使人汗顏!我們可以欣賞幾行。

    本文引用地址:http://www.czjhyjcfj.com/article/201607/294355.htm

      if (MC52I_SetUsart(USART1_Recv,USART1_Send)==MC52I_USART_ISNULL){

      return ;

      }

      我們可以來看看MC52I_SetUsart(USART1_Recv,USART1_Send)函數的實現方法。

      函數原型如下:

      uint32_t MC52I_SetUsart(Recv_CALLBACK pRecv,Send_CALLBACK pSend)

      {

      if (pSend==NULL || pRecv==NULL){

      return MC52I_USART_ISNULL;

      }

      pUsartSend = pSend;

      pUsartRecv = pRecv;

      return SYS_OK;

      }

      Recv_CALLBACK, Send_CALLBACK 是

      typedef uint32_t (*Recv_CALLBACK)(void *pBuf,uint32_t *pSize);

      typedef uint32_t (*Send_CALLBACK)(void *pBuf,uint32_t Size);

      這是兩個指針類型,指向兩個函數。這兩個函數分別有兩個參數。

      在調用過程MC52I_SetUsart(USART1_Recv,USART1_Send);兩個參數USART1_Recv,USART1_Send 指向兩個函數

      uint32_t USART1_Recv(void *pBuf,uint32_t *pSize)

      {

      USART_Recv(&gSYS_USART1,pBuf,pSize);

      return SYS_OK;

      }

      uint32_t USART1_Send(void *pBuf,uint32_t Size)

      {

      return USART_Send(&gSYS_USART1,pBuf,Size);

      }

      我們再來分析一下函數的原型:

      uint32_t MC52I_SetUsart(Recv_CALLBACK pRecv,Send_CALLBACK pSend)

      {

      if (pSend==NULL || pRecv==NULL){

      return MC52I_USART_ISNULL;

      }

      pUsartSend = pSend;

      pUsartRecv = pRecv;

      return SYS_OK;

      }

      如果傳入參數 pRecv或pSend指向空,那么返回MC52I_USART_ISNULL,大概可能是該模塊沒有安裝,否則將兩個全區指針指向這兩個參數。完成了對uint32_t USART1_Recv(void *pBuf,uint32_t *pSize)和uint32_t USART1_Send(void *pBuf,uint32_t Size)的調用。看起來非常繞。細細理解確實非常精妙

     



    關鍵詞: stm32 編程

    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 鹤庆县| 池州市| 乡城县| 文水县| 富民县| 怀安县| 正阳县| 沐川县| 大埔县| 贵州省| 珠海市| 商河县| 黔南| 裕民县| 噶尔县| 镶黄旗| 思茅市| 青铜峡市| 内乡县| 南开区| 井陉县| 四川省| 宣恩县| 察雅县| 清镇市| 衡阳县| 昌邑市| 喀喇沁旗| 新化县| 石景山区| 东乡族自治县| 青冈县| 兴义市| 栖霞市| 大名县| 马山县| 绥德县| 醴陵市| 汝阳县| 饶阳县| 西和县|