ESP32 与 STM32 串口通信

这篇具有很好参考价值的文章主要介绍了ESP32 与 STM32 串口通信。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

软硬件条件

硬件

1. ESP-WROOM-32
2. STM32F103C8T6

开发环境

1. Arduino IDE
2. keil MDK(5)

ESP32 串口

ESP32 一共有三个 UART 通讯接口,设备号从 0~2,即 UART0,UART1,UART2。

每个UART控制器都是独立配置的,参数包括波特率、数据比特长度、位序、停止位数、奇偶校验位等。

本文章中使用ESP-WROOM-32开发板下载调试串口UART0和UART2(与STM32进行通信)实现。

实现代码

ESP32 部分

String readUART = ""; // 接收串口字符串

void serial_init()   //串口初始化
{
    Serial.begin(115200);	//串口0初始化
    Serial2.begin(115200);	//串口2初始化
}

void setup()
{
    serial_init();
}

void loop()
{
    if (Serial.available()) //使用串口0给ESP32发送数据
    {
        readUART = Serial.readString();
        Serial2.printf("%s\r\n",readUART);  //将得到数据发送给STM32
        Serial.printf("%s\r\n",readUART);	//打印数据在电脑上
        readUART = "";
    }
}

STM32 部分代码

STM32部分代码参照 正点原子 串口部分文章来源地址https://www.toymoban.com/news/detail-513386.html

u16 USART_RX_STA=0;       //接收状态标记	  
  
void uart_init(u32 bound){
  //GPIO端口设置
  	GPIO_InitTypeDef GPIO_InitStructure;
	USART_InitTypeDef USART_InitStructure;
	NVIC_InitTypeDef NVIC_InitStructure;
	 
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA, ENABLE);	//使能USART1,GPIOA时钟
  
	//USART1_TX   GPIOA.9
  	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //PA.9
  	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;	//复用推挽输出
  	GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIOA.9
   
 	 //USART1_RX	  GPIOA.10初始化
  	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;//PA10
  	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空输入
  	GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIOA.10  

  	//Usart1 NVIC 配置
  	NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
	NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3 ;//抢占优先级3
	NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;		//子优先级3
	NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;			//IRQ通道使能
	NVIC_Init(&NVIC_InitStructure);	//根据指定的参数初始化VIC寄存器
  
   //USART 初始化设置

	USART_InitStructure.USART_BaudRate = bound;//串口波特率
	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(USART1, &USART_InitStructure); //初始化串口1
  	USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);//开启串口接受中断
 	USART_Cmd(USART1, ENABLE);                    //使能串口1 

}

void USART1_IRQHandler(void)                	//串口1中断服务程序
{
	u8 Res;
	if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)  //接收中断(接收到的数据必须是0x0d 0x0a结尾)
	{
		Res =USART_ReceiveData(USART1);	//读取接收到的数据
		if((USART_RX_STA&0x8000)==0)//接收未完成
		{
			if(USART_RX_STA&0x4000)//接收到了0x0d
			{
				if(Res!=0x0a)USART_RX_STA=0;//接收错误,重新开始
				else USART_RX_STA|=0x8000;	//接收完成了 
			}
			else //还没收到0X0D
			{	
				if(Res==0x0d)USART_RX_STA|=0x4000;
				else
				{
					USART_RX_BUF[USART_RX_STA&0X3FFF]=Res ;
					USART_RX_STA++;
					if(USART_RX_STA>(USART_REC_LEN-1))USART_RX_STA=0;//接收数据错误,重新开始接收	  
				}		 
			}
		}
     } 
}

到了这里,关于ESP32 与 STM32 串口通信的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • STM32与ESP32的硬件SPI通信(个人学习记录)

            STM32F103ZET6作为主机,使用SPI2,ESP32S2作为从机,进行SPI双向通信;硬件接线如下:                                                 主机                        从机 CS                                           PB12 ——————  14 MOSI         

    2024年02月07日
    浏览(31)
  • 机器人控制系统软硬件平台

    工业机器人的发展历程: 1950s-1960s:工业机器人诞生,开始应用于生产线自动化。 1970s-1980s:工业机器人技术快速发展,引入新的控制方法和结构设计。 1990s-2000s:工业机器人技术不断完善,引入数字化控制和网络通信。 21世纪:工业机器人技术快速发展,智能化和人机协同

    2024年02月09日
    浏览(45)
  • 【轮式平衡机器人】——软硬件配置/准备

    本系列以轮式平衡移动机器人为例,将使用 基于模型设计(MBD)方法 进行介绍,涉及基础硬件、软件、控制算法等多方面内容,结合 MATLAB/Simulink 的强大仿真能力和代码生成能力辅助设计!在此过程中可以系统了解开发全流程,学习到各种知识! 很熟悉,不再赘述,也可见

    2024年01月20日
    浏览(40)
  • 手机外壳缺陷视觉检测软硬件方案

      单独使用一种光源效果图 同轴光会出现亮度不够的情况;回形面光因为光源中间的圆孔会使图像有阴影,造成图像效果不均衡,所以不采用单独光源打光 使用同轴+回形面光源效果图   回形光源照亮产品要寻找的边缘,同轴光源起到补光的作用(把回形光源中间的圆孔造成

    2024年02月15日
    浏览(44)
  • 关于华为无线路由的一些软硬件的问题

        一、路由器的硬件包括RAM/DRAM、NVRAM、FLASH、ROM、CPU、各种端口以及主板和电源。硬件故障一般可以从LED指示灯上看出。  1、电源上有一个绿色的PWR状态指示灯,当这个指示灯亮着时,表示电源工作正常,接口模块上的ONLINE和OFFLINE指示灯以及TX、RX指示灯。Rx指示灯为绿色

    2024年02月05日
    浏览(45)
  • 导光片机器视觉定位贴合系统软硬件方案

    【检测目的】 定位贴合 【检测要求】 精度0.15mm 【拍摄效果图一】 一工位   【拍摄处理图一】 一工位    【拍摄效果图二】  一工位 【拍摄处理图二】 一工位     【硬件配置】 一工位 【打光示意图】    【方案评估】 视野:17.8mm*13.35mm 视觉精度:17.8mm/1292pixel=0.014mm/p

    2024年02月15日
    浏览(39)
  • 24h无人棋牌室预约系统的软硬件开发

    最近接到一个24小时自助无人棋牌室,就是共享棋牌室的项目: 1. 开发一个小程序,客人通过小程序选择空闲的包间,选择预约时间后,线上支付费用; 2. 到店后通过小程序一键开启包间的电子门。 预约流程很简单,项目的核心在于,到店后判断当前客户的有效订单,并控

    2024年02月06日
    浏览(30)
  • 五金轴尺寸机器视觉测量软硬件方案--康耐德智能

    检测内容: 五金轴尺寸机器视觉测量 检测要求: 精度±0.015mm,速度180~240个/分钟 视觉可行性分析: 对样品进行了光学实验,并进行图像处理,原则上可以使用机器视觉系统进行测试测量。 结果: 对所有样品进行分析,可以在不同的光照与位置下测量出轴的的尺寸。 使用的

    2024年02月10日
    浏览(28)
  • FAST迅捷路由器软硬件故障的解决方法

      一、软件故障 1、路由器的CPU利用率过高和系统内存余量太小等情况都将直接影响到路由器所提供的网络服务的质量,而通常情况下我们应该收集路由器这方面的数据,并及时提出,解决这种故障,只需要对路由器设备进行升级、扩大内存等就可以了。 2、网络设置不正确,

    2024年02月05日
    浏览(39)
  • 笔记:soc最小系统(软硬件协同仿真)--插桩&hello

    0.环境配置:quartus2 15.0+Modelsim10.4+keil5 1.插桩 功能:在完成最小系统的设计后,简单测试数据是否能够写入寄存器,以及uart能否打印hello 实现:先在keil和quartus2分别设计好软硬件工程,再将keil产生的bin/hex文件读到最小系统的sram中,最后通过Modelsim仿真查看波形与打印字符。

    2024年02月02日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包