在Ardunio 完成STM32板子的串口通信程序
一、在Arduino 完成STM32板子的串口通信程序
(一)安装Arduino IDE
1、进入Arduino IDE官网
下载
相关安装包
2、下载下来的是一个压缩包,解压并进入文件中,点击应用程序进行安装,按照指示点击即可
(二)配置Arduino IED
1、IDE安装完成后,打开该软件,点击右上角工具–>开发板–>开发板管理器
2、搜索ARM,选择 Arduino SAM Boards(32-bit ARM Cortex-M3) 进行安装,下图我已经安装好,所以只有删除键;未安装会有安装键
3、安装完成后可以打开开发板检查是否安装成功
4、进入
官网下载
.Arduino_STM32版型文件
点击Code->Download ZIP
5、以上下载的是压缩包,解压后把STM32文件夹复制到IDE软件安装地址下的hardware文件夹下
6、此时重新打开Arduino的开发板查看,发现多了以下STM32版型
7、打开软件自带的示例程序检查环境是否搭建成功,点击文件->示例->A_STM32->Digital->Blink
8、点击编译,显示编译完成则环境搭建成功,可继续进行
(三)STM32开发板连接
我使用的开发板是野火指南者STM32f103VE系列的
1、用usb线把开发板的”usb转串口”接口连接到电脑。
2、用跳帽将BOOT0与3v3相连,BOOT1与GND相连,RXD与A9相连,TXD与A10相连。如上图
3、连接完成后保持开发板处于通电状态(等会儿选择端口有用)
(四)程序编写及相关配置
1、打开Arduino IDE,点击左上角文件新建一个窗口
2、把以下程序粘贴进去
int flag=1;
char Stop[]="stop\n";
void setup() {
//初始化
pinMode(PB1, OUTPUT);//PB0为绿色,PB1为蓝色,PB5为红色,可根据需要改动
Serial.begin(115200);
}
void loop()
{
int i=0,flag=1;
char inByte[1000];
digitalWrite(PB1, HIGH); //小灯亮
delay(500); // 延迟
digitalWrite(PB1, LOW); //小灯灭
delay(500); // 延迟
while (Serial.available()> 0) //当发送缓冲区有数据时
{
inByte[i] = Serial.read(); //从串口的缓冲区取出并读取一个Byte的数据
delay(10);
i++ ;
}
if(Stop[i]=inByte[i])
{
if(Stop[i-1]==inByte[i-1]&&Stop[i-2]==inByte[i-2]&&Stop[i-3]==inByte[i-3])
{
flag=0;
}
}
if(flag==0)
{
Serial.println("收到!");//当收到stop命令时停止并回复收到!
while(1)
{continue;}
}
if(flag==1)
{
Serial.println("Hello world!");//向串口发送数据
delay(100); // 延迟
}
}
上述程序完成两个任务:
1)持续向串口输出“Hello world!”;
2)当接收到“stop!”时,停止输出。
3、程序输入完成后,保存
4、点击工具选择与你的开发板同系列的板子,我的是指南者STM32F103VE系列
5、这里选择STM32F103VE
6、上传方式选择Serial
7、先到设备管理器查看你的USB连接到哪个接口,我这里是COM4,所以在IDE中端口选择COM4
8、经过以上步骤,配置完成,点击编译
9、编译通过后,先按一下连接的开发板的复位键,然后点击上传
程序上传时,界面下方有进度条,等进度条走完,则上传成功。
(五)实验结果
1、程序上传完成后,观察到开发板的LED灯闪烁
2、此时点击Arduino软件左上角工具->串口监视器
3、串口监视器右下角的波特率设置为115200波特率,否则输出结果可能是乱码或问号
4、设置好后重新打开监视器,程序运行结果:1)持续向串口输出“Hello world!”;2)当接收到“stop!”时,停止输出。
与实验要求一致,实验成功,到此实验结束
总结
与使用Keil 5实现串口通信相比,基于Arduino IDE软件的STM32串口通信更为方便,程序也更加简洁。以上就是基于Ardunio 完成STM32开发板的串口通信程序。
参考资料:
1、
Ardunio 下的stm32f103指南者串口通信
.
2、
Arduino IDE 玩转STM32 – 搭环境、刷固件、烧程序
.