【HAL库每天一例】系列例程从今天开始持续更新。。。。。
我们将**每天至少发布一个基于YS-F1Pro开发板的HAL库例程,
该系列例程将带领大家从零开始使用HAL库,后面会持续添加模块应用例程。
同样的,我们还程序发布基于HAL库的指导文档和视频教程,欢迎持续关注,并提出改进意见。
例程下载:
资料包括程序、相关说明资料以及软件使用截图
链接:http://pan.baidu.com/s/1i574oPv
密码:r3s3
(硬石YS-F1Pro开发板HAL库例程持续更新\1. 软件设计之基本裸机例程(HAL库版本)\YSF1_HAL-065. 以太网-手机APP控制)
/**
******************************************************************************
* 硬石YS-F1Pro开发板例程功能说明
*
* 例程名称: YSF1_HAL-065. 以太网-手机APP控制
*
******************************************************************************
* 说明:
* 本例程配套硬石stm32开发板YS-F1Pro使用。
*
* 淘宝:
* 论坛:http://www.ing10bbs.com
* 版权归硬石嵌入式开发团队所有,请勿商用。
******************************************************************************
*/
【1】例程简介
W5500 是一款全硬件 TCP/IP 嵌入式以太网控制器,为嵌入式系统提供了更加简易的互联网连接
方案.使用硬件逻辑门电路实现 TCP/IP 协议栈的传输层及网络层(如: TCP, UDP, ICMP, IPv4,
ARP, IGMP, PPPoE 等协议),并集成了数据链路层,物理层,以及 32K 字节片上 RAM 作为数据
收发缓存。使得上位机主控芯片,只需承担TCP/IP 应用层控制信息的处理任务。从而大大节省了上
位机对于数据复制、协议处理和中断处理等方面的工作量,提升了系统利用率及可靠性。
YS-F1Pro开发板上集成了W5500芯片,可以实现网络通信。
本例程实现W5500网络环境搭建,最后通过ping通验证网络通路。
【2】跳线帽情况
******* 为保证例程正常运行,必须插入以下跳线帽 **********
丝印编号 IO端口 目标功能引脚 出厂默认设置
JP1 PA10 TXD(CH340G) 已接入
JP2 PA9 RXD(CH340G) 已接入
JP8 PF9 INTn(W5500) 已接入
JP9 PF11 SCSn(W5500) 已接入
【3】操作及现象
使用网线接入YS-F1Pro开发板右上方网口,连接至路由器;使用开发板配套的MINI USB线连接到开发
板标示“调试串口”字样的MIMI USB接口(需要安装驱动),在电脑端打开串口调试助手工具,设置
参数为115200 8-N-1。打开网络调试助手,设置为TCP Server类型,IP地址为自己电脑主机IP,端口
设置为8080,打开网络调试助手的TCP Server。根据自己网络环境设置w5500_conf.c文件中相关参数,
这里把远端IP设置为电脑主机IP,远端端口设置为8080,编译程序并下载,下载完程序之后,在串口调
试助手窗口可接收到信息。然后可以在网络调试助手发送窗口输入发送数据;发送之后,在串口调试助
手会打印接收到的数据并且会回传到网络通信助手。
/******************* (C) COPYRIGHT 2015-2020 硬石嵌入式开发团队 *****END OF FILE****/
tcp_demo.c文件内容/**
************************************************************************************************
* [url=home.php?mod=space&uid=288409]@file[/url] tcp_demo.c
* [url=home.php?mod=space&uid=187600]@author[/url] WIZnet Software Team
* [url=home.php?mod=space&uid=895143]@version[/url] V1.0
* [url=home.php?mod=space&uid=212281]@date[/url] 2015-02-14
* [url=home.php?mod=space&uid=247401]@brief[/url] TCP 演示函数
* [url=home.php?mod=space&uid=93590]@Attention[/url]
************************************************************************************************
**/
#include <stdio.h>
#include <string.h>
#include "Ethernet/Internet/tcp_demo.h"
#include "Ethernet/W5500/W5500_conf.h"
#include "Ethernet/W5500/w5500.h"
#include "Ethernet/W5500/socket.h"
#include "beep/bsp_beep.h"
#include "led/bsp_led.h"
uint8 buff[2048]; /*定义一个2KB的缓存*/
/**
*@brief TCP Server回环演示函数。
*@param 无
*@return 无
*/
void do_tcp_server(void)
{
uint16 len=0;
switch(getSn_SR(SOCK_TCPS)) /*获取socket的状态*/
{
case SOCK_CLOSED: /*socket处于关闭状态*/
socket(SOCK_TCPS ,Sn_MR_TCP,local_port,Sn_MR_ND); /*打开socket*/
break;
case SOCK_INIT: /*socket已初始化状态*/
listen(SOCK_TCPS); /*socket建立监听*/
break;
case SOCK_ESTABLISHED: /*socket处于连接建立状态*/
if(getSn_IR(SOCK_TCPS) & Sn_IR_CON)
{
setSn_IR(SOCK_TCPS, Sn_IR_CON); /*清除接收中断标志位*/
}
len=getSn_RX_RSR(SOCK_TCPS); /*定义len为已接收数据的长度*/
if(len>0)
{
recv(SOCK_TCPS,buff,len); /*接收来自Client的数据*/
buff[len]=0x00; /*添加字符串结束符*/
printf("%s\r\n",buff);
send(SOCK_TCPS,buff,len); /*向Client发送数据*/
}
break;
case SOCK_CLOSE_WAIT: /*socket处于等待关闭状态*/
close(SOCK_TCPS);
break;
}
}
/**
*@brief TCP Client回环演示函数。
*@param 无
*@return 无
*/
void do_tcp_client(void)
{
uint16 len=0;
switch(getSn_SR(SOCK_TCPC)) /*获取socket的状态*/
{
case SOCK_CLOSED: /*socket处于关闭状态*/
socket(SOCK_TCPC,Sn_MR_TCP,local_port++,Sn_MR_ND);
break;
case SOCK_INIT: /*socket处于初始化状态*/
connect(SOCK_TCPC,remote_ip,remote_port); /*socket连接服务器*/
break;
case SOCK_ESTABLISHED: /*socket处于连接建立状态*/
if(getSn_IR(SOCK_TCPC) & Sn_IR_CON)
{
setSn_IR(SOCK_TCPC, Sn_IR_CON); /*清除接收中断标志位*/
}
len=getSn_RX_RSR(SOCK_TCPC); /*定义len为已接收数据的长度*/
if(len>0)
{
recv(SOCK_TCPC,buff,len); /*接收来自Server的数据*/
buff[len]=0x00; /*添加字符串结束符*/
printf("%s\r\n",buff);
switch(buff[len-1]-'0')
{
case 0:
LED1_ON;
break;
case 1:
LED1_OFF;
break;
case 2:
LED2_ON;
break;
case 3:
LED2_OFF;
break;
case 4:
LED3_ON;
break;
case 5:
LED3_OFF;
break;
case 6:
BEEP_ON;
break;
case 7:
BEEP_OFF;
break;
}
}
break;
case SOCK_CLOSE_WAIT: /*socket处于等待关闭状态*/
close(SOCK_TCPC);
break;
}
}
|