STM32的性能比Arduino的Atmel好得多,并且具有相当数量的优秀特性,这一篇中就点一下,关于如何使用Arduino IDE来编写并烧录STM32程序。
Arduino IDE相比较Keil来说,使用更为友好并且不用考虑授权问题当然它并不适合大型工程,多数时候适合去制作拥有一两个单一功能的装置,还有就是一些创意和想法的实现,因为金字塔层级关系,使用Arduino以及Arduino IDE的人数会远远的大于STM32 和Keil/IAR,当然它从专业角度来说,并不适合商用。不过在投资人那边炫一下还是可以的,只要你是报芯片型号的话。
首先启动Arduino IDE,需要增加两个地址,他们都是让Arduino IDE的开发板中出现STM32型号的途径只是一个是官方维护一个算第三方吧
http://dan.drown.org/stm32duino/package_STM32duino_index.json
https://github.com/stm32duino/BoardManagerFiles/raw/master/STM32/package_stm_index.json
如果你要使用STM8,就用这个,其他步骤是类似的,STM8的github项目网址:https://github.com/tenbaht/sduino
https://github.com/tenbaht/sduino/raw/master/package_sduino_stm8_index.json
然后,我们需要去下载板子的模版,打开后会自动刷新,然后选择stm32,一共有四个项目,选择包含有自己的STM32芯片型号的下载即可,
官方的多只有一些官方开发板,比如说NUCLEO系列,我手头这一个就是比较新的STM32G0
对现有的下载选项进行配置,这里提供一个参考,型号依据你的板子的型号来
在,下载之前需要先安装STM32Programmer,国内下载站地址如下
http://www.downza.cn/soft/274655.html
下载上传成功与否,必须要按照调用的烧写器程序提示来确定,下图最下一行是Error,意思是模式不对,烧写的模式有SWD,Serial和DFU,如果你有STLINK就选择SWD,如果没有识别出来,更换USB接口再次尝试。另外就是检查烧写模式是否是SWD
上图中我使用的测试代码如下,通过STM32上面的UNO接口连接的是一个LCD Keypad Shield
#include
LiquidCrystal lcd(8, 13, 9, 4, 5, 6, 7);
char msgs[5][16] = {"Right Key OK ",
"Up Key OK ",
"Down Key OK ",
"Left Key OK ",
"Select Key OK" };
int adc_key_val[5] ={50, 200, 400, 600, 800 };
int NUM_KEYS = 5;
int adc_key_in;
int key=-1;
int oldkey=-1;
void setup()
{
lcd.clear();
lcd.begin(16, 2);
lcd.setCursor(0,0);
lcd.print("ADC key testing");
}
void loop()
{
adc_key_in = analogRead(0); // read the value from the sensor
key = get_key(adc_key_in); // convert into key press
if (key != oldkey) // if keypress is detected
{
delay(50); // wait for debounce time
adc_key_in = analogRead(0); // read the value from the sensor
key = get_key(adc_key_in); // convert into key press
if (key != oldkey)
{
lcd.setCursor(0, 1);
oldkey = key;
if (key >=0){
lcd.print(msgs[key]);
}
}
}
delay(100);
}
// Convert ADC value to key number
int get_key(unsigned int input)
{
int k;
for (k = 0; k < NUM_KEYS; k++)
{
if (input < adc_key_val[k])
{
return k;
}
}
if (k >= NUM_KEYS)k = -1; // No valid key pressed
return k;
}
有时候还会出现 ST-LINK error (DEV_CONNECT_ERR) 这个问题,遇到这个问题需要排除下是否被占用比如后台开着STM32Programmer,最简单的方法是重新拔插USB接口
下载成功后的提示如下
最终,可以直接的进行显示,使用起来和Arduino一样
多数操作中,STM8都是和STM32类似的,但是在烧写这一块有一些区别。首先STM8是使用STLINK来连接的,目前没有找到用BootLoader的方式进行烧写
其次,使用STLINK会没有端口这是正常的,点击烧写按钮,依然可以按计划运行
只要出现这一段话就是正常下载到STM8里面了
附带STM8S103F的Arduino引脚对应图