找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 11791|回复: 27
打印 上一主题 下一主题
收起左侧

STM32+WK2124 SPI转4路串口驱动程序源码下载

  [复制链接]
跳转到指定楼层
楼主
ID:102945 发表于 2018-12-3 17:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
WK2124 SPI接口 四通道通用异步收发器
1. 产品概述
WK2124是SPITM
接口的4通道UART器件。WK2124实现SPI桥接/扩展4个增强功能串口(UART)的功能。
扩展的子通道的UART具备如下功能特点:
  每个子通道UART的波特率、字长、校验格式可以独立设置,最高可以提供2Mbps的通信速率。
  每个子通道可以独立设置工作在IrDA红外通信。
  每个子通道具备收/发独立的256 级FIFO,FIFO的中断可按用户需求进行编程触发点且具备超时中断功能。
WK2124采用SSOP20绿色环保的无铅封装,可以工作在2.5~5.0V的宽工作电压范围,具备可配置自动休眠/唤醒功能。

WK2124引脚图:


WK2124框图:


1、本程序是在STM32F103平台开发,使用的固件库是V3.5版本

单片机源程序如下:
  1. #include "wk2xxx.h"
  2. #include "spi.h"
  3. #include "usart.h"
  4. #include "delay.h"

  5. void WK2XXX_RST_Init(void)
  6. {
  7. GPIO_InitTypeDef  GPIO_InitStructure;
  8. RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);         //使能PA,PD端口时钟
  9. GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;                                 //PA.4 端口配置
  10. GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                  //推挽输出
  11. GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;                 //IO口速度为50MHz
  12. GPIO_Init(GPIOA, &GPIO_InitStructure);                                         //根据设定参数初始化GPIOA.4
  13. GPIO_SetBits(GPIOA,GPIO_Pin_3);                                                 //PA.4 输出高        
  14. }
  15. void WK2XXX_Reset_Init(void)
  16. {
  17. GPIO_SetBits(GPIOA,GPIO_Pin_3);//1
  18. GPIO_ResetBits(GPIOA,GPIO_Pin_3);//0
  19. delay_ms(10);
  20. GPIO_SetBits(GPIOA,GPIO_Pin_3);//1        
  21. delay_ms(100);
  22.         
  23. }
  24. /*************************************************************************/
  25. //函数功能:初始化SPI片选信号CS,并把CS的默认状态设置为高电平
  26. //
  27. //
  28. /*************************************************************************/
  29. void SPI_CS_Init(void)
  30. {
  31. GPIO_InitTypeDef  GPIO_InitStructure;
  32. RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);         //使能PA,PD端口时钟
  33. GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4|GPIO_Pin_3;        //PA.4 端口配置
  34. GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                  //推挽输出
  35. GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;                 //IO口速度为50MHz
  36. GPIO_Init(GPIOA, &GPIO_InitStructure);                                         //根据设定参数初始化GPIOA.4
  37. GPIO_SetBits(GPIOA,GPIO_Pin_4);                                                 //PA.4 输出高        
  38. }
  39. /*************************************************************************/
  40. //函数功能:初始化SPI总线,设置SPI总线为0模式
  41. /*************************************************************************/
  42. void SPI_BUS_Init(void)
  43. {

  44.         SPI1_Init();                   //初始化SPI
  45.         SPI1_SetSpeed(SPI_BaudRatePrescaler_8);        //设置为10M时钟,高速模式
  46. }
  47. /*************************************************************************/
  48. //函数功能:设置CS信号为高电平
  49. /*************************************************************************/
  50. void SPI_CS_H(void)
  51. {
  52.         GPIO_SetBits(GPIOA,GPIO_Pin_4);
  53. }
  54. /*************************************************************************/
  55. //函数功能:设置CS信号为低电平
  56. /*************************************************************************/
  57. void SPI_CS_L(void)
  58. {
  59.         GPIO_ResetBits(GPIOA,GPIO_Pin_4);
  60. }
  61. /*************************************************************************/
  62. //函数功能:初始化SPI接口
  63. /*************************************************************************/
  64. void WK2XXX_SPI_Init(void)
  65. {
  66.         SPI_CS_Init();
  67.         SPI_BUS_Init();
  68.         
  69.         
  70. }

  71. /*************************************************************************/
  72. //函数功能:写寄存器函数(前提是该寄存器可写,某些寄存器如果你写1,可能会自动置1,具体见数据手册)
  73. //参数:port:为子串口的数(C0C1)
  74. //      reg:为寄存器的地址(A3A2A1A0)
  75. //      dat:为写入寄存器的数据
  76. //注意:在子串口被打通的情况下,向FDAT写入的数据会通过TX引脚输出
  77. //*************************************************************************/
  78. void Wk2xxxWriteReg(unsigned char port,unsigned char reg,unsigned char dat)
  79. {         
  80.          SPI_CS_L();//片选使能
  81.          SPI1_ReadWriteByte(((port-1)<<4)+reg); //写控制字节
  82.          SPI1_ReadWriteByte(dat); //写数据
  83.          SPI_CS_H();//片选无效
  84. }


  85. /*************************************************************************/
  86. //函数功能:读寄存器函数
  87. //参数:port:为子串口的数(C0C1)
  88. //      reg:为寄存器的地址(A3A2A1A0)
  89. //      rec_data:为读取到的寄存器值
  90. //注意:在子串口被打通的情况下,读FDAT,实际上就是读取uart的rx接收的数据
  91. /*************************************************************************/
  92. unsigned char Wk2xxxReadReg(unsigned char port,unsigned char reg)
  93. {        
  94.         unsigned char rec_data;
  95.         SPI_CS_L();        //片选使能
  96.         SPI1_ReadWriteByte(0x40+((port-1)<<4)+reg);//写控制字节,控制命令构成见数据手册
  97.         rec_data=SPI1_ReadWriteByte(0);//接收返回的数据
  98.         SPI_CS_H();        //片选无效        
  99.         return rec_data;
  100. }
  101. /**************************** Wk2xxxWriteFifo*********************************************/
  102. //函数功能:该函数为写FIFO函数,通过该函数写入的数据会直接进入子串口的发送FIFO,然后通过TX引脚发送
  103. //参数:port:为子串口的端口号(C0\C1)
  104. //      *wbuf:写入数据部分
  105. //      len:  写入数据长度
  106. //
  107. /*************************************************************************/
  108. void Wk2xxxWriteFifo(unsigned char port,unsigned char *wbuf,unsigned int len)
  109. {         unsigned char n;
  110.          SPI_CS_L(); // 片选有效
  111.          SPI1_ReadWriteByte(0x80+((port-1)<<4)); //写FIFO控制指令
  112.           for(n=0;n<len;n++)
  113.             {
  114.              SPI1_ReadWriteByte(*(wbuf+n));
  115.                 }
  116.          SPI_CS_H();        //片选无效

  117. }

  118. /**************************** Wk2xxxReadFifo*********************************************/
  119. //函数功能:该函数为读FIFO函数,通过该函数可以一次读出多个接收FIFO中的数据,最多256个字节
  120. //参数:port:为子串口的端口号(C0\C1)
  121. //      *rbuf:写入数据部分
  122. //      len:  写入数据长度
  123. //
  124. /*************************************************************************/
  125. void Wk2xxxReadFifo(unsigned char port,unsigned char *rbuf,unsigned int len)
  126. {         unsigned char n;
  127.          SPI_CS_L();//片选有效
  128.          SPI1_ReadWriteByte(0xc0+((port-1)<<4));        //写读fifo控制指令
  129.          for(n=0;n<len;n++)
  130.            {
  131.                 *(rbuf+n)=SPI1_ReadWriteByte(0);
  132.            }
  133.          SPI_CS_H();//片选无效                                                                                
  134.          //return 0;
  135. }

  136. /*************************************************************************/
  137. //函数功能:此函数主要是通过读写wk2xxx的寄存器来判断主接口的通信时序是否有问题
  138. //参数:无
  139. //返回值:rv表示返回值,0成功  
  140. /*************************************************************************/
  141. unsigned char Wk2xxxTest(void)
  142. {
  143.         unsigned char rec_data,rv;
  144. //主接口为SPI        
  145.         rec_data=Wk2xxxReadReg(WK2XXX_GPORT,WK2XXX_GENA);
  146.         if(rec_data==0x30)
  147.                 return rv;
  148.         else
  149.                 {
  150.                         rv=1;
  151.                         return rv;
  152.                 }

  153. }
  154. /******************************Wk2xxxInit*******************************************/
  155. //函数功能:本函数主要会初始化一些芯片基本寄存器;
  156. /*********************************************************************************/
  157. void Wk2xxxInit(unsigned char port)
  158. {
  159.     unsigned char gena,grst,gier,sier,scr;
  160.         //使能子串口时钟
  161.     gena=Wk2xxxReadReg(WK2XXX_GPORT,WK2XXX_GENA);
  162.         switch (port)
  163.     {
  164.           case 1://使能子串口1的时钟
  165.               gena|=WK2XXX_UT1EN;
  166.                       Wk2xxxWriteReg(WK2XXX_GPORT,WK2XXX_GENA,gena);
  167.               break;
  168.                   case 2://使能子串口2的时钟
  169.               gena|=WK2XXX_UT2EN;
  170.                       Wk2xxxWriteReg(WK2XXX_GPORT,WK2XXX_GENA,gena);
  171.               break;
  172.                    case 3://使能子串口3的时钟
  173.               gena|=WK2XXX_UT3EN;
  174.                       Wk2xxxWriteReg(WK2XXX_GPORT,WK2XXX_GENA,gena);
  175.               break;
  176.                    case 4://使能子串口4的时钟
  177.               gena|=WK2XXX_UT4EN;
  178.                       Wk2xxxWriteReg(WK2XXX_GPORT,WK2XXX_GENA,gena);
  179.               break;
  180.          }        
  181.         //软件复位子串口
  182.         grst=Wk2xxxReadReg(WK2XXX_GPORT,WK2XXX_GRST);
  183.         switch (port)
  184.     {
  185.           case 1://软件复位子串口1
  186.               grst|=WK2XXX_UT1RST;
  187.                       Wk2xxxWriteReg(WK2XXX_GPORT,WK2XXX_GRST,grst);
  188.               break;
  189.                   case 2://软件复位子串口2
  190.               grst|=WK2XXX_UT2RST;
  191.                       Wk2xxxWriteReg(WK2XXX_GPORT,WK2XXX_GRST,grst);
  192.               break;
  193.                    case 3://软件复位子串口3
  194.               grst|=WK2XXX_UT3RST;
  195.                       Wk2xxxWriteReg(WK2XXX_GPORT,WK2XXX_GRST,grst);
  196.               break;
  197.                    case 4://软件复位子串口4
  198.              grst|=WK2XXX_UT4RST;
  199.                       Wk2xxxWriteReg(WK2XXX_GPORT,WK2XXX_GRST,grst);
  200.               break;
  201.          }        
  202.   //使能子串口中断,包括子串口总中断和子串口内部的接收中断,和设置中断触点
  203.         gier=Wk2xxxReadReg(WK2XXX_GPORT,WK2XXX_GIER);
  204.         switch (port)
  205.     {
  206.           case 1://子串口1中断使能
  207.               gier|=WK2XXX_UT1IE;
  208.                       Wk2xxxWriteReg(WK2XXX_GPORT,WK2XXX_GIER,gier);
  209.               break;
  210.                   case 2://子串口2中断使能
  211.               gier|=WK2XXX_UT2IE;
  212.                       Wk2xxxWriteReg(WK2XXX_GPORT,WK2XXX_GIER,gier);
  213.               break;
  214.                    case 3://子串口3中断使能
  215.               gier|=WK2XXX_UT3IE;
  216.                       Wk2xxxWriteReg(WK2XXX_GPORT,WK2XXX_GIER,gier);
  217.               break;
  218.                    case 4://子串口4中断使能
  219.               gier|=WK2XXX_UT4IE;
  220.                       Wk2xxxWriteReg(WK2XXX_GPORT,WK2XXX_GIER,gier);
  221.               break;
  222.          }         
  223.          //使能子串口接收触点中断和超时中断
  224.          sier=Wk2xxxReadReg(port,WK2XXX_SIER);
  225. //         sier |= WK2XXX_RFTRIG_IEN|WK2XXX_RXOUT_IEN;
  226.          sier |= WK2XXX_RFTRIG_IEN;
  227.          Wk2xxxWriteReg(port,WK2XXX_SIER,sier);
  228.          // 初始化FIFO和设置固定中断触点
  229.          Wk2xxxWriteReg(port,WK2XXX_FCR,0XFF);
  230.          //设置任意中断触点,如果下面的设置有效,那么上面FCR寄存器中断的固定中断触点将失效
  231.          Wk2xxxWriteReg(port,WK2XXX_SPAGE,1);//切换到page1
  232.          Wk2xxxWriteReg(port,WK2XXX_RFTL,0X08);//设置接收触点8个字节
  233.          Wk2xxxWriteReg(port,WK2XXX_TFTL,0X10);//设置发送触点为16个字节
  234.          Wk2xxxWriteReg(port,WK2XXX_SPAGE,0);//切换到page0
  235.          //使能子串口的发送和接收使能
  236.          scr=Wk2xxxReadReg(port,WK2XXX_SCR);
  237.          scr|=WK2XXX_TXEN|WK2XXX_RXEN;
  238.          Wk2xxxWriteReg(port,WK2XXX_SCR,scr);
  239. }

  240. /******************************Wk2xxxClose*******************************************/
  241. //函数功能:本函数会关闭当前子串口,和复位初始值;
  242. /*********************************************************************************/

  243. void Wk2xxxClose(unsigned char port)
  244. {
  245.     unsigned char gena,grst;
  246.         //复位子串口
  247.         grst=Wk2xxxReadReg(WK2XXX_GPORT,WK2XXX_GRST);
  248.         switch (port)
  249.     {
  250.           case 1://软件复位子串口1
  251.               grst|=WK2XXX_UT1RST;
  252.                       Wk2xxxWriteReg(WK2XXX_GPORT,WK2XXX_GRST,grst);
  253.               break;
  254.                   case 2://软件复位子串口2
  255.               grst|=WK2XXX_UT2RST;
  256.                       Wk2xxxWriteReg(WK2XXX_GPORT,WK2XXX_GRST,grst);
  257.               break;
  258.                    case 3://软件复位子串口3
  259.               grst|=WK2XXX_UT3RST;
  260.                       Wk2xxxWriteReg(WK2XXX_GPORT,WK2XXX_GRST,grst);
  261.               break;
  262.                    case 4://软件复位子串口4
  263.               grst|=WK2XXX_UT4RST;
  264.                       Wk2xxxWriteReg(WK2XXX_GPORT,WK2XXX_GRST,grst);
  265.               break;
  266.          }        
  267.         //关闭子串口时钟
  268.     gena=Wk2xxxReadReg(WK2XXX_GPORT,WK2XXX_GENA);
  269.         switch (port)
  270.     {
  271.           case 1://使能子串口1的时钟
  272.               gena&=~WK2XXX_UT1EN;
  273.                       Wk2xxxWriteReg(WK2XXX_GPORT,WK2XXX_GENA,gena);
  274.               break;
  275.                   case 2://使能子串口2的时钟
  276.               gena&=~WK2XXX_UT2EN;
  277.                       Wk2xxxWriteReg(WK2XXX_GPORT,WK2XXX_GENA,gena);
  278.               break;
  279.                    case 3://使能子串口3的时钟
  280.               gena&=~WK2XXX_UT3EN;
  281.                       Wk2xxxWriteReg(WK2XXX_GPORT,WK2XXX_GENA,gena);
  282.               break;
  283.                    case 4://使能子串口4的时钟
  284.               gena&=~WK2XXX_UT4EN;
  285.                       Wk2xxxWriteReg(WK2XXX_GPORT,WK2XXX_GENA,gena);
  286.               break;
  287.          }        
  288. }






  289. /**************************Wk2xxxSetBaud*******************************************************/
  290. //函数功能:设置子串口波特率函数、此函数中波特率的匹配值是根据11.0592Mhz下的外部晶振计算的
  291. // port:子串口号
  292. // baud:波特率大小.波特率表示方式,
  293. //
  294. /**************************Wk2xxxSetBaud*******************************************************/
  295. void Wk2xxxSetBaud(unsigned char port,int baud)
  296. {  
  297.         unsigned char baud1,baud0,pres,scr;
  298.         //如下波特率相应的寄存器值,是在外部时钟为11.0592的情况下计算所得,如果使用其他晶振,需要重新计算
  299.         switch (baud)
  300.         {
  301.       case 600:
  302.                         baud1=0x4;
  303.                         baud0=0x7f;
  304.                         pres=0;
  305.       break;
  306.       case 1200:
  307.                         baud1=0x2;
  308.                         baud0=0x3F;
  309.                         pres=0;
  310.                         break;
  311.       case 2400:
  312.                         baud1=0x1;
  313.                         baud0=0x1f;
  314.                         pres=0;
  315.                         break;
  316.       case 4800:
  317.                         baud1=0x00;
  318.                         baud0=0x8f;
  319.                         pres=0;
  320.                         break;
  321.       case 9600:
  322.                         baud1=0x00;
  323.                         baud0=0x47;
  324.                         pres=0;
  325.                         break;
  326.       case 19200:
  327.                         baud1=0x00;
  328.                         baud0=0x23;
  329.                         pres=0;
  330.                         break;
  331.       case 38400:
  332.                         baud1=0x00;
  333.                         baud0=0x11;
  334.                         pres=0;
  335.                         break;
  336.                         
  337.       case 76800:
  338.                         baud1=0x00;
  339.                         baud0=0x08;
  340.                         pres=0;
  341.                         break;
  342.       
  343.       case 1800:
  344.                         baud1=0x01;
  345.                         baud0=0x7f;
  346.                         pres=0;
  347.                         break;
  348.       case 3600:
  349.                         baud1=0x00;
  350.                         baud0=0xbf;
  351.                         pres=0;
  352.                         break;
  353.       case 7200:
  354.                         baud1=0x00;
  355.                         baud0=0x5f;
  356.                         pres=0;
  357.                         break;
  358.       case 14400:
  359.                         baud1=0x00;
  360.                         baud0=0x2f;
  361.                         pres=0;
  362.                         break;
  363.       case 28800:
  364.                         baud1=0x00;
  365.                         baud0=0x17;
  366.                         pres=0;
  367.                         break;
  368.       case 57600:
  369.                         baud1=0x00;
  370.                         baud0=0x0b;
  371.                         pres=0;
  372.       break;
  373.       case 115200:
  374.                         baud1=0x00;
  375.                         baud0=0x05;
  376.                         pres=0;
  377.                         break;
  378.       case 230400:
  379.                         baud1=0x00;
  380.                         baud0=0x02;
  381.                         pres=0;
  382.                         break;
  383.       default:
  384.                         baud1=0x00;
  385.                         baud0=0x00;
  386.                         pres=0;
  387.     }
  388.         //关掉子串口收发使能
  389.         scr=Wk2xxxReadReg(port,WK2XXX_SCR);
  390.         Wk2xxxWriteReg(port,WK2XXX_SCR,0);
  391.         //设置波特率相关寄存器
  392.         Wk2xxxWriteReg(port,WK2XXX_SPAGE,1);//切换到page1
  393.         Wk2xxxWriteReg(port,WK2XXX_BAUD1,baud1);
  394.         Wk2xxxWriteReg(port,WK2XXX_BAUD0,baud0);
  395.         Wk2xxxWriteReg(port,WK2XXX_PRES,pres);
  396.         Wk2xxxWriteReg(port,WK2XXX_SPAGE,0);//切换到page0
  397.         //使能子串口收发使能
  398.         Wk2xxxWriteReg(port,WK2XXX_SCR,scr);
  399.         
  400.         
  401. }
  402. /*****************************Wk2xxxSendBuf****************************************/
  403. //本函数为子串口发送数据的函数,发送数据到子串口的FIFO.然后通过再发送
  404. //参数说明:port:子串口端口号
  405. //          *sendbuf:需要发送的数据buf
  406. //          len:需要发送数据的长度
  407. // 函数返回值:实际成功发送的数据
  408. //说明:调用此函数只是把数据写入子串口的发送FIFO,然后再发送。1、首先确认子串口的发送FIFO有多少数据,根据具体情况、
  409. //确定写入FIFO数据的个数,
  410. /*********************************************************************/
  411. unsigned int Wk2xxxSendBuf(unsigned char port,unsigned char *sendbuf,unsigned int len)
  412. {
  413.          unsigned int ret,tfcnt,sendlen;
  414.          unsigned char  fsr;
  415.          
  416.          fsr=Wk2xxxReadReg(port,WK2XXX_FSR);
  417.          if(~fsr&WK2XXX_TFULL )//子串口发送FIFO未满
  418.          {

  419.              tfcnt=Wk2xxxReadReg(port,WK2XXX_TFCNT);//读子串口发送fifo中数据个数
  420.                  sendlen=256-tfcnt;//FIFO能写入的最多字节数
  421.                  
  422.                  if(sendlen<len)
  423.                  {
  424.                         ret=sendlen;
  425.                         Wk2xxxWriteFifo(port,sendbuf,sendlen);
  426.                  }
  427.                  else
  428.                  {
  429.                          Wk2xxxWriteFifo(port,sendbuf,len);
  430.                          ret=len;
  431. ……………………

  432. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
WK2124_DS_CN_V011_2017-09.pdf (1.28 MB, 下载次数: 136)
WK2124_irq(STM32).rar (429.33 KB, 下载次数: 226)


评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏9 分享淘帖 顶2 踩
回复

使用道具 举报

沙发
ID:1 发表于 2018-12-5 17:40 | 只看该作者
好资料,51黑有你更精彩!!!
回复

使用道具 举报

板凳
ID:139761 发表于 2019-2-28 11:45 | 只看该作者
学习,感谢分享
回复

使用道具 举报

地板
ID:142699 发表于 2019-3-21 16:56 | 只看该作者
程序这块写的很清楚,非常棒
回复

使用道具 举报

5#
ID:235690 发表于 2019-5-5 21:43 | 只看该作者
WK2124的资料貌似比较少
回复

使用道具 举报

6#
ID:235690 发表于 2019-5-5 21:44 | 只看该作者
感谢楼主分享
回复

使用道具 举报

7#
ID:562382 发表于 2019-6-14 11:58 | 只看该作者
想学习一下!!!!!!!!!!!!!!!!!
回复

使用道具 举报

8#
ID:386940 发表于 2019-7-12 14:13 | 只看该作者

学习,感谢分享
回复

使用道具 举报

9#
ID:576356 发表于 2019-7-22 18:49 | 只看该作者
感谢分享
回复

使用道具 举报

10#
ID:593021 发表于 2019-7-31 14:13 | 只看该作者
好东西,感谢分享
回复

使用道具 举报

11#
ID:602613 发表于 2019-8-22 14:36 | 只看该作者
写的非常不错,感谢分享!
回复

使用道具 举报

12#
ID:602935 发表于 2019-8-23 08:41 | 只看该作者
这是我一直想要看的资料,谢谢分享!
回复

使用道具 举报

13#
ID:612960 发表于 2019-9-18 11:05 | 只看该作者
好东西啊
回复

使用道具 举报

14#
ID:405102 发表于 2019-9-18 23:41 | 只看该作者
好资料,先收藏学习。
回复

使用道具 举报

15#
ID:613462 发表于 2019-9-19 10:18 | 只看该作者
很好的资料,谢谢楼主,学习一下。。。。
回复

使用道具 举报

16#
ID:473013 发表于 2019-9-27 11:03 | 只看该作者
实测有用 很好的例子。谢谢分享
回复

使用道具 举报

17#
ID:417461 发表于 2019-10-18 13:35 | 只看该作者
很好的资料,多谢楼主
回复

使用道具 举报

18#
ID:389751 发表于 2019-11-29 15:17 | 只看该作者
很好的资料,谢谢楼主分享
回复

使用道具 举报

19#
ID:711786 发表于 2020-3-19 18:40 | 只看该作者
好资料,等我签到五天了就来下载
回复

使用道具 举报

20#
ID:744612 发表于 2020-5-5 16:21 | 只看该作者
正好用到,学习一下,谢谢
回复

使用道具 举报

21#
ID:347971 发表于 2020-5-11 22:33 | 只看该作者
正好需要这个,现在都2020年了,大家还都在用这个
回复

使用道具 举报

22#
ID:807127 发表于 2020-7-24 14:00 | 只看该作者
请问一下,如果要移植到stm32f407上去,需要做些什么变动呢
回复

使用道具 举报

23#
ID:98998 发表于 2021-1-27 17:19 | 只看该作者
大佬门。这个片子在项目上稳定么
回复

使用道具 举报

24#
ID:804375 发表于 2021-8-3 15:50 | 只看该作者
好资料,51黑有你更精彩!!!
回复

使用道具 举报

25#
ID:81365 发表于 2021-8-5 09:39 | 只看该作者
我的黑币没有了,隔几天再来
回复

使用道具 举报

26#
ID:721992 发表于 2021-8-22 14:35 | 只看该作者
好资料,51黑有你更精彩!!!
回复

使用道具 举报

27#
ID:982454 发表于 2021-11-19 10:12 | 只看该作者
非常感谢, 希望赶紧能攒够黑币来下载。
回复

使用道具 举报

28#
ID:1044382 发表于 2022-9-25 16:28 | 只看该作者
现在2022年,用到这个片子,借来测试一下,非常感谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表