

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);
}
}
