STM32
直播中

王桂兰

7年用户 1159经验值
私信 关注
[问答]

在Ardunio下怎样做才能完成STM32板子的串口通信程序呢

在Ardunio下怎样做才能完成STM32板子的串口通信程序呢?其步骤有哪些呢?

回帖(1)

李雨坤

2021-12-7 10:27:40
一、安装

1、双击arduino-1.8.12-windows,进行安装,安装过程中不需要点击其它选项,一直点击next即可。





2、等待安装完成





3、将打包文件中的Arduino_STM32整个文件夹拷贝到Arduino IDE安装目录下的hareware下,我这里是C:Program Files (x86)Arduinohardware。这些配置文件是一位国外大佬写的,他的最新配置文件在github网站https://github.com/rogerclarkmelbourne/Arduino_STM32上。





4、在工具开发板开发板管理器中输入ARM关键字搜索,选中Cortex-M3系列的编译支持文件并安装










二、串口通讯

1、连接方式
(1)、用USB线将电脑与开发板相连接
(2)、再用跳帽将BOOT0与3v3相连,BOOT1与GND相连,RXD与A9相连,TXD与A10相连。

2、串口通讯程序
功能:
1)持续向串口输出“Hello world!”;
2)当接收到“stop!”时,停止输出。
代码:

int flag=1;   
char Stop[]="stopn";
void setup() {
//初始化
pinMode(PB0, OUTPUT);//PB0为绿色,PB1为蓝色,PB5为红色,可根据需要改动
Serial.begin(115200);
}
void loop() {
int i=0,flag_s=0;
char inByte[50];
digitalWrite(PB0, HIGH); //小灯亮
delay(500); // 延迟
digitalWrite(PB0, LOW); //小灯灭
delay(500); // 延迟
while (Serial.available()> 0)     //当发送缓冲区有数据时
{
        inByte = Serial.read();    //从串口的缓冲区取出并读取一个Byte的数据
        delay(10);
        i++ ;                              
}
if(Stop=inByte)
{
  if(Stop[i-1]==inByte[i-1]&&Stop[i-2]==inByte[i-2]&&Stop[i-3]==inByte[i-3])
  {
  flag=0;
  Serial.println("收到!");
  }//当收到stop命令时停止并回复收到
}
if(flag==1)
{  
Serial.println("Hello World!");//向串口发送数据
delay(100); // 延迟
}
}
3、配置。点开工具配置如图所示





4、编译、上传。点击左上角的验证、上传
5、打开串口监视器










输入stop停止发送





总结

1、在串口通讯器中,如果接受到的是乱码,可以尝试修改一下波特率,
2、一定要注意各种配置,否则会出错。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分