一、实验环境配置
提取码:q251

-
打开arduino-1.8.12-windows.exe 进行安装
-
将解压的 Arduino_STM32 文件夹拷贝到 Arduino IDE 安装目录下的 hareware 下
例如:
D:\arduino-1.8.12\Arduino\hardware
该文件来自于国外大佬STM32配置文件
拷贝了之后,在 Arduino IDE 中 “工具 -----> 开发板” 将会出现 STM32F1系列 的开发板,如:Generic STM32F103C series
-
在Arduion中安装编译支持文件
工具 -----> 开发板 -----> 开发板管理器,搜索 ARM,选中 Cortex-M3系列的编译支持文件并安装
-
安装解压文件中的 flash_loader_demo_v2.8.0.exe
-
STM32开发板连接
将USB转TTL工具上的VCC,GND,TXD,RXD与开发板的VCC,GND,RXD,TXD相连,注意开发板的TXD是与USB转TTL工具的RXD相连。然后将STM32开发板上的BOOT0用短路冒接入高电平1,BOOT1用短路冒接入低电平0。
由于本人使用的开发板是野火的指南者,所以连接方式如下:
野火指南者 端口 PA9 (USART1-TX) RXD PA10 (USART1-RX) TXD BOOT0 3V3 BOOT1 GND -
点击开始 -----> 最近添加 -----> Demonstrator GUI
① 选择解压文件中的 STM32duino-bootloader-master.zip 压缩包进行解压
② 选择串口
② 然后一直 "Next"
③ 选择 .bin文件
例如我解压的路径为:
D:\arduino-1.8.12\STM32duino-bootloader-master\binaries
,因为开发板PB0引脚有板载LED灯,所以我选择的是 generic_boot20_pb0.bin 文件,根据自己的实际情况而定。然后 “Next”。④ 烧录成功后,点击 "Close"
二、代码实现
-
打开Arduino软件,选择工具配置如下:
-
程序代码如下:
int flag=1; char Stop[]="stop\n"; void setup() { //初始化 pinMode(PB1, OUTPUT);//PB0为绿色,PB1为蓝色,PB5为红色,可根据需要改动 Serial.begin(115200); } void loop() { int i=0,flag_s=0; char receive_data[50]; digitalWrite(PB1, HIGH); //小灯亮 delay(500); // 延迟 digitalWrite(PB1, LOW); //小灯灭 delay(500); // 延迟 while (Serial.available()> 0) //当发送缓冲区有数据时 { receive_data[i] = Serial.read(); //从串口的缓冲区取出并读取一个Byte的数据 delay(10); i++ ; } if(Stop[i]=receive_data[i]) { if(Stop[i-1]==receive_data[i-1]&&Stop[i-2]==receive_data[i-2]&&Stop[i-3]==receive_data[i-3]) { flag=0; Serial.println("yes sir!"); }//当收到stop命令时停止并回复收到 } if(flag==1) { Serial.println("Hello World!");//向串口发送数据 delay(100); // 延迟 } }
-
先编译,再上传
-
演示效果如下
① 开发板
② 串口监视器(工具里面)