历史上的今天
返回首页

历史上的今天

今天是:2025年04月15日(星期二)

正在发生

2020年04月15日 | stm32开发新方式-platformio

2020-04-15 来源:eefocus

硬件测试环境:


macOS

stm32f103c8t6最小系统板

st-link v2

新建pio工程

创建工程文件夹并进入:


mkdir test && cd test

查找自己适合的板子


pio boards

会看到以下结果,十里这里选择genericSTM32F103C8,这里执行这个命令,主要是查找对应自己最小系统板的board ID:


...

disco_l152rb STM32L152RBT6 32Mhz 128kB 16kB ST STM32LDISCOVERY

disco_f100rb STM32F100RBT6 24Mhz 128kB 8kB ST STM32VLDISCOVERY

genericSTM32F103C8 STM32F103C8 72Mhz 64kB 20kB STM32F103C8 (20k RAM. 64k Flash)

genericSTM32F103CB STM32F103CB 72Mhz 128kB 20kB STM32F103CB (20k RAM. 128k Flash)

genericSTM32F103R8 STM32F103R8 72Mhz 64kB 20kB STM32F103R8 (20k RAM. 64k Flash)

genericSTM32F103RB STM32F103RB 72Mhz 128kB 20kB STM32F103RB (20k RAM. 128k Flash)

genericSTM32F103RC STM32F103RC 72Mhz 256kB 48kB STM32F103RC (48k RAM. 256k Flash)

genericSTM32F103RE STM32F103RE 72Mhz 512kB 64kB STM32F103RE (64k RAM. 512k Flash)

...

初始化工程,以vim作为IDE:


pio init --ide vim -b genericSTM32F103C8

新建Makefile,添加以下内容(这里注意缩进问题):


all:

platformio -f -c vim run

upload:

platformio -f -c vim run --target upload

clean:

platformio -f -c vim run --target clean

program:

platformio -f -c vim run --target program

uploadfs:

platformio -f -c vim run --target uploadfs

update:

platformio -f -c vim update

配置platformio.ini文件

因为我们这里使用stlink v2,所以需要将程序上传方式定为stlink,默认生成的工程使用arduino框架,这是玩过Arduino的网友的福音,不是吗?只需添加一行指定程序上传方式,最终内容如下:


[env:genericSTM32F103C8]

platform = ststm32

board = genericSTM32F103C8

framework = arduino

upload_protocol = stlink

添加代码

添加点灯代码,十里的最小系统板上LED对应于管脚PB0,所以在src目录下添加main.cpp的内容如下:


#include

void setup() {

pinMode(PB0, OUTPUT);

}

void loop() {

digitalWrite(PB0, HIGH);

delay(500);

digitalWrite(PB0, LOW);

delay(500);

}


编译一下,编译的时候会下载stm32平台开发需要的编译工具和相关框架,你能做的就是waiting…:


➜ test make all

platformio -f -c vim run

[Wed Nov 8 09:42:57 2017] Processing genericSTM32F103C8

(upload_protocol: stlink; platform: ststm32; board: genericSTM32F103C8; framework: arduino)

--------------------------------------------------------------------------------------------------

Verbose mode can be enabled via `-v, --verbose` option

Collected 27 compatible libraries

Looking for dependencies...

No dependencies

Linking .pioenvs/genericSTM32F103C8/firmware.elf

Calculating size .pioenvs/genericSTM32F103C8/firmware.elf

text data bss dec hex filename

6484 1936 312 8732 221c .pioenvs/genericSTM32F103C8/firmware.elf

================================ [SUCCESS] Took 1.55 seconds =====================================

上传程序

因为前面已经配置了程序上传方式为stlink,所以将stlink连接最小系统板和mac就可以执行上传了,这里也会下载相应的下载工具,waiting … :


make upload

可能会遇到下面类似的问题:


➜ test make upload

platformio -f -c vim run --target upload

[Wed Nov 8 09:50:10 2017] Processing genericSTM32F103C8

(upload_protocol: stlink; platform: ststm32; board: genericSTM32F103C8; framework: arduino)

------------------------------------------------------------------------------------------------------

Verbose mode can be enabled via `-v, --verbose` option

Collected 27 compatible libraries

Looking for dependencies...

No dependencies

Linking .pioenvs/genericSTM32F103C8/firmware.elf

Checking program size

text data bss dec hex filename

6484 1936 312 8732 221c .pioenvs/genericSTM32F103C8/firmware.elf

Uploading .pioenvs/genericSTM32F103C8/firmware.bin

2017-11-08T09:50:11 INFO src/common.c: Loading device parameters....

2017-11-08T09:50:11 WARN src/common.c: unknown chip id! 0xe0042000

st-flash 1.3.1

*** [upload] Error 255

====================================== [ERROR] Took 1.53 seconds ======================================

make: *** [upload] Error 1

有一个临时的解决方法,将板上的BOOT0与VDD短接,复位一下最小系统板,会进入boot模式,此时执行make upload,程序会同时烧写在flash和内存上,一旦复位内存上的程序会消失,如果BOOT0还是接VDD的话还会进入boot模式,此时程序已经没了,但是flash 中仍然存在,所以只需将BOOT0短接GND再复位一下,板子就从flash启动了,所以最终程序调试方法为:


调试程序:BOOT0短接VDD,每次上传程序先复位板子,然后执行make upload;不进行调试的话,先以调试程序的方式上传程序,然后短接BOOT0和GND,复位一下板子,板子会从flash启动运行固化的程序。


上述问题本来不该出现,后来发现原来是我的usb hub有问题,我直接将stlink v2连接到macbook上是没有上述问题的。

推荐阅读

史海拾趣

EHC(ELECTRONICHARDWARE)公司的发展小趣事

面对日益全球化的市场环境,EHC公司积极实施国际化战略。公司通过与国外知名企业的合作,引进先进的技术和管理经验,不断提升自身的竞争力。同时,EHC公司还积极参加国际展会和论坛,拓展海外市场。经过多年的努力,EHC公司的产品已经成功打入国际市场,并在多个国家和地区建立了稳定的销售渠道。

Forge Europa Ltd公司的发展小趣事

Forge Europa Ltd公司自成立以来,始终将技术创新视为企业发展的核心驱动力。早期,公司便投入大量资源研发高效能LED灯带技术,成功推出了具有行业领先地位的5050型号LED灯带。这款产品在市场上迅速获得认可,不仅因为其出色的光效和节能性能,更在于其独特的散热设计,有效延长了产品的使用寿命。Forge Europa的这一技术创新不仅为公司赢得了市场份额,也奠定了其在LED灯带领域的领先地位。

EG & G Inc公司的发展小趣事

近年来,电子行业面临着诸多变革和挑战,如技术更新换代加速、市场需求变化等。为了应对这些变革,EG & G Inc公司不断进行战略调整和业务优化。公司加大了对新技术和新产品的研发力度,同时注重提高生产效率和降低成本。此外,公司还积极探索新的商业模式和市场机会,以保持其在行业中的领先地位并实现持续发展。

以上五个故事概述了EG & G Inc公司在电子行业中的重要发展历程和关键事件。这些故事不仅展示了公司的实力和成就,也反映了其在不断变革的市场环境中保持竞争力和持续发展的能力。

EFINIX公司的发展小趣事

经过深入研发,EFINIX公司成功推出了Quantum™可编程加速器技术。与传统的FPGA技术相比,Quantum™技术可将面积利用率提高4倍,使得ASIC、ASSP和FPGA领域的高级可编程硅产品得以实现。该技术使EFINIX的产品在面积、功耗、性能等方面具有显著优势,吸引了众多客户的关注。

Efficient Power Conversion公司的发展小趣事

EPC公司成立于2007年,由三位拥有六十年先进功率管理技术经验的资深工程师共同创立。公司的创始人们认识到,随着技术的不断发展,传统的硅功率技术已接近其性能极限。他们决定专注于氮化镓技术的研究与开发,这是一种新型的半导体材料,具有比硅更高的电子迁移率和更低的电阻。经过数年的研究和试验,EPC公司成功开发出了基于氮化镓的高效功率半导体器件,这一突破性的技术为公司的未来发展奠定了坚实的基础。

东晨(DC)公司的发展小趣事

东晨(DC)公司深知人才是企业发展的核心动力。因此,公司高度重视人才培养和引进工作。公司建立了完善的培训体系,为员工提供全面的职业发展和技能培训。同时,公司还积极引进优秀人才,通过股权激励等措施留住人才。这些措施为公司的持续发展提供了有力的人才保障。

问答坊 | AI 解惑

ARM开发过程

用户选用ARM处理器开发嵌入式系统时,选择合适的开发工具可以加快开发进度,节省开发成本。因此一套含有编辑软件、编译软件、汇编软件、链接软件、调试软件、工程管理及函数库的集成开发环境(IDE)一般来说是必不可少的,至于嵌入式实时操作系统、 ...…

查看全部问答>

自动变速器的基本组成和工作过程

一、自动变速器的基本组成     自动变速器的厂牌型号很多,外部形状和内部结构也有所不同,但它们的组成基本相同,都是由液力变矩器和齿轮式自动变速器组合起来的。常见的组成部分有液力变矩器、行星齿轮机构、离合器、制动器、油泵、 ...…

查看全部问答>

寻南京WDK开发高级人员

因业务需求,招WDK开发,从事BDA架构,WDK  PCIe设备驱动开发,待遇优厚,要求有过WDK项目开发经验。非诚勿扰.mail:karllichina@sina.com,Tel:13376067858…

查看全部问答>

windows键盘中断问题

在DOS下敲下键盘就会触发一条int 9指令 windows下呢?是不是也是用int 来触发一个中断 这个中断号是多少? …

查看全部问答>

WINCE下网卡驱动的开发问题,进者有分,结贴做总结,欢迎畅所欲言【推荐】

最近在做网卡驱动,但是无论是google还是baidu发现这方面的资料不多,尤其是wince下网卡驱动的开发,就更少了!以前由于BSP包里面都带,要么CS8900,要么DM9000,当然也有其他的网卡。其中在模拟器里面提供了CS8900网卡的源码,现在抛出问题,希望能 ...…

查看全部问答>

如何改变EVC下DIALOG对话框的背景色

如题 大家帮忙咯 最好提供出确切代码 谢谢++ 还有个附加问题,如果想给对话框加个边框,怎么弄 又谢谢,再谢谢    嘿嘿…

查看全部问答>

版主请看图,关于STK_CALIB,复位值到底是多少?

下载 (27.39 KB) 2010-10-22 11:13 下载 (39.94 KB) 2010-10-22 11:13 …

查看全部问答>

急求助有关PC_DispChar

小弟利用周公smartarm2200开发板做串口中间件实验,在main.c和pc.c文件中都有PC_DispChar()函数的定义,编译说重复定义了。不知该如何修改呢?请各位大小指教~谢谢(在线等) 这是pc.c中的: void PC_DispChar (INT8U x, INT8U y, INT8U c, ...…

查看全部问答>

基于SOPC虚拟示波器的设计分析

  基于SOPC虚拟示波器的设计分析   模拟示波器由于无法高效地观察实验结果、数据处理功能弱等缺点,已逐渐被数字示波器所取代,但数字示波器价格昂贵。虚拟仪器是在通用计算机平台上,用户利用软件根据自已的需求定义设计仪器的测量功能,其可 ...…

查看全部问答>

MSP挑战级(高级)客观题终于刷到80分了

第一次成绩太对不起广大人民群众,决定刷分,刷了一下午,终于客观题到80了。…

查看全部问答>