当前位置: 首页 > news >正文

STM32 之串口WIFI应用--基于RTOS的环境

STM32的产品应用

文章目录

  • STM32的产品应用
  • 1 项目介绍
    • 1.1 ATK-ESP8266介绍
    • 1.2 ATK-ESP8266 WIFI 模块的原理图
    • 1.3 常见指令
    • 1.4 数据传输
  • 2 STM32接口
    • 2.1 原理图说明
    • 2.2 硬件初始化
      • 2.2.1 初始化寄存器
      • 2.2.2 配置中断获取程序
      • 2.2.3 发送程序
  • 3 WIFI 模组初始化程序
    • 3.1 背景知识介绍
    • 3.2 配置代码


1 项目介绍

本次项目利用WIFI模块设置成为STA模式,访问特定目标机。把检测到温湿度数据上传到

1.1 ATK-ESP8266介绍

ATK-ESP8266 是 ALIENTEK 推出的一款高性能的 UART-WiFi(串口-无线)模块,ATK-ESP8266 板载正点原子团队自主开发的 ATK-ESP-01 模块,该模块通过 FCC,CE 认证,可直接用于产品出口欧美地区。
ATK-ESP8266 模块采用串口(LVTTL)与 MCU(或其他串口设备)通信,内置 TCP/IP协议栈,能够实现串口与 WIFI 之间的转换。
通过 ATK-ESP8266 模块,传统的串口设备只是需要简单的串口配置,即可通过网络(WIFI)传输自己的数据。
ATK-ESP8266 模块支持 LVTTL 串口,兼容 3.3V 和 5V 单片机系统,可以很方便的与你的产品进行连接。模块支持串口转 WIFI STA、串口转 AP 和 WIFI STA+WIFI AP 的模式,从而快速构建串口-WIFI 数据传输方案,方便你的设备使用互联网传输数据。
ATK-ESP8266 模块非常小巧(29mm*19mm),模块通过 6 个 2.54mm 间距的排针与外部连接,

在这里插入图片描述
在这里插入图片描述

1.2 ATK-ESP8266 WIFI 模块的原理图

在这里插入图片描述

1.3 常见指令

在 AT 模式下可以通过串口的 AT 指令对系统参数做配置。指令格式如下:
AT+=\r\n
根据不同指令,模块将返回不同的返回值。其中\r\n 为回车换行符,用 16 进制表示,
就是 0X0D,0X0A。
例如:“AT+CWMODE?\r\n”查询当前模块的 WIFI 模式。
例如:“AT+CWMODE=3\r\n”设置模块 WIFI 模式为 AP+STA 模式。
在这里插入图片描述

1.4 数据传输

数据通过串口直接发送,发送直接需要指令,告知需要发送多少字节。

2 STM32接口

2.1 原理图说明

在这里插入图片描述
STM32 连接到 串口模块
W_TX 连接到 RXD_TTL
W_RX 连接到 TXD_TTL
VCC 连接到 VCC
GND 连接到 GND

2.2 硬件初始化

2.2.1 初始化寄存器

与WIFI 模块默认通讯波特率115200,使用是PB10和PB11号口。

void usart3_init(void)
{  NVIC_InitTypeDef NVIC_InitStructure;GPIO_InitTypeDef GPIO_InitStructure;USART_InitTypeDef USART_InitStructure;RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB,ENABLE); //使能GPIOB时钟RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3,ENABLE);//使能USART3时钟USART_DeInit(USART3);  //复位串口3GPIO_PinAFConfig(GPIOB,GPIO_PinSource11,GPIO_AF_USART3); //GPIOB11复用为USART3GPIO_PinAFConfig(GPIOB,GPIO_PinSource10,GPIO_AF_USART3); //GPIOB10复用为USART3	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11 | GPIO_Pin_10; //GPIOB11和GPIOB10初始化GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;//复用功能GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;	//速度50MHzGPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //推挽复用输出GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; //上拉GPIO_Init(GPIOB,&GPIO_InitStructure); //初始化GPIOB11,和GPIOB10USART_InitStructure.USART_BaudRate = usart3_baud_rate;//波特率 USART_InitStructure.USART_WordLength = USART_WordLength_8b;//字长为8位数据格式USART_InitStructure.USART_StopBits = USART_StopBits_1;//一个停止位USART_InitStructure.USART_Parity = USART_Parity_No;//无奇偶校验位USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//无硬件数据流控制USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;	//收发模式  USART_Init(USART3, &USART_InitStructure); //初始化串口3USART_ITConfig(USART3, USART_IT_RXNE, ENABLE);//开启中断   USART_ITConfig(USART3, USART_IT_IDLE, ENABLE);//开启中断   NVIC_InitStructure.NVIC_IRQChannel = USART3_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=2 ;//抢占优先级2NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;		//子优先级3NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;			//IRQ通道使能NVIC_Init(&NVIC_InitStructure);	//根据指定的参数初始化VIC寄存器USART_Cmd(USART3, ENABLE);               //使能串口
//  创建信号量rt_sem_init(&rt_sem_usart3,"wifi_sem",0,RT_IPC_FLAG_FIFO);
}
INIT_BOARD_EXPORT(usart3_init);    // 初始化流程

2.2.2 配置中断获取程序

利用接收中断,来采集数据。 利用空闲中断,设置字符串结束标志位。

void USART3_IRQHandler(void)
{  rt_interrupt_enter();if(USART_GetITStatus(USART3, USART_IT_RXNE) != RESET)//接收到数据{	USART3_RX_BUF[USART3_RX_CNT++]=USART_ReceiveData(USART3);	  // 采集信息		if(USART3_RX_CNT>=USART3_MAX_RECV_LEN)USART3_RX_CNT=0;	USART_ClearITPendingBit(USART3, USART_IT_RXNE);}else if(USART_GetITStatus(USART3, USART_IT_IDLE) != RESET){	USART_ReceiveData(USART3);		  // 清楚标志位USART3_RX_BUF[USART3_RX_CNT]='\0';  // 添加结束符号USART3_RX_CNT=0;rt_sem_release(&rt_sem_usart3);  // 释放信号量}rt_interrupt_leave();	
}

2.2.3 发送程序

循环发送字符串,利用字符串截至符号控制发送的长度

void usart_send(USART_TypeDef *usart,char *p_str)
{u32 size = rt_strlen(p_str);for(u32 i=0;i<size;i++){USART_SendData(usart, *p_str++);while (USART_GetFlagStatus(usart, USART_FLAG_TC) == RESET){}}
}

3 WIFI 模组初始化程序

3.1 背景知识介绍

串口无线 STA(COM-WIFI STA)模式,模块作为无线 WIFI STA,用于连接到无线网络,实现串口与其他设备之间的无线(WIFI)数据转换互传。该模式下,根据应用场景的不同,可以设置 3 个子模式:TCP 服务器、TCP 客户端,UDP。

接下来看看如何听过 AT 指令配置模块,达到我们所要的功能,这里仅列出必要配置。配置准备:1,模块处于默认设置(即出厂设置);2,准备一个无线路由器,且路由器开启DHCP 服务。

  1. 配置UDP 模式
    在这里插入图片描述
  2. 串口无线 STA 模式,TCP 客户端配置
    在这里插入图片描述
  3. 串口无线 STA 模式,TCP 服务器配置。
    在这里插入图片描述

3.2 配置代码

http://www.dtcms.com/a/353861.html

相关文章:

  • AlphaFold 2 本地部署与安装教程(Linux)
  • ICCV 2025 | 清华IEDA提出GUAVA,单图创建可驱动的上半身3D化身!实时、高效,还能捕捉细腻的面部表情和手势。
  • 【51单片机】【protues仿真】基于51单片机篮球计时计分器数码管系统
  • 什么是代理ip?代理ip的运作机制
  • C++ 中 ::(作用域解析运算符)的用途
  • 大小鼠糖水偏爱实验系统 糖水偏好实验系统 小鼠糖水偏好实验系统 大鼠糖水偏好实验系统
  • 【半导体制造流程概述】
  • 优化IDEA卡顿的问题
  • 使用CCProxy搭建http/https代理服务器
  • AWS OpenSearch 可观测最佳实践
  • Maya绑定:人物绑定详细案例
  • 数据结构之 【红黑树的简介与插入问题的实现】
  • 数值分析离散积分近似求值
  • 【数据分析】微生物群落网络构建与模块划分的比较研究:SparCC、Spearman-RAW与Spearman-CLR方法的性能评估
  • Shell编程-随机密码生成
  • volitale伪共享问题及解决方案
  • SoC如何实现线程安全?
  • 【进阶篇第五弹】《详解存储过程》从0掌握MySQL中的存储过程以及存储函数
  • TypeScript:Interface接口
  • 如何启动一个分支网络改造试点?三步走
  • 【链表 - LeetCode】25. K 个一组翻转链表
  • 干眼症护理学注意事项
  • linux下的网络编程(2)
  • 技术分析 | Parasoft C/C++test如何突破单元测试的隔离难题
  • 亚马逊关键词策略全解析:类型、工具与多账号运营优化指南
  • AT_abc406_f [ABC406F] Compare Tree Weights
  • Windows/Linux 环境下 Jmeter 性能测试的安装与使用
  • 基于SpringBoot的宠物领养服务系统【2026最新】
  • MySQL 面试题系列(五)
  • Unity自定义Inspector面板之使用多选框模拟单选框