使用Arduino IDE来编写上传STM32以及STM8代码,STM32Duino教程

前言

文章核心

STM32的性能比Arduino的Atmel好得多,并且具有相当数量的优秀特性,这一篇中就点一下,关于如何使用Arduino IDE来编写并烧录STM32程序。

Arduino生态和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.h>

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的补充说明

多数操作中,STM8都是和STM32类似的,但是在烧写这一块有一些区别。首先STM8是使用STLINK来连接的,目前没有找到用BootLoader的方式进行烧写

 

其次,使用STLINK会没有端口这是正常的,点击烧写按钮,依然可以按计划运行

只要出现这一段话就是正常下载到STM8里面了

附带STM8S103F的Arduino引脚对应图, 如果说要调用Pin,直接写PA2,PD1也是可以的~

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值