赞
踩
1 Arduino Stm32基础环境配置
参看Getting Started · stm32duino/wiki Wiki · GitHub及STM32duino——依托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。
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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。