使用lwip tcpip栈在stm32cube上开发应用_第1页
使用lwip tcpip栈在stm32cube上开发应用_第2页
使用lwip tcpip栈在stm32cube上开发应用_第3页
使用lwip tcpip栈在stm32cube上开发应用_第4页
使用lwip tcpip栈在stm32cube上开发应用_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

STM32F4x7/9xxSTM32F2x7xx10/100Mbit/s以太网外设,支持媒体独立接口(MII)和缩减的独立接口(RMII),以便与物理层(PHY)接口。本用户手册说明了怎样使用STM32CubeF2和STM32CubeF4HAL驱动程序,将一个免费中TCP/IPSTM32F2x7xxSTM32F4x7/9xx微控制器的嵌入式应用运行 注: STM3221x-EVAL、STM324xG-EVAL和STM324x9I-EVAL评估板。适用于STM32F2x7xx。 LwIPTCP/IP栈描 栈特 ...................................................................................................................... 组 LwIPAPI概 Raw LwIP配 使用Netconn或SocketAPI基于RTOS开 LwIP 表 TCPRawAPI函 表 UDPRawAPI函 表 表 表 PbufAPI函 表 表 表 表 表 表 表 TOC\o"1-1"\h\z\u图 图 图 图2 结 图 图 图 图 图 图 图 图 图 图 任务页面的Web服务器列 图 益。STM32Cube涵盖STM32产品组合。BSD使得LwIP特别适合在嵌入式系统中使用。NetconnAPI为有序API,需要实时操作系统(RTOS)的支持(提供进程间通讯的方法)。NetconnAPI支持多线程工作。 *瑞典计算机(c)2001-2004 * 和 惩罚性或性损失(包括但不限于,采合同、严格责任,或民事(包括过失或其它 图3.图2 core包含LwIP内核文件netif包含网络接口文件OS包含使用操作系统的LwIP端口硬件实现文件noOS包含独立模式的LwIP端口硬件实现文件LwIPAPIRawSocketRaw 所需的回调函数(例如TCP_Sent、TCP_error...)。当相应发生时,LwIP会自发地调用相关的回调函数。1TCPRawAPI2UDPRawAPI建立UDPPCBIP地址和端口移除UDPPCBIP和端口并/或为应用实现多个线程。将连接绑定到本地IP连接IP地址和端口置TCPnetconn处于模式接受正在状态的TCP连接上的传入连接通过TCP(将数据写入TCP缓冲区)主动关闭TCPnetconnSocketI 注 “pbuf”可为单个pbuf或pbuf链{uint8_tmacaddress[6]={MAC_ADDR0,MAC_ADDR1,MAC_ADDR2,MAC_ADDR3, EthHandle.Instance=ETH;EthHandle.Init.MACAddr=macaddress;EthHandle.Init.AutoNegotiation=ETH_AUTONEGOTIATION_ENABLE;EthHandle.Init.Speed=ETH_SPEED_100M;EthHandle.Init.DuplexMode=ETH_MODE_FULLDUPLEX;EthHandle.Init.MediaInterface=ETH_MEDIA_INTERFACE_MII;EthHandle.Init.RxMode=ETH_RXINTERRUPT_MODE;EthHandle.Init.ChecksumMode=ETH_CHECKSUM_BY_HARDWARE;EthHandle.Init.PhyAddress=DP83848_PHY_ADDRESS;HAL_ETH_Init(&EthHandle);/*初始化Tx描述符列表:模式*/HAL_ETH_DMATxDescListInit(&EthHandleDMATxDscrTab&Tx_Buff[0][0],/*初始化Rx描述符列表:模式*/HAL_ETH_DMARxDescListInit(&EthHandleDMARxDscrTab&Rx_Buff[0][0],/*MACDMA*/}提供了覆盖许多lwIP行为的方法。/*禁用UDP*/#defineLWIP_UDP0/*启用DHCP*/#defineLWIP_DHCP1lwIP将其用于不同tcp_pcbudp_pcb结构体的池。每个池都可配置为容纳固定数目的数据结构。该数目可在lwipopts.h文件中更改。例如,MEMP_NUM_TCP_PCB和MEMP_NUM_UDP_PCB定义了在某一时间系统中可激活的tcp_pcb和udb_pcb结构的最大数目。的完成数据包的拷贝,应该从缓冲池(PBUF_POOL)LwIP(pbuf)。请参考图5中的独立工作模型流图说明。ݜ㏿㏿ᄲ㏿ᢚ㏿Ϻ依ߔ□ᠣ䉉ݜ-X*1䰬㺭Ꮐ⩔䕆ⴑ⩝∔⮰ఊ䄯ܩ TCP回响服务器示例在 单应用,可对从客户端收到的任何TCP数据包做出回响。int{/*LwIP*//**//*tcp回响服务器初始化*//**/while(1){/*从以太网缓冲区中数据包,交LwIP处理*//*处理LwIP超时*/}}在无限whileethernetif_input函数轮询包的接收。当收到包时,将包传给栈处时器、TCP包的重传...)。tcp_echoserver_init函数描述voidtcp_echoserver_init(void){/*创建新的tcppcb*/tcp_echoserver_pcbif(tcp_echoserver_pcb!={err_tif(err=={/*echo_pcb开始tcp/*LwIPtcp_accept回调函数*/}{/*pcb }}}tcp_bind函数,将分配的TCPPCB绑定到本地IP地址和端口。tcp_echoserver_acceptTCPPCBTCP连接,这通过使用tcp_acceptLwIPAPI函数完成。staticerr_ttcp_echoserver_accept(void*arg,structtcp_pcb*newpcb,err_t{es=(structtcp_echoserver_struct*)mem_malloc(sizeof(structif(es!={es->state=ES_ACCEPTED;es->pcb=newpcb;es->p=tcp_arg(newpcb,es);/*为newpcblwIPtcp_recv回调函数*/tcp_recv(newpcbtcp_echoserver_recv);/*为newpcblwIPtcp_err回调函数*//*为newpcblwIPtcp_poll回调函数*/tcp_poll(newpcbtcp_echoserver_poll1);ret_err=}处理TCP错误。周期性的应用任务(例如检查是否还有应用数据要发送)。NetconnSocketAPI基于RTOS网络接口线程用于将驱动缓冲区收到的数据包拷贝至LwIP协议 7&3ԍण 这是因为它有一个更加直观的有序API。int{/*osThreadDef(Start,StartThread,osPriorityNormal,0,configMINIMAL_STACK_SIZE*2);/*开始调度器*/osKernelStartNULLNULL);/**/for(;;);}staticvoidStartThread(voidconst*{/*创建tcp_ip栈线程*/tcpip_initNULLNULL/**//*tcp*/for(;;{}}void{sys_thread_new("tcpecho_thread",tcpecho_thread,NULL, }{/*conn=if{/*将连接绑定至已知的端7。err=netconn_bind(conn,NULL,if(err=={/*告知连接进入模式。*/while{/*if(accept_err=={while((recv_err=netconn_recv(newconn,&buf))=={{netbuf_data(buf,&data,&len);netconn_write(newconn,data,len,NETCONN_COPY);}while(netbuf_next(buf)>=}}}}{}}}在无限while(1APINetconn_accept,应用等待一个新连接。数据接收在netbuf中。LwIPTCP/IP应用位于项目库的此路径之下 文件stm32f4xx_hal_conf.h中。体中填入MediaInterface参数。注 当使用STM324x9I-EVAL板时,不支持RMII模式到动态IP地址。若要启用DHCP协议,请取消下面宏定义的注释:#defineUSE_DHCP”frommain.h注: 文本消息告知用户应用的状态(分配的IP地址、网络链路状态...)注 级的应用不支持DHCP或LCD模块。信息,请参见第7章节:使用LwIP应用...如表11中所示,这些应用分为三类。TCPUDP回响服务器(Netconn收件。TCPSTM32MCUTCPTCP服务C:\>echotool/ptcp当按下STM324xx-EVAL/STM322xG-EVALKey按键时,客户端会发送字符串,注: 图7显示了此命令字符串和模块响应的例子。C:\>echotoolIP_address/ptcp/r7/n15/t2/dTestingLwIPTCPecho注 提供的统计指标为测试结束时收到的和毁坏的包数C:\>echotool/pudp当按下STM324xx-EVAL/STM322xG-EVALKey按键时,客户端会发送字符串,注: 图9显示了此命令字符串和模块响应的例子。若需测试UDP回响服务器应用,请遵循如下步骤:命令行提示C:\>echotoolIP_address/pudp/r7l/7/n15/t2/dTestingLwIPUDPechoserver注 提供的统计指标为测试结束时收到的和毁坏的包数节:TCP回响服务器。节:UDP回响服务器。LwIPrawAPIWebSTM32MCUWeb服务器,可为Web浏览器提供HTTP服务。览器中键入板子的IP地址。默认情况下,会使用静态IP地址:0。将其替换为ADC转换值。务器端执行的CGI处理程序会返回HTTP服务器发送给客户端的HTML文件。可为Web浏览器提供HTTP服务。览器中键入板子的IP地址。默认情况下,会使用静态IP地址:0。TFTP服务器提供文件传输服务,需要一个TFTP客户端。它可以从STM324xx-EVAL/STM322xG-EVAL板的microSD卡上收件。TFTP服务器等待来自TFTP客户端的请求。必须通过PC连接STM324xx-EVAL/STM322xG-EVAL评估板,以上传或文件。为此,PC上必须安装TFTP客户端。这可通过使用tftpd32工具做到,它可以从。注: LwIP包可通过STM32CubeHALAPI使用lwIPTCP/IP 我怎样选择静态或动态(DHCP

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论