

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);
}
}
浙公网安备 33010602011771号