arduino开发板正常状况下是经过在代码中嵌入bootloader代码,利用单片机的IAP功能经过USB口来实现程序下载。其实经过合理的设置产生程序的hex或者bin文件而后用下载器下载到单片机里也能够实现程序下载,这样能够利用arduino的开发环境和开源资料来对市面上其余的普通单片机开发板进行程序开发。本文就以MapleIDE开发普通STM32单片机程序为例来进行说明。php
在arduino开发环境中若是在lib\preferences.txt文件最后一行增长build.path=“存储路径”,则按住shift编译以后会在对应的文件夹里产生hex或者bin文件。可是此文件因为含有bootloader的启动过程所以直接下载进单片机中是不能运行的,还须要作以下的设置:html
1.在hardware\leaflabs\boards.txt中增长STM32F103RBT6开发板型的参数以下,参数能够具体因单片机不一样而修改git
mapleJTAG.name=LeafLabs Maple Rev 3+ to JTAGgithub
mapleJTAG.upload.file_type=bin
ui
mapleJTAG.upload.maximum_size=128000
spa
mapleJTAG.upload.ram.maximum_size=20000
htm
mapleJTAG.upload.flash.maximum_size=128000
开发
mapleJTAG.upload.usbID=1EAF:0003
get
mapleJTAG.upload.altID=1
flash
mapleJTAG.upload.uploader=dfu-util
mapleJTAG.upload.auto_reset=true
mapleJTAG.build.board=maple
mapleJTAG.build.mcu=STM32F103RB
mapleJTAG.build.family=cortex-m3
mapleJTAG.build.f_cpu=72000000L
mapleJTAG.build.core=maple
mapleJTAG.build.submdl=stm32f103
mapleJTAG.build.vect=VECT_TAB_BASE
mapleJTAG.build.linker=maple/jtag.ld
mapleJTAG.build.using=armcompiler
mapleJTAG.build.density=STM32_MEDIUM_DENSITY
mapleJTAG.build.error_led_port=GPIOA
mapleJTAG.build.error_led_pin=5
2.注意maple\jtag.ld中关于程序存储空间的关键内容以下:
MEMORY
{
ram (rwx) : ORIGIN = 0x20000000, LENGTH = 20K
rom (rx) : ORIGIN = 0x08000000, LENGTH = 128K
}
完成上述设置后就能够进行程序开发,开发完程序后采用串口下载软件便可将程序下载进STM32单片机中,注意STM32经常使用的MCU-ISP串口下载软件有时候对.bin的文件支持并很差,此处推荐uISP for STM32的下载软件。
bootloader参考资料: