当前位置:   article > 正文

基于Arduino环境的Stm32 MCU开发_stm32 arduino开发

stm32 arduino开发

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程序测试环境。

  1. void setup() {
  2. // put your setup code here, to run once:
  3. pinMode(PC13,OUTPUT);
  4. }
  5. void loop() {
  6. // put your main code here, to run repeatedly:
  7. digitalWrite(PC13,HIGH);
  8. delay(500);
  9. digitalWrite(PC13,LOW);
  10. delay(500);
  11. }

将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

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

  1. "arduino.path": "c:\STM32\arduino\arduino-1.8.9-windows\arduino-1.8.9\",`
  2. "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,我们修改一般调试打印输出程序,烧录。

  1. #include <SoftwareSerial.h>
  2. /*
  3. Uart output and input
  4. */
  5. const byte rxPin = PA10;
  6. const byte txPin = PA9;
  7. // Set up a new SoftwareSerial object
  8. SoftwareSerial mySerial (rxPin, txPin);
  9. // 初始化串口波特率为9600:
  10. void setup() {
  11. // Define pin modes for TX and RX
  12. pinMode(rxPin, INPUT);
  13. pinMode(txPin, OUTPUT);
  14. // Set the baud rate for the SoftwareSerial object
  15. mySerial.begin(9600);
  16. }
  17. // the loop routine runs over and over again forever:
  18. void loop() {
  19. mySerial.println("Hello world!");
  20. delay(2000); // 延时2s
  21. }

3 单总线温度探测

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

安装库

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

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

查找「DallasTemperature」,安装。 

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

写程序,验证。

  1. #include <OneWire.h>
  2. #include <DallasTemperature.h>
  3. #include <SoftwareSerial.h>
  4. const byte rxPin = PA10;
  5. const byte txPin = PA9;
  6. // 数据输出脚接开发板数字引脚PB10
  7. #define ONE_WIRE_BUS PB10
  8. // Set up a new SoftwareSerial object
  9. SoftwareSerial mySerial (rxPin, txPin);
  10. OneWire oneWire(ONE_WIRE_BUS);
  11. DallasTemperature sensors(&oneWire);
  12. void setup(void)
  13. {
  14. // Define pin modes for TX and RX
  15. pinMode(rxPin, INPUT);
  16. pinMode(txPin, OUTPUT);
  17. // Set the baud rate for the SoftwareSerial object
  18. mySerial.begin(9600);
  19. sensors.begin();
  20. }
  21. void loop(void)
  22. {
  23. sensors.requestTemperatures(); // 发送命令获取温度
  24. mySerial.print("Temperature for the device 1 (index 0) is: ");
  25. mySerial.println(sensors.getTempCByIndex(0));
  26. delay(2000);
  27. }

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

 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。

  1. //Interfacing ESP8266 Wi-Fi with STM32F103C8
  2. //CIRCUIT DIGEST
  3. //NOTE: Serial is serial monitor with baud rate(9600)
  4. //NOTE: Serial2 (TX2, RX2)is connected with ESP8266(RX,TX)respectively with baud rate (9600)
  5. #include <SoftwareSerial.h>
  6. HardwareSerial Serial1 (PA10, PA9);
  7. //HardwareSerial Serial2 (PA3, PA2);
  8. SoftwareSerial Seria2 (PA3, PA2);
  9. String webpage=""; //String variable to store characters
  10. int i=0, k=0, x=0; //integer variables
  11. String readString; //using readString feature to read characters
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/717165
推荐阅读
相关标签
  

闽ICP备14008679号