精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

AB32VG1連接無線網

AB32VG1評測 ? 2021-11-04 22:43 ? 次閱讀

1、 資源介紹

pYYBAGGDx76Af-MGAAFfNm8F3Qw511.png

可以看到,AB32VG1擁有三個全雙工串口
資源分配:
UART0 -> 上位機通訊
UART1 -> ESP8266無線網絡
UART2 -> 待分配


UART1所對應的引腳為PA3和PA4,其中PA3為RX1,PA4為TX1

2、ESP8266介紹:

pYYBAGGDyCaARZo4AAD2zvgNTZI273.pngpYYBAGGDyJmAPldKAAEsXfeg0L0041.png

3、連接圖

單片機與ESP8266采用串口通訊(AT指令),功能:獲取網絡數據及設備聯網

pYYBAGGDyISAes03AAAqwpyqejQ522.png

坑1、在程序實現之前,需要注意的點,在配置中需要打開“硬件”下的UART1功能,要注意配置截圖中有沒有SDK軟件包,如果沒有打開UART1口編譯不通過。(升級軟件版本2.1.2)

poYBAGGDyOuAc9znAACOvQn3-Q0578.png

坑2、還有一個坑的地方,例程中:搞不明白為什么要錯位,錯位后收到的數據為亂碼

poYBAGGDyUqANoE-AAAdcoBgT7c244.png

坑3、波特率顯示問題(要么整體改)

poYBAGGDzyCAWw3AAABtdPb0fjY766.png

要么單獨定義判斷i的值

poYBAGGD0MSATAYBAABUAsVLdx0784.png

4、AT指令

1、 AT+RST

       功能:重啟模塊

2、AT+CWMODE=

     功能:mode=1 :Station模式(接收模式)

                 mode=2:AP模式(發送模式)

                mode=3:AP+Station模式

3、AT+ CWSAP= ,,, 

     功能:配置AP參數(指令只有在AP模式開啟后有效)

                ssid:接入點名稱

               pwd:密碼

              chl:通道號

              ecn:加密方式:(0-OPEN, 1-WEP, 2-WPA_PSK, 3-WPA2_PSK, 4-WPA_WPA2_PSK)

             注意:此設置完成后,連接網絡會可能出現連接不上的情況,請發送 AT+RST 命令并等待幾分鐘之
             后再連接。

4、AT+CWLIF

     功能:查看已接入設備的 IP

5、AT+CIFSR

      功能:查看本模塊的 IP 地址

      注意: AP 模式下無效!會造成死機現象!

6、AT+CWMODE?

      功能:查看本機配置模式

7、AT+CIPMUX?

     功能:查詢本模塊是否建立多連接

    說明: :0-單路連接模式, 1-多路連接模式

8、AT+CIPMODE?
      功能:查詢本模塊的傳輸模式

說明: :0-非透傳模式, 1-透傳模式

9、AT+CIPSTO?

     功能:查詢本模塊的服務器超時時間

10、AT+CIPMUX=1

       功能:開啟多連接模式

11、AT+CIPSERVER=1,8080

       功能:創建服務器

關閉 server 服務如下圖所示:

說明: :0-關閉 server 模式, 1-開啟 server 模式
:端口號,缺省值為 333

說明: (1) AT+ CIPMUX=1 時才能開啟服務器;關閉 server 模式需要重啟
(2)開啟 server 后自動建立 server 監聽,當有 client 接入會自動按順序占用一個連
接。

12、AT+CIPSTO=2880

        功能:設置服務器超時時間

13、AT+CIPSTATUS

        功能:查看當前連接

說明: :連接的 id 號 0-4
:字符串參數,類型 TCP 或 UDP
:字符串參數, IP 地址
:端口號
: 0-本模塊做 client 的連接, 1-本模塊做 server 的連接

14、AT+CIPSEND=1,6

        功能:向某個連接發送數據


指令: 1)單路連接時(+CIPMUX=0),指令為: AT+CIPSEND=
2)多路連接時(+CIPMUX=1) ,指令為: AT+CIPSEND= ,
響應:收到此命令后先換行返回”>”,然后開始接收串口數據
當數據長度滿 length 時發送數據。
如果未建立連接或連接被斷開,返回 ERROR
如果數據發送成功,返回 SEND OK
說明: :需要用于傳輸連接的 id 號
:數字參數,表明發送數據的長度,最大長度為 2048

15、AT+CIPSERVER=0
        功能:關閉 server 服務

      

指令: AT+CIPSERVER=[,]
說明: :0-關閉 server 模式, 1-開啟 server 模式
:端口號,缺省值為 333
響應: OK
說明: (1) AT+ CIPMUX=1 時才能開啟服務器;關閉 server 模式需要重啟
(2)開啟 server 后自動建立 server 監聽,當有 client 接入會自動按順序占用一個連
接。

16、AT+CIPSTART=2,"TCP","192.168.4.101",8080
        功能:建立 TCP 連接

指令: 1)單路連接時(+CIPMUX=0),指令為: AT+CIPSTART= ,,
2)多路連接時(+CIPMUX=1),指令為: AT+CIPSTART=,,,
響應:如果格式正確且連接成功,返回 OK,否則返回 ERROR
如果連接已經存在,返回 ALREAY CONNECT
說明: :0-4,連接的 id 號
:字符串參數,表明連接類型, ”TCP”-建立 tcp 連接, ”UDP”-建立 UDP 連接
:字符串參數,遠程服務器 IP 地址
:遠程服務器端口號

17、AT+CIPSEND=2,8

指令: 1)單路連接時(+CIPMUX=0),指令為: AT+CIPSEND=
2)多路連接時(+CIPMUX=1) ,指令為: AT+CIPSEND= ,
響應:收到此命令后先換行返回”>”,然后開始接收串口數據
當數據長度滿 length 時發送數據。
如果未建立連接或連接被斷開,返回 ERROR
如果數據發送成功,返回 SEND OK
說明: :需要用于傳輸連接的 id 號
:數字參數,表明發送數據的長度,最大長度為 2048
18、AT+CWLAP

        功能:查看當前無線路由器列表

響應:正確: (終端返回AP列表)
+ CWLAP: ,,
OK
錯誤: ERROR
說明: < ecn >:0-OPEN, 1-WEP, 2-WPA_PSK, 3-WPA2_PSK, 4-WPA_WPA2_PSK
:字符串參數,接入點名稱
:信號強度
19、AT+CWJAP=”MERSAIN”,”XXXXXXXX”

       功能:加入當前無線網絡

指令: AT+CWJAP=,< pwd >
說明: :字符串參數,接入點名稱
:字符串參數,密碼,最長64字節ASCII
響應:正確: OK
錯誤: ERROR
20、AT+CWJAP?

        功能:檢測是否真的連上該路線網絡
 
指令: AT+CWJAP?
響應:返回當前選擇的AP
+ CWJAP:
OK
說明: :字符串參數,接入點名稱
21、AT+CIFSR

        功能:查看模塊 IP 地址

指令: AT+CIFSR
響應:正確: + CIFSR:
OK
錯誤: ERROR
說明: :字符串參數,接入點名稱

5、程序實現

myuart.c文件

/*
 * Copyright (c) 2006-2021, RT-Thread Development Team
 *
 * SPDX-License-Identifier: Apache-2.0
 *
 * Change Logs:
 * Date           Author       Notes
 * 2021-11-04     Administrator       the first version
 */
#include 
#include "string.h"
#include "applications\myuart\myuart.h"


/* 用于接收消息的信號量 */
static struct rt_semaphore rx_sem;
static rt_device_t serial;
/* 接收數據回調函數 */
static rt_err_t uart_input(rt_device_t dev, rt_size_t size)
{
 /* 串口接收到數據后產生中斷,調用此回調函數,然后發送接收信號量 */
 rt_sem_release(&rx_sem);
 return RT_EOK;
}
static void serial_thread_entry(void *parameter)
{
 char ch;
 while (1)
 {
 /* 從串口讀取一個字節的數據,沒有讀取到則等待接收信號量 */
 while (rt_device_read(serial, -1, &ch, 1) != 1)
 {
 /* 阻塞等待接收信號量,等到信號量后再次讀取數據 */
 rt_sem_take(&rx_sem, RT_WAITING_FOREVER);
 }
 /* 讀取到的數據通過串口錯位輸出 */
 //ch = ch + 1;
 //rt_device_write(serial, 0, &ch, 1);
 rt_kprintf("%c",ch);
 } }

static int uart_sample(int argc, char *argv[])
{
 rt_err_t ret = RT_EOK;
 char uart_name[RT_NAME_MAX];
 char str[] = "hello RT-Thread!\r\n";
 if (argc == 2)
 {
 rt_strncpy(uart_name, argv[1], RT_NAME_MAX);
 }
 else
 {
 rt_strncpy(uart_name, SAMPLE_UART_NAME, RT_NAME_MAX);
 }
 /* 查找系統中的串口設備 */
 serial = rt_device_find(uart_name);
 if (!serial)
 {
 rt_kprintf("find %s failed!\n", uart_name);
 return RT_ERROR;
 }
 /* 初始化信號量 */
 rt_sem_init(&rx_sem, "rx_sem", 0, RT_IPC_FLAG_FIFO);
 /* 以中斷接收及輪詢發送模式打開串口設備 */
 rt_device_open(serial, RT_DEVICE_FLAG_INT_RX);
 /* 設置接收回調函數 */
 rt_device_set_rx_indicate(serial, uart_input);
 /* 發送字符串 */
 rt_device_write(serial, 0, str, (sizeof(str) - 1));
 /* 創建 serial 線程 */
 rt_thread_t thread = rt_thread_create("serial", serial_thread_entry, RT_NULL, 1024, 25, 10);
 /* 創建成功則啟動線程 */
 if (thread != RT_NULL)
 {
 rt_thread_startup(thread);
 }
 else
 {
 ret = RT_ERROR;
 }
 return ret;
}
/* 導出到 msh 命令列表中 */
MSH_CMD_EXPORT(uart_sample, uart device sample);

/*自定義的函數*/

/*初始化函數*/
int uart_init(char *port)
{
 rt_err_t ret = RT_EOK;
 char uart_name[RT_NAME_MAX];
 char str[] = "hello RT-Thread!\r\n";
 rt_strncpy(uart_name, port, RT_NAME_MAX);
 /* 查找系統中的串口設備 */
 serial = rt_device_find(uart_name);
 if (!serial)
 {
 rt_kprintf("find %s failed!\n", uart_name);
 return RT_ERROR;
 }
 /* 初始化信號量 */
 rt_sem_init(&rx_sem, "rx_sem", 0, RT_IPC_FLAG_FIFO);
 /* 以中斷接收及輪詢發送模式打開串口設備 */
 rt_device_open(serial, RT_DEVICE_FLAG_INT_RX);
 /* 設置接收回調函數 */
 rt_device_set_rx_indicate(serial, uart_input);
 /* 發送字符串 */
 rt_device_write(serial, 0, str, (sizeof(str) - 1));
 /* 創建 serial 線程 */
 rt_thread_t thread = rt_thread_create("serial", serial_thread_entry, RT_NULL, 1024, 25, 10);
 /* 創建成功則啟動線程 */
 if (thread != RT_NULL)
 {
 rt_thread_startup(thread);
 }
 else
 {
 ret = RT_ERROR;
 }
 return ret;
}
/*結束*/
/*發送字符串*/
int uart_sendstring(char *str) {
    rt_device_write(serial, 0, str, (strlen(str) - 1));
}
/*結束*/

myuart.h文件

/*
 * Copyright (c) 2006-2021, RT-Thread Development Team
 *
 * SPDX-License-Identifier: Apache-2.0
 *
 * Change Logs:
 * Date           Author       Notes
 * 2021-11-04     Administrator       the first version
 */
#ifndef APPLICATIONS_MYUART_MYUART_H_
#define APPLICATIONS_MYUART_MYUART_H_

/*默認串口*/
#define SAMPLE_UART_NAME "uart1"

int uart_init(char *port);
int uart_sendstring(char *str);

#endif /* APPLICATIONS_MYUART_MYUART_H_ */

main文件

/*
 * Copyright (c) 2020-2021, Bluetrum Development Team
 *
 * SPDX-License-Identifier: Apache-2.0
 *
 * Change Logs:
 * Date           Author       Notes
 * 2020/12/10     greedyhao    The first version
 */

/**
 * Notice!
 * All functions or data that are called during an interrupt need to be in RAM.
 * You can do it the way exception_isr() does.
 */

#include 
#include "board.h"
#include "applications\myuart\myuart.h"

int main(void)
{
    uint8_t pin = rt_pin_get("PE.1");
    uart_init("uart1");
    rt_pin_mode(pin, PIN_MODE_OUTPUT);
    rt_kprintf("Hello, world\n");

    while (1)
    {
        uart_sendstring("AT\r\n");
        rt_pin_write(pin, PIN_LOW);
        rt_thread_mdelay(500);
        rt_pin_write(pin, PIN_HIGH);
        rt_thread_mdelay(500);
    }
}

6、效果展示

pYYBAGGD08KAdx6VAA8n2eS1FpY889.png
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 國產單片機
    +關注

    關注

    1

    文章

    20

    瀏覽量

    3966
  • 中科藍訊
    +關注

    關注

    9

    文章

    54

    瀏覽量

    9849
收藏 人收藏

    評論

    相關推薦

    無線網解碼器怎么連接

    無線網解碼器的連接方式可能因設備型號、品牌以及應用場景的不同而有所差異。以下提供的是一種較為通用的連接步驟,但請注意,在實際操作中應參考具體設備的說明書或官方指導進行操作。 一、設備準備 無線
    的頭像 發表于 10-15 16:31 ?245次閱讀

    無線網路由器怎么

    無線網路由器的連接過程相對復雜,但按照以下步驟操作,可以確保連接的成功和網絡的穩定性。 一、準備工作 設備檢查 : 確保有兩個支持無線
    的頭像 發表于 10-15 15:50 ?394次閱讀

    無線網橋的工作原理和特點是什么

    無線網橋(Wireless Bridge)是一種在無線網絡中連接兩個或多個網絡段的設備,它允許數據在不同的網絡之間傳輸。無線網橋通常用于連接
    的頭像 發表于 10-15 15:47 ?700次閱讀

    無線網橋可以當wifi用嗎

    無線網橋(Wireless Bridge)是一種無線通信設備,它主要用于連接兩個或多個網絡,實現數據的傳輸。無線網橋可以在不同的網絡之間建立連接
    的頭像 發表于 10-15 15:44 ?491次閱讀

    無線網橋可以用來上網嗎?無線網橋能當wifi用嗎?

     無線網橋可以用來上網,但具體是否可行還取決于無線網橋的功能和配置以及實際使用場景。
    的頭像 發表于 10-01 15:26 ?984次閱讀

    無線網橋的連接與調試方法

    無線網橋的連接與調試方法主要涉及設備的配置、網絡參數的設定以及通信質量的優化。以下是詳細的步驟和注意事項:
    的頭像 發表于 10-01 15:23 ?531次閱讀

    wds無線怎么設置

    無線分布式系統(Wireless Distribution System,簡稱WDS)是一種允許無線網絡設備之間進行橋的技術。通過WDS,可以將多個無線設備
    的頭像 發表于 07-18 09:59 ?953次閱讀

    線網卡和無線網卡分別指的是什么

    線網卡和無線網卡是計算機或網絡設備中用于連接網絡的兩種不同類型的網絡接口卡。它們的主要區別在于傳輸媒介和連接方式。
    的頭像 發表于 05-28 15:28 ?3284次閱讀

    無線網橋的工作原理 無線網橋的安裝注意事項

    無線網橋的工作原理 無線網橋的安裝注意事項? 無線網橋是一種用于擴充無線網絡覆蓋范圍的設備,它可以通過無線信號來
    的頭像 發表于 02-03 16:27 ?3135次閱讀

    無線網卡驅動怎么安裝 無線網卡怎么連接臺式電腦

    如今,隨著科技的不斷發展,無線網絡已經成為了我們生活中不可或缺的一部分。對于臺式電腦用戶而言,如果沒有內置無線網卡,就需要通過安裝外置無線網卡來連接
    的頭像 發表于 01-19 09:54 ?3120次閱讀

    連接兩個局域網應該使用無線網橋還是使用光纖轉換器對接呢?

    連接兩個局域網應該使用無線網橋還是使用光纖轉換器對接呢? 連接兩個局域網時,使用無線網橋還是光纖轉換器對接的選擇應基于特定的需求和條件來決定。本文將從不同的角度分析和比較這兩種方法,以
    的頭像 發表于 01-09 11:23 ?819次閱讀

    如何將以太網連接轉換為無線網絡連接

    如何將以太網連接轉換為無線網絡連接? 將以太網連接轉換為無線網絡連接是一種常見的需求,特別是在現代家庭中。有幾種方法可以實現這一轉換,包括使用無線
    的頭像 發表于 12-28 11:15 ?4779次閱讀

    什么是無線網卡?它是如何工作的?如何安裝無線網卡?

    什么是無線網卡?它是如何工作的?如何安裝無線網卡? 無線網卡(無線適配器)是一種設備,用于使計算機或其他設備能夠連接
    的頭像 發表于 12-15 09:58 ?1635次閱讀

    無線網卡槽位有哪些種類及其優勢介紹

    介紹各種類型的無線網卡槽以及它們的優勢。 1. PCI槽:PCI(Peripheral Component Interconnect)槽是最常用的無線網卡插槽。它是一種用于將外接設備與計算機主板進行
    的頭像 發表于 12-15 09:58 ?1225次閱讀

    選擇無線網卡的原則和方法

    選擇無線網卡的原則和方法 無線網卡是一種用于連接電腦或其他設備與無線網絡的設備,它可以通過Wi-Fi信號接收和發送數據。隨著無線網絡的廣泛應
    的頭像 發表于 12-11 11:38 ?1138次閱讀