<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                想要使用LwIP,那就必須先將協議棧初始化,我們我們就創建一個函數,在函數中初始化協議棧,注冊網卡,設置主機的IP地址、子網掩碼、網關地址等,比如作者個人電腦的IP地址是192.163.1.181,那么我們在開發板上設置的IP地址必須是與路由器處于同一子網的,我就設置為192.168.1.122,因為這個地址必須是路由器承認的合法地址,否則路由器不會對這個IP地址的數據包進行轉發,網關就寫對應的網關(路由器IP地址)192.168.1.1即可,255.255.255.0為整個局域網的子網掩碼。 然后掛載我們的網卡,掛載網卡的函數我們也講解過了,就是netif\_add()函數,如果我們了解了前面章節的內容,移植起來是一點都不費勁的。這里主要講解一下ethernet\_input()函數,這個函數在ethernet.c文件中(在以前的版本如1.4.1,這個函數在etharp.c文件),主要是用于無操作系統時候LwIP去處理接收到的數據,接收網卡的數據然后往上層遞交,對于不同的數據包進行不同的處理,如果是ARP包,則調用etharp\_input()函數交給ARP去處理,更新ARP緩存表;如果是IP包,則調用ip4\_input()函數遞交給IP層去處理,在后續會詳細講解,此處了解一下即可,協議棧初始化的源碼具體見代碼清單 7?7。 提示:該函數由用戶編寫,可以隨意放在任何地方,作者個人就將它放在main.c文件中。 ``` 1 /*Static IP ADDRESS: IP_ADDR0.IP_ADDR1.IP_ADDR2.IP_ADDR3 */ 2 #define IP_ADDR0 192 3 #define IP_ADDR1 168 4 #define IP_ADDR2 1 5 #define IP_ADDR3 122 6 7 /*NETMASK*/ 8 #define NETMASK_ADDR0 255 9 #define NETMASK_ADDR1 255 10 #define NETMASK_ADDR2 255 11 #define NETMASK_ADDR3 0 12 13 /*Gateway Address*/ 14 #define GW_ADDR0 192 15 #define GW_ADDR1 168 16 #define GW_ADDR2 1 17 #define GW_ADDR3 1 18 /* USER CODE END 0 */ 19 20 void LwIP_Init(void) 21 { 22 23 IP4_ADDR(&ipaddr,IP_ADDR0,IP_ADDR1,IP_ADDR2,IP_ADDR3); 24 IP4_ADDR(&netmask,NETMASK_ADDR0,NETMASK_ADDR1, 25 NETMASK_ADDR2,NETMASK_ADDR3); 26 IP4_ADDR(&gw,GW_ADDR0,GW_ADDR1,GW_ADDR2,GW_ADDR3); 27 28 /* Initilialize the LwIP stack without RTOS */ 29 lwip_init(); 30 31 /* add the network interface (IPv4/IPv6) without RTOS */ 32 netif_add(&gnetif, &ipaddr, &netmask, &gw, NULL, 33 &ethernetif_init, &ethernet_input); 34 35 /* Registers the default network interface */ 36 netif_set_default(&gnetif); 37 38 if (netif_is_link_up(&gnetif)) 39 { 40 /*When the netif is fully configured this function must be called */ 41 netif_set_up(&gnetif); 42 } 43 else 44 { 45 /* When the netif link is down this function must be called */ 46 netif_set_down(&gnetif); 47 } 48 49 } ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看