下载 FreeRTOS
 

出色的 RTOS & 嵌入式软件

最新资讯
简化任何设备的身份验证云连接。
利用 CoAP 设计节能型云连接 IoT 解决方案。
11.0.0 版 FreeRTOS 内核简介:
FreeRTOS 路线图和代码贡献流程。
使用 FreeRTOS 实现 OPC-UA over TSN。
注意: 自 FreeRTOS V4.0.0 起,这些堆栈初始化 API 已被弃用 。请参阅 FreeRTOS_IPInit_Multi() 了解支持 IPv6、多个端点和多个接口的新 API。如需使用已弃用的 API ,请将 FreeRTOSIPConfig.h 头文件中的 ipconfigIPv4_BACKWARD_COMPATIBLE 设置为 1。

FreeRTOS_IPInit()

[FreeRTOS-Plus-TCP API 引用]

FreeRTOS_sockets.h
BaseType_t FreeRTOS_IPInit( const uint8_t ucIPAddress[ ipIP_ADDRESS_LENGTH_BYTES ],
                               const uint8_t ucNetMask[ ipIP_ADDRESS_LENGTH_BYTES ],
                               const uint8_t ucGatewayAddress[ ipIP_ADDRESS_LENGTH_BYTES ],
                               const uint8_t ucDNSServerAddress[ ipIP_ADDRESS_LENGTH_BYTES ],
                               const uint8_t ucMACAddress[ ipMAC_ADDRESS_LENGTH_BYTES ] );
		

初始化 FreeRTOS -Plus- TCP 堆栈。 FreeRTOS_IPInit() 必须在 任何其他 FreeRTOS-Plus-TCP 函数之前调用。

ipip_ADDRESS_LENGTH_BYTES 定义为 4。 ipMAC_ADDRESS_LENGTH_BYTES 定义为 6。

参数:

ucIPAddress   如果 ipconfigUSE_DHCP 设置为 0(在 FreeRTOSIPConfig.h 中), 那么网络节点的 IP 地址是静态的, 并根据 ucIPAddress 的值配置。

如果 ipconfigUSE_DHCP 设置为 1 ,那么 FreeRTOS-Plus-TCP 将尝试从 DHCP 服务器获取 IP 地址。 如果 无法获取 IP 地址,那么网络节点 将恢复为使用根据 ucIPAddress 的值配置的静态 IP 地址 。

IP 地址表示为四字节数组, 其中索引 0 处保存 IP 地址的第一个八位字节, 索引 3 处保存 IP 地址的最后一个八位字节。 请参阅 下方示例。

ucNetmask   如果 ipconfigUSE_DHCP 设置为 0(在 FreeRTOS IPConfig.h 中), 那么网络节点的网络掩码是静态的, 并根据 ucNetmask 的值配置。

如果 ipconfigUSE_DHCP 设置为 1 ,那么 FreeRTOS-Plus-TCP 将尝试从 DHCP 服务器获取网络掩码。 如果 无法获取网络掩码,那么网络节点 将恢复为使用根据 ucNetMask 的值配置的静态网络掩码 。

网络掩码表示为四字节数组, 其中索引 0 处保存网络掩码的第一个八位字节, 索引 3 处保存网络掩码的最后一个八位字节。 请参阅 下方示例。

ucGatewayAddress   如果 ipconfigUSE_DHCP 设置为 0(在 FreeRTOSIPConfig.h 中) 那么网络网关的 IP 地址是静态的, 并根据 ucGatewayAddress 的值配置。

如果 ipconfigUSE_DHCP 设置为 1 ,那么 FreeRTOS-Plus-TCP 将尝试从 DHCP 服务器获取网络网关的 IP 地址 。 如果无法获取网络网关的 IP 地址, 那么网络节点将恢复为使用 根据 ucGatewayAddress 的值配置的静态 IP 地址。

IP 地址表示为四字节数组, 其中索引 0 处保存 IP 地址的第一个八位字节, 索引 3 处保存 IP 地址的最后一个八位字节。 请参阅 下方示例。

ucDNSServerAddress   如果 ipconfigUSE_DHCP 设置为 0(在 FreeRTOSIPConfig.h 中), 那么 DNS 服务器的 IP 地址是静态的, 并根据 ucDNSServerAddress 的值配置。

如果 ipconfigUSE_DHCP 设置为 1 ,那么 FreeRTOS-Plus-TCP 将尝试从 DHCP 服务器获取 DNS 服务器的 IP 地址 。 如果无法获取 DNS 服务器的 IP 地址, 那么网络节点将恢复为使用 根据 ucDNSServerAddress 的值配置的静态 IP 地址作为 DNS 服务器的地址。

IP 地址表示为四字节数组, 其中索引 0 处保存 IP 地址的第一个八位字节, 索引 3 处保存 IP 地址的最后一个八位字节。 请参阅 下方示例。

ucMACAddress   网络节点的 MAC 地址。

MAC IP 地址表示为六字节数组 其中索引 0 处保存 MAC 地址的第一个八位字节, 索引 5 处保存 MAC 地址的最后一个八位字节。 请参阅 下方示例。

返回:

如果TCP/IP 堆栈初始化成功,则返回 pdPASS。 如果 TCP/IP 堆栈因为以下原因未初始化,则返回 pdFAIL: FreeRTOS_IPInit() 之前已调用过, 或无法创建网络缓冲区或 IP RTOS 任务。

用法示例:


/* FreeRTOS-Plus-TCP sockets include. */
#include "FreeRTOS_sockets.h"

/* Define the network addressing. These parameters will be used if either
ipconfigUDE_DHCP is 0 or if ipconfigUSE_DHCP is 1 but DHCP auto configuration
failed. */

static const uint8_t ucIPAddress[ 4 ] = { 192, 168, 0, 200 };
static const uint8_t ucNetMask[ 4 ] = { 255, 255, 255, 255 };
static const uint8_t ucGatewayAddress[ 4 ] = { 192, 168, 0, 1 };

/* The following is the address of an OpenDNS server. */
static const uint8_t ucDNSServerAddress[ 4 ] = { 208, 67, 222, 222 };

/* The MAC address array is not declared const as the MAC address will normally
be read from an EEPROM and not hard coded (in real deployed applications).*/

static uint8_t ucMACAddress[ 6 ] = { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55 };

void aFunction( void )
{
/* Initialise the TCP/IP stack. */
FreeRTOS_IPInit( ucIPAddress,
ucNetMask,
ucGatewayAddress,
ucDNSServerAddress,
ucMACAddress );
}


Example use of the FreeRTOS_IPInit() API function
Copyright (C) Amazon Web Services, Inc. or its affiliates. All rights reserved.