一、原理图
这个原理图设计有问题,应该把boot引出来画一个按键,因为没有设计自动下载电路,需要手动进入下载模式,我下载时都是用(1)杜邦线先把boot拉高(2)再按一下复位(3)再松开杜邦线(boot)以此进入下载模式
参考别人的自动下载电路(也适用于STM32)
时序
(1)未进入下载模式:RTS和DTR为高
(2)进入下载时:RST拉低,DTR保持高电平,Q3导通,Q2导通,BOOT0拉高,RESET拉低。
DTR再拉低,Q2截至,RESET拉高(结束复位),BOOT0保持高
数据手册上的一键下载电路
二、配置Arduino
(1)首选项添加地址
https://arduino.luatos.com/package_air_cn_index.json
(2)开发板管理器下载芯片包
(3)下载前选择对应芯片和连接的串口
(4)附上LED闪烁和按键翻转LED电平的程序
LED闪烁
/*
硬件资源:
(1)LED------PB3
(2)KEY------PA0
注意:boot引脚未引出,再下载程序之前需要用杜邦线辅助接高电平
1.boot接高电平 2.按下RST 3.松开boot 4.进入下载模式(此时程序停止正常运行)
*/
void setup() {
// put your setup code here, to run once:
pinMode(PB_3, OUTPUT);
Serial.begin(115200);
Serial.printf("Hello, Air001. \n");
Serial.printf("Designed by GrassFishStudio. \n");
}
void loop() {
// put your main code here, to run repeatedly:
static int count = 0;
if (count % 2 == 0) {
digitalWrite(PB_3, HIGH);
} else {
digitalWrite(PB_3, LOW);
}
Serial.printf("This is NO.%d print. \n", count);
count++;
delay(1000);
}
按键翻转LED
/*
硬件资源:
(1)LED------PB3(高电平点亮)
(2)KEY------PA0(按下低电平)
注意:boot引脚未引出,再下载程序之前需要用杜邦线辅助接高电平
1.boot接高电平 2.按下RST 3.松开boot 4.进入下载模式(此时程序停止正常运行)
*/
#define led_on digitalWrite(PB_3, HIGH)
#define led_off digitalWrite(PB_3, LOW)
#define led PB_3
#define key PA_0
void setup() {
// put your setup code here, to run once:
pinMode(led, OUTPUT);
pinMode(key, INPUT);
Serial.begin(115200);
Serial.printf("Hello, Air001. \n");
Serial.printf("Designed by GrassFishStudio. \n");
}
void loop() {
// put your main code here, to run repeatedly:
static uint8_t cnt=0;
if(digitalRead(key)==LOW)
{
delay(20);
if(digitalRead(key)==LOW)
{
cnt++;
if(cnt%2==0)
led_on;
else
led_off;
if(cnt>99)
cnt=0;
}
while(digitalRead(key)==LOW);
}
}
三、部分Arduino参考用法
Bluno M3硬件外设-DFRobot产品官方wikihttps://wiki.dfrobot.com.cn/Bluno_M3%E7%A1%AC%E4%BB%B6%E5%A4%96%E8%AE%BE