HardwareSerial库实现了对串口1的使用,HardwareSerial类在声明对象时接收一个输入参数(0、1、2),分别代表Serial、Serial1、Serial2;
如上图:
ESP32CAM的TX也就是U0TXD对应引脚1。
ESP32CAM的RX也就是U0RXD对应引脚3。
所以MySerial_stm32.begin初始化时,第三个、第四个参数是3和1。
参考:
#include <HardwareSerial.h> //导入ESP32串口操作库,使用这个库我们可以把串口映射到其他的引脚上使用 //我们测试需要用到的串口,ESP32一共有3个串口,串口0应该是用于程序烧写和打印输出调试用的,所以我们只用1和2 HardwareSerial MySerial_stm32(1); void setup() { Serial.begin(115200); //串口的开启,这里还可以传一些别的参数,但是我们只传入下面四个最重要的:波特率,默认SERIAL_8N1为8位数据位、无校验、1位停止位,后面两个分别为 RXD,TXD 引脚 MySerial_stm32.begin(115200, SERIAL_8N1, 3, 1); //MySerial_stm32.updateBaudRate(9600); //重新设置波特率; //MySerial_stm32.end(); //失能串口,释放占用的资源 } void loop() { MySerial_stm32.println("usart test!!!"); delay(1000); }
软串口
#include<SoftwareSerial.h> #define phonenum_call "15529672865" // 最好移动卡 联通卡支持度不是很好 //单片机软串口RX D4->短信 TX //单片机软串口TX D5->短信 RX SoftwareSerial softSerial1(12,13);//,与短信模块通信 int sendMeg(String phonenum,String text)//发送信息的函数,直接调用即可,无需修改 { softSerial1.println("AT");//对GSM发送AT,看响应 char comdata=0;//判断接收到的最后一位是否对 String phone="";//电话号码存储 phone="AT+CMGS=\""+phonenum+'\"'; while (softSerial1.available() > 0){ comdata = softSerial1.read(); //每次读一个char字符,并相加 delay(2); } softSerial1.println("AT");//对GSM发送AT,看响应 delay(1000); while (softSerial1.available() > 2){ comdata = softSerial1.read(); //每次读一个char字符,并相加 Serial.print(comdata);//错误 delay(2); } if(comdata!='K')//判断没有收到OK { Serial.println("error1");//错误 // return 0; } comdata=0; softSerial1.println("AT+CMGF=1");//设置GSM文本模式 delay(500); while (softSerial1.available() > 2){ comdata = softSerial1.read(); //每次读一个char字符,并相加 delay(2); } if(comdata!='K')//没有收到OK { Serial.println("error2"); // return 0; } comdata=0; softSerial1.println(phone);//发送的目标号码 delay(1000); while (softSerial1.available() > 1){ comdata = softSerial1.read(); //每次读一个char字符,并相加 delay(2); } if(comdata!='>')//没有收到> { Serial.println("error3"); // return 0; } comdata=0; softSerial1.print(text);//发送所写内容 delay(500); softSerial1.write(0x1A); //结束输入文本,并发送 Serial.println("success"); //成功 } void setup(){ //硬串口 Serial.begin(9600); //监听软串口通信 softSerial1.begin(9600); softSerial1.listen(); delay(5000); } String comdata; void loop(){ if(Serial.available()>0){ delay(1);//影响读取速度 comdata = Serial.readString(); //String comdata="dasdas"; sendMeg("15529672865","msg to send");//给15147300333 发送信息 comdata=""; delay(1000); } }