赞
踩
目前,网络上大多数的讲述arduino开发stm32的教程都存在一定的问题(缺少一些关键步骤),以至于会产生误导,本人是看着这些教程一路走来的,通过我的相关搜索,而整理出的一套较为完善的教程。
前往官网下载Arduino IDE并安装,这里推荐Arduino IDE 2,有丰富的代码补全功能和更好看的UI以及DEBUG支持(本文可用)
安装好IDE2之后,就需要添加开发板,这里我们使用最广泛的STM32Duino,目前已经基本适配所有的STM32芯片
打开Arduino的开发板管理器:文件 -> 首选项 -> 其他开发板管理地址,增加如下并保存:
https://github.com/stm32duino/BoardManagerFiles/raw/main/package_stmicroelectronics_index.json
接着在开发板处安装STM32芯片包的支持,一般选择最新版,注意看清楚是STM32,STM8:
由于服务器在国外故此处安装时间较为漫长,有能力的小伙伴可以在首选项的网络选项卡中配置相关信息来提高速度
等待安装结束之后,至此IDE部分的配置已经基本完成,但还不能够正常工作,需要配置烧录工具
在开发STM32的时候通常采用SWD而非串口烧录,这里同样如此,需要使用烧录器ST-Link,官方的或是淘宝款的均可。
注意:这里指的是ST-Link,DAP-LINK等均无法使用,但并不是说绝对不能使用,但体验感较差,最后将会讲述使用DAP-LINK的方法,此部分均使用ST-Link,我也推荐使用ST-Link
驱动程序采用ST官方的ST-Link驱动程序就可以,若在官网下载,对应STSW-LINK009,其他地方的也可以,看准系统版本对应即可
安装好驱动之后插入STlink可以在设备管理器中看到设备正常工作:
这部分非常重要但很多的教程都忽略掉了,从而导致不能正常写入芯片程序
去ST官网下载STM32CubeProgrammer 注意看清楚对应的系统,下载并安装
打开之后可以看到连接到你的ST-Link,若是连接到开发板还可以看到芯片信息
这个程序我们主要是调用其CLI,因此安装上就可以了,平时开发的时候也很少直接打开
至此,开发环境的搭建已经完成,通常情况下,我们可以写一个点灯程序来测试我们的环境是否正常(此处我的板子是STM32F103ZET6)
#define LED_PORT PE5 //LED引脚
void setup() {
pinMode(LED_PORT, OUTPUT);
}
void loop() {
digitalWrite(LED_PORT, HIGH);
delay(200);
digitalWrite(LED_PORT, LOW);
delay(200);
}
digitalWrite(PE5,LOW);
可以直接在Arduino中使用HAL写为
HAL_GPIO_WritePin(GPIOE, GPIO_PIN_5, GPIO_PIN_RESET);
完全等效
arduino下如何配置时钟树?
配置时钟树我们需要使用ST的HAL的API,在主程序中重载void SystemClock_Config(void)
函数,并在void setup()
中调用SystemClock_Config()
对于这段代码可以自己编写但推荐的是通过STM32CubeMX图形化生成,并在main.c
中复制得到
硬件串口无输出
当测试到Arduino中按照正确的方式读写硬件串口时但没有任何消息输出,这种情况下大多是没有对应好引脚而造成的,例如我这块开发板就是这样的
以下这段程序正常编写但没有任何输出
void setup() {
Serial.begin(115200);
}
void loop() {
Serial.println("hello");
delay(200);
}
这里通过更改硬件串口对应的引脚解决
参照开发板手册我们可以看到USART在PA9和PA10上
代码更改为
HardwareSerial Serial1(PA10,PA9); //顺序是RX,TX
void setup() {
Serial1.begin(115200);
}
void loop() {
Serial1.println("hello");
delay(200);
}
即可解决
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。