您的位置 首页 解答

一段关代码的鉴赏

在其他单位见到一位工程师,从事了上位软件开发很多年。近几年开始做电子产品的软件。刚刚开发完一款通讯产品。平台是stm32。其作品完整的体现了其在编程方面的深厚功底。观之使人汗颜!我们可以欣赏几行。

  在其他单位见到一位工程师,从事了上位软件开发很多年。近几年开端做电子产品的软件。刚刚开发完一款通讯产品。渠道是stm32。其著作完好的表现了其在编程方面的深沉功底。观之使人汗颜!咱们能够赏识几行。

  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)的调用。看起来十分绕。细细了解的确十分精妙

 

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/changshang/jieda/115217.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部