基于Arduino环境的Stm32 MCU开发

1 Arduino Stm32基础环境配置

参看Getting Started · stm32duino/wiki Wiki · GitHubSTM32duino——依托Arduino框架玩转STM32(一): 开发环境的配置 - 知乎 (zhihu.com)

下载安装Arduino IDE,运行Arduino。选择文件->首选项,在附加开发板管理器中填入:https://github.com/stm32duino/BoardManagerFiles/raw/main/package_stmicroelectronics_index.json。

 

保存设置。打开工具->开发板->开发板管理器。

点击后会需要一段时间从网络上加载开发板信息。加载完成后,选择‘贡献’项。

 

 安装完毕后,选择开发板。

选择配置。 

写一个Blink程序测试环境。

void setup() {
  // put your setup code here, to run once:
  pinMode(PC13,OUTPUT);
}

void loop() {
  // put your main code here, to run repeatedly:
  digitalWrite(PC13,HIGH);
  delay(500);
  digitalWrite(PC13,LOW);
  delay(500);
}

将ST-Link与STM32F03C8T6开发板通过SWD连接,将TTL转USB连接STM32103C8T6开发板,通过A9、A10连接,接入PC USB。

Arduino  Sketch-Verity/Compile。

 Arduino  Sketch-Upload。

  • 将开发板上的‘BOOT 0’跳线帽和1短路。
  • 按下复位按钮。
  • 选择正确的串口。上传演示程序。
  • 上传完毕后,就会看到板载LED在闪烁了。不要忘记将‘BOOT0’的跳线帽放回原来的位置0。

2 使用VS Code进行编程与调试

安装VS Code,并安装微软Arduino扩展: vscode-arduino

文件-首选项-设置,添加。

    "arduino.path": "c:\STM32\arduino\arduino-1.8.9-windows\arduino-1.8.9\",`
    "arduino.additionalUrls": "https://github.com/stm32duino/BoardManagerFiles/raw/main/package_stmicroelectronics_index.json"

 打开命令面板 (F1 or Ctrl + Shift + P) 搜索并选择 Arduino: Board Manager。

 选择类型contributed,找到STM32 MCU based boards,安装。

 打开命令面板 (F1 or Ctrl + Shift + P) 搜索并选择 Arduino: Board Config,打开Arduino开发配置。

 打开命令面板 (F1 or Ctrl + Shift + P) 搜索并选择Arduino Examples,选择blink,另存。

打开命令面板 (F1 or Ctrl + Shift + P) 搜索并选择Arduino: Verify编译或Arduino: Upload编译并烧录。

 注意界面右下角COM口是你的COM端口号。

 安装Cortex-Debug插件。

 安装OpenOCD。后续继续探索。

2 串口调试输出

由于stm32f103t8c6的调试串口这是是非Arduino标准定义的,因此需要使用SoftwareSerial库。

引入SoftwareSerial.h,定义调试串口const byte rxPin = PA10,const byte txPin = PA9,我们修改一般调试打印输出程序,烧录。

#include <SoftwareSerial.h>

/*
  Uart output and input
*/
const byte rxPin = PA10;
const byte txPin = PA9;

// Set up a new SoftwareSerial object
SoftwareSerial mySerial (rxPin, txPin);


// 初始化串口波特率为9600:
void setup() {
    // Define pin modes for TX and RX
    pinMode(rxPin, INPUT);
    pinMode(txPin, OUTPUT);
    
    // Set the baud rate for the SoftwareSerial object
    mySerial.begin(9600);

}

// the loop routine runs over and over again forever:
void loop() {
    mySerial.println("Hello world!");
    delay(2000);        // 延时2s
}

3 单总线温度探测

(206条消息) Arduino基础入门篇30—数字温度传感器DS18B20_TonyIOT的博客-CSDN博客_arduino ds18b20

安装库

两个库「OneWire」和「DallasTemperature」,前者是单总线库,后者是在前者基础上针对Dallas温度传感器封装的库。

在IDE中点击「项目」—「加载库」—「管理库」,查找「OneWire」,安装。

查找「DallasTemperature」,安装。 

正确接线。将ds18b20数据线脚接stm32f103t8c6 PB10。

写程序,验证。

#include <OneWire.h>
#include <DallasTemperature.h>
#include <SoftwareSerial.h>

const byte rxPin = PA10;
const byte txPin = PA9;

// 数据输出脚接开发板数字引脚PB10
#define ONE_WIRE_BUS PB10

// Set up a new SoftwareSerial object
SoftwareSerial mySerial (rxPin, txPin);

OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);

void setup(void)
{
      // Define pin modes for TX and RX
    pinMode(rxPin, INPUT);
    pinMode(txPin, OUTPUT);
    
    // Set the baud rate for the SoftwareSerial object
    mySerial.begin(9600);

    sensors.begin();
}

void loop(void)
{ 
    sensors.requestTemperatures(); // 发送命令获取温度

    mySerial.print("Temperature for the device 1 (index 0) is: ");
    mySerial.println(sensors.getTempCByIndex(0)); 
    
    delay(2000); 
}

烧录程序,终端输出。后面哈了几口气,温度提升了。

 4 esp8266无线模块

通过Broad Manager搜素安装esp8266。

参考Interfacing ESP8266 with STM32F103C8: Creating a Webserver (circuitdigest.com)。测试esp8266使用AT命令连接stm32f103c8t6。

正确连接esp8266(我的是esp01s)和stm32f103c8t6,将stm32 PA2和PA3分别接入esp8266 RX和TX。我们注意到stm板有3个串口,分别是:

Serial PortPins Tolerant
Serial1(TX1,RX1) PA9,PA10 PB6,PB7 5V
Serial2(TX2,RX2) PA2,PA3 3.3V
Serial3(TX3,RX3) PB10,PB11 5V

编写代码。我们定义了HardwareSerial Serial1 (PA10, PA9),定义serial1是调试打印端口,serial2是esp8266和stm32的通信串口。确认serial2速率为115200。

//Interfacing ESP8266 Wi-Fi with STM32F103C8
//CIRCUIT DIGEST
//NOTE: Serial is serial monitor with baud rate(9600)
//NOTE: Serial2 (TX2, RX2)is connected with ESP8266(RX,TX)respectively with baud rate (9600)
#include <SoftwareSerial.h>

HardwareSerial Serial1 (PA10, PA9);
//HardwareSerial Serial2 (PA3, PA2);
SoftwareSerial Seria2 (PA3, PA2);

String webpage="";                                   //String variable to store characters
int i=0, k=0, x=0;                                         //integer variables
String readString;                                   //using readString feature to read characters                       
  • 5
    点赞
  • 57
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值