|
一、使用体验:
简单配置就可使用,很方便。再也不用自己写AT指令部分的,而且都是是封装好的API.下边附上一个简单的测试例程。代码极其不规范,请勿作为模板。
二、值得看的源码部分:
注意tcp server的IP和端口配置。测试前要先在主机上起一个tcpserver,然后在板子上配置对应的地址和端口
- extern ARM_DRIVER_WIFI Driver_WiFi0;
- static ARM_DRIVER_WIFI *wifi = &Driver_WiFi0;
-
- ARM_WIFI_CONFIG_t wifi_config = {0};
- ARM_WIFI_NET_INFO_t net_info;
-
- void initialize_wifi (void) {
- char info[32];
-
- wifi = &Driver_WiFi0;
-
- // Initialize and Power-on WiFi Module
- if(wifi->Initialize (NULL) != ARM_DRIVER_OK )
- {
- printf("Initialize err\r\n");
- while(1);
- }
- if(wifi->PowerControl (ARM_POWER_FULL) !=ARM_DRIVER_OK )
- {
- printf("powerControl err\r\n");
- while(1);
- }
-
- // Retrieve module information
- wifi->GetModuleInfo(info, sizeof(info));
- }
- void setOption_wifi(void)
- {
- uint8_t ip[4];
-
- ip[0] = 192U;
- ip[1] = 168U;
- ip[2] = 0U;
- ip[3] = 1U;
-
- // Set IP static address of the Station
- wifi->SetOption (0U, ARM_WIFI_IP, &ip, sizeof(ip));
- }
- void active_wifi(void)
- {
- int32_t status;
- ARM_WIFI_CONFIG_t wifi_config;
-
- wifi_config.ssid = "HiWiFi_59DA5A";
- wifi_config.pass = "xieyanghi";
- wifi_config.security = ARM_WIFI_SECURITY_WPA2;
- wifi_config.ch = 11U;
- wifi_config.wps_method = ARM_WIFI_WPS_METHOD_NONE;
-
- // Connect to wireless network
- status = wifi->Activate (0U, &wifi_config);
- if(status != ARM_DRIVER_OK) {
- while(1)
- {
-
- }
- // error handling
- }
- }
- void ping_host (void) {
- uint8_t ip[4] = { 192U, 168U, 1U, 1U };
- int32_t res;
-
- wifi = &Driver_WiFi0;
- res = wifi->Ping ((uint8_t *)ip, sizeof(ip));
- if (res != ARM_DRIVER_OK) {
- // Host responded
- while(1)
- {
-
- }
- }
- }
- static const char message[] = { "The quick brown fox jumps over the lazy dog." };
-
- void Echo_Client_Thread (void *arg) {
- uint8_t ip[4] = { 192U, 168U, 1U, 53U }; //这里根据主机的IP来配置
- int32_t sock, res;
- char dbuf[120];
-
- while (1) {
- wifi = &Driver_WiFi0;
- sock = wifi->SocketCreate (ARM_SOCKET_AF_INET, ARM_SOCKET_SOCK_STREAM, ARM_SOCKET_IPPROTO_TCP);
-
- res = wifi->SocketConnect (sock, (uint8_t *)ip, sizeof(ip), 6000U);//主机上tcp server的服务端口
- if (res == 0) {
- wifi->SocketSend (sock, message, sizeof(message));
- res = wifi->SocketRecv (sock, dbuf, sizeof(dbuf));
- if (res < 0) {
- break; // Error occured
- }
- if (res > 0) {
- if (memcmp (dbuf, message, res) != 0) {
- // error handling, message is not the same as sent
- }
- }
- }
- wifi->SocketClose (sock);
- osDelay (1000U);
- }
- }
- /*----------------------------------------------------------------------------
- * Application main thread
- *---------------------------------------------------------------------------*/
- __NO_RETURN static void app_main (void *argument) {
- (void)argument;
- // ...
-
- initialize_wifi();
- printf("initialize_wifi complete\r\n");
-
-
- active_wifi();
- printf("active_wifi complete\r\n");
-
- //等待连接
- while(!wifi->IsConnected())
- {
- //循环等待
- }
- printf("Connected complete\r\n");
-
- ping_host();
- printf("ping_host complete\r\n");
-
- Echo_Client_Thread(NULL);
- // Disconnect from wireless network
- wifi->Deactivate (0U);
-
-
- for (;;) {}
- }
复制代码
配置部分:
RTE配置:
用到的组件配置
device配置:
两个配置文件
UART配置和WIFI使用的串口根据自己实际情况作配置,这里仅作示范。
基本上就以上这些
32F746cmsisWifi.7z
(88.5 KB, 下载次数: 209)
|
评分
-
查看全部评分
|