用户工具

站点工具


lan_http实验_网页服务器

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
lan_http实验_网页服务器 [2020/07/09 09:29]
zgf
lan_http实验_网页服务器 [2022/03/22 10:23] (当前版本)
sean
行 2: 行 2:
 |技术支持电话|**0379-69926675-801**||| |技术支持电话|**0379-69926675-801**|||
 |技术支持邮件|Gingko@vip.163.com||| |技术支持邮件|Gingko@vip.163.com|||
-|技术论坛|http://​www.eeschool.org||| 
 ^  版本 ​ ^  日期 ​ ^  作者 ​ ^  修改内容 ​ ^ ^  版本 ​ ^  日期 ​ ^  作者 ​ ^  修改内容 ​ ^
 |  V1.0  |  2020-07-09 |  gingko ​ |  初次建立 ​ |  |  V1.0  |  2020-07-09 |  gingko ​ |  初次建立 ​ | 
行 16: 行 15:
 ==== 二、 实验设备及平台 ==== ==== 二、 实验设备及平台 ====
  
-  - iCore4 双核心板。 +  - iCore4 双核心板[[https://​item.taobao.com/​item.htm?​spm=a1z10.1-c-s.w4004-22598974120.15.5923532fsFrHiE&​id=551864196684|点击购买]]。 
-  - JLINK(或相同功能)仿真器。+  - JLINK(或相同功能)仿真器[[https://​item.taobao.com/​item.htm?​id=554869837940|点击购买]]
   - Micro USB线缆。   - Micro USB线缆。
   - 网线。   - 网线。
行 81: 行 80:
 int main(void) int main(void)
 {    {   
-    system_clock.initialize(); ​    ​//​系统时钟初始化+    system_clock.initialize(); ​     //​系统时钟初始化
     led.initialize(); ​              //​LED初始化     led.initialize(); ​              //​LED初始化
     adc.initialize(); ​              //​ADC初始化     adc.initialize(); ​              //​ADC初始化
-    delay.initialize(216); ​        ​//​延时初始化 +    delay.initialize(216); ​         //​延时初始化 
-    my_malloc.initialize(SRAMIN); ​    ​//​动态内存初始化 +    my_malloc.initialize(SRAMIN); ​  ​//​动态内存初始化 
-    usart6.initialize(115200); ​       //​串口波特设置 +    usart6.initialize(115200); ​     //​串口波特设置 
-    usart6.printf("​\033[1;​32;​40m"​); ​  ​//​设置字体终端为绿色+    usart6.printf("​\033[1;​32;​40m"​);​ //​设置字体终端为绿色
     usart6.printf("​\r\nHello,​ I am iCore4!\r\n\r\n"​); ​   //​串口信息输出 ​     usart6.printf("​\r\nHello,​ I am iCore4!\r\n\r\n"​); ​   //​串口信息输出 ​
  
     OSInit(); ​                        //​UCOS初始化     OSInit(); ​                        //​UCOS初始化
     ​     ​
-    while(lwip.initialize()) ​        ​//​lwip初始化+    while(lwip.initialize()) ​         //​lwip初始化
     {     {
      ​LED_RED_ON;​      ​LED_RED_ON;​
         usart6.printf("​\r\nETH initialize error!\r\n\r\n"​);//​ETH初始化失败         usart6.printf("​\r\nETH initialize error!\r\n\r\n"​);//​ETH初始化失败
     }     }
-  web.initialize(); ​              ​//​modbus_tcp初始化+  web.initialize(); ​                  ​//​modbus_tcp初始化
  
     OSTaskCreate(start_task,​(void*)0,​(OS_STK*)&​START_TASK_STK[START_STK_SIZE-1],​START_TASK_PRIO);​     OSTaskCreate(start_task,​(void*)0,​(OS_STK*)&​START_TASK_STK[START_STK_SIZE-1],​START_TASK_PRIO);​
-    OSStart(); ​                    ​//​开启UCOS ​  +    OSStart(); ​                       //​开启UCOS ​  
 } }
    
行 110: 行 109:
 {  ​ {  ​
     mymemset(mallco_dev.memmap[memx],​0,​memtblsize[memx]*4);​ //​内存状态表数据清零  ​     mymemset(mallco_dev.memmap[memx],​0,​memtblsize[memx]*4);​ //​内存状态表数据清零  ​
-     ​mallco_dev.memrdy[memx]=1; ​               //​内存管理初始化OK  ​+     ​mallco_dev.memrdy[memx]=1; ​     //​内存管理初始化OK  ​
  
    
行 125: 行 124:
     OS_CPU_SR cpu_sr;     OS_CPU_SR cpu_sr;
     struct netif *Netif_Init_Flag; ​     //​调用netif_add()函数时的返回值,​用于判断网络初始化是否成功     struct netif *Netif_Init_Flag; ​     //​调用netif_add()函数时的返回值,​用于判断网络初始化是否成功
-    struct ip_addr ipaddr; ​                 //​ip地址 +    struct ip_addr ipaddr; ​             //​ip地址 
-    struct ip_addr netmask; ​                 //​子网掩码 +    struct ip_addr netmask; ​            ​//​子网掩码 
-    struct ip_addr gw;                     ​//​默认网关  +    struct ip_addr gw;                  //​默认网关  
-    if(lan8720.memory_malloc())return 1;   ​//​内存申请失败 +    if(lan8720.memory_malloc())return 1;//​内存申请失败 
-if(lwip_comm_mem_malloc())return 1;   ​//​内存申请失败 +if(lwip_comm_mem_malloc())return 1;     ​//​内存申请失败 
-    if(lan8720.initialize())return 2;     ​//​初始化LAN8720失败  +    if(lan8720.initialize())return 2;   ​//​初始化LAN8720失败  
-    tcpip_init(NULL,​NULL); ​       //​初始化tcp ip内核,​该函数里面会创建tcpip_thread内核任务+    tcpip_init(NULL,​NULL); ​             //​初始化tcp ip内核,​该函数里面会创建tcpip_thread内核任务
     lwip_comm_default_ip_set(&​lwipdev);​ //​设置默认IP等信息     lwip_comm_default_ip_set(&​lwipdev);​ //​设置默认IP等信息
-#if LWIP_DHCP ​   //​使用动态IP+#if LWIP_DHCP ​                          ​//​使用动态IP
     ipaddr.addr = 0;     ipaddr.addr = 0;
     netmask.addr = 0;     netmask.addr = 0;
行 141: 行 140:
     IP4_ADDR(&​netmask,​lwipdev.netmask[0],​lwipdev.netmask[1] ,​lwipdev.netmask[2],​lwipdev.netmask[3]);​     IP4_ADDR(&​netmask,​lwipdev.netmask[0],​lwipdev.netmask[1] ,​lwipdev.netmask[2],​lwipdev.netmask[3]);​
     IP4_ADDR(&​gw,​lwipdev.gateway[0],​lwipdev.gateway[1],​lwipdev.gateway[2],​lwipdev.gateway[3]);​     IP4_ADDR(&​gw,​lwipdev.gateway[0],​lwipdev.gateway[1],​lwipdev.gateway[2],​lwipdev.gateway[3]);​
-    usart6.printf("​网卡en的MAC地址为:​................%d.%d.%d.%d.%d.%d\r\n",​lwipdev.mac[0],​lwipdev.mac[1],​lwipdev.mac[2],​lwipdev.mac[3],​lwipdev.mac[4],​lwipdev.mac[5]);​ +    usart6.printf("​网卡en的MAC地址为:​.......%d.%d.%d.%d.%d.%d\r\n",​lwipdev.mac[0],​lwipdev.mac[1],​lwipdev.mac[2],​lwipdev.mac[3],​lwipdev.mac[4],​lwipdev.mac[5]);​ 
-    usart6.printf("​静态IP地址........................%d.%d.%d.%d\r\n",​lwipdev.ip[0],​lwipdev.ip[1],​lwipdev.ip[2],​lwipdev.ip[3]);​ +    usart6.printf("​静态IP地址...%d.%d.%d.%d\r\n",​lwipdev.ip[0],​lwipdev.ip[1],​lwipdev.ip[2],​lwipdev.ip[3]);​ 
-    usart6.printf("​子网掩码..........................%d.%d.%d.%d\r\n",​lwipdev.netmask[0],​lwipdev.netmask[1],​lwipdev.netmask[2],​lwipdev.netmask[3]);​ +    usart6.printf("​子网掩码...%d.%d.%d.%d\r\n",​lwipdev.netmask[0],​lwipdev.netmask[1],​lwipdev.netmask[2],​lwipdev.netmask[3]);​ 
-    usart6.printf("​默认网关..........................%d.%d.%d.%d\r\n",​lwipdev.gateway[0],​lwipdev.gateway[1],​lwipdev.gateway[2],​lwipdev.gateway[3]);​+    usart6.printf("​默认网关...%d.%d.%d.%d\r\n",​lwipdev.gateway[0],​lwipdev.gateway[1],​lwipdev.gateway[2],​lwipdev.gateway[3]);​
 #​endif ​  ​Netif_Init_Flag=netif_add(&​lwip_netif,&​ipaddr,&​netmask,&​gw,​NULL,&​ethernetif_init,&​tcpip_input);//​向网卡列表中添加一个网口 #​endif ​  ​Netif_Init_Flag=netif_add(&​lwip_netif,&​ipaddr,&​netmask,&​gw,​NULL,&​ethernetif_init,&​tcpip_input);//​向网卡列表中添加一个网口
 #if LWIP_DNS ​   #if LWIP_DNS ​  
行 167: 行 166:
     OS_CPU_SR cpu_sr;     OS_CPU_SR cpu_sr;
     ​     ​
-    OS_ENTER_CRITICAL(); ​   //​关中断 +    OS_ENTER_CRITICAL(); ​  ​//​关中断 
-    res = OSTaskCreate(http_server_netconn_thread,​(void*)0,​(OS_STK*)&​WEB_TASK_STK[WEB_STK_SIZE-1],​WEB_PRIO);​ //​创建TCP服务器线程+    res = OSTaskCreate(http_server_netconn_thread,​(void*)0,​(OS_STK*)&​WEB_TASK_STK[WEB_STK_SIZE-1],​WEB_PRIO); ​             //​创建TCP服务器线程
     OS_EXIT_CRITICAL(); ​   //开中断     OS_EXIT_CRITICAL(); ​   //开中断
     ​     ​
行 201: 行 200:
             return;             return;
         }         }
-        listen(httpsock,​ 5);      //​在socket上进行监听+        listen(httpsock,​ 5);               ​//​在socket上进行监听
         size = sizeof(remotehost);​         size = sizeof(remotehost);​
   while(1)   while(1)
行 208: 行 207:
             ​             ​
         if(httpconn >= 0){          if(httpconn >= 0){ 
-            http_server_serve(httpconn); ​         //​处理连接+            http_server_serve(httpconn); ​   //​处理连接
         }else{         }else{
             close(httpconn);​             close(httpconn);​
行 226: 行 225:
     unsigned short int send_len = 0;     unsigned short int send_len = 0;
     char* name; //​获取方法请求文件名     char* name; //​获取方法请求文件名
-    ret = read(httpcon,​ recv_buffer,​ 1500); ​  ​//​提取http数据请求  ​+    ret = read(httpcon,​ recv_buffer,​ 1500); ​      ​//​提取http数据请求  ​
     st_http_request *http_request;​     st_http_request *http_request;​
     memset(tx_buf,​0x00,​MAX_URI_SIZE);​     memset(tx_buf,​0x00,​MAX_URI_SIZE);​
行 295: 行 294:
 ==== 附录: ==== ==== 附录: ====
  
-1、打开控制面板—→网络和Internet—→网络和共享中心—→更改适配器设置—→以太网—→属性+1、打开控制面板—→网络和Internet—→网络和共享中心—→更改适配器设置—→以太网—→属性
 {{ :​icore4:​icore4_arm_hal_23_4.png?​direct |}}  {{ :​icore4:​icore4_arm_hal_23_4.png?​direct |}} 
-2、Internet协议版本4选择使用下面的IP地址(如下图所示),然后更改IP地址和默认网关+2、Internet协议版本4选择使用下面的IP地址(如下图所示),然后更改IP地址和默认网关
 {{ :​icore4:​icore4_arm_hal_23_5.png?​direct |}}  {{ :​icore4:​icore4_arm_hal_23_5.png?​direct |}} 
  
  
lan_http实验_网页服务器.1594258146.txt.gz · 最后更改: 2020/07/09 09:29 由 zgf