新聞中心

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

        一段關代碼的鑒賞

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

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

        本文引用地址:http://www.104case.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 編程

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 吉木萨尔县| 和硕县| 鄂温| 黔南| 东光县| 澄城县| 灵宝市| 乌兰浩特市| 敦煌市| 东港市| 玉溪市| 肥西县| 团风县| 浪卡子县| 灵丘县| 嵊泗县| 舟山市| 常山县| 团风县| 衡东县| 宜宾县| 喜德县| 安顺市| 黄冈市| 招远市| 株洲县| 井冈山市| 沂水县| 仪征市| 澜沧| 湖南省| 嵊州市| 新和县| 辉县市| 泽州县| 古丈县| 汉沽区| 榕江县| 吴桥县| 七台河市| 丘北县|