最新文�? Serdes系统中CTLE技术的介绍 高速通信系统中的均衡技术 DRAM接口的最新演进梳理---DDR5_LPDDR5_GDDR6 高性能微处理器的电源传输网络—挑战、解决方案及未来趋势 高速串行链路中PAM4信号设计的考量因素
原创 : 使用Arduino开发STM32之环境搭建(附带小鱼的唠叨) 历史版本:
上次修改时间:

引用自

原创 : 使用Arduino开发STM32之环境搭建(附带小鱼的唠叨)

使用Arduino开发STM32之环境搭建(附带小鱼的唠叨)

大家好,我是爱吃猪脚饭的小鱼,今天我们开一个新的小坑,就是用Arduino开发STM32并教你如何使用HAL库在Arduino工程中。之所以要开这个坑的原因是小鱼发现,很多初学者往往很迷恋某一个特定的开发平台,最为突出的就是STM32,记得在小鱼大学那会,开发STM32主要分库函数和寄存器两个流派,最奇怪的是用寄存器的会鄙视库函数,毕竟寄存器人很难看得懂,看不懂的就比较高级-)。小鱼认为,大道至简,把产品设计的简单好用更难但也更能赢得客户,再说现在的AI发展如此迅速,甚至出现了给出模块自动绘制原理图PCB的工具,看样子我迟早会被干掉的(苦瓜脸)。

所以相比使用IDF开发ESP32和用寄存器库函数或直接HAL开发STM32,小鱼个人比较推崇Arduino,原因在于,使用原生平台多行代码才能完成的事情,Arduino一行就可以(当然你会说用cubemx直接配置生成,一行代码都不用,但Arduino平台的生态真的很强,太多库拿来即用了)。

Arduino 平台的的STM32其实就是封装的HAL库,所以如果你觉得某个Arduino库不好用,你可以自己写,或者直接把原来的HAL库移植过来,这样也不失灵活性。

所以在这个教程中,你将看到使用Arduino和HAL混血的写法,比如这样:

还有这样


以及使用C++创建一个类。最后如果有时间,再开个cubemx+PIO的开发流程。

话不多说,先来创建工程,系统用windows和linux都行,不过小鱼还是喜欢用linux,习惯了主要是。

最好用ubuntu22.04,因为一键安装支持

所以,第一步就是运行一键安装:

https://fishros.org.cn/forum/topic/20

先安装VSCode,接着打开vscode,搜索 platformio 安装

开发 Ardunio 我们可以采用 PlatformIO IDE 进行开发,该 IDE 支持多种类型的单片机,可以在 VSCode 中直接通过插件进行安装。PlatformIO IDE 主要使用 Python 编写,为了能够跨多个版本使用,PlatformIO IDE 在 Python 虚拟环境运行,所以我们需要先安装虚拟环境工具,命令如下:sudo apt install python3-venv 安装完成后打开 VS Code 的扩展商店,如下图所示,搜索安装 PlatformIO IDE

安装完成后在 VS Code 的侧边就可以看到 PlatformIO IDE 的按钮,点击按钮就会执行 PlatformIO IDE 的首次初始化程序。如果初始化过慢可以手动进行初始化安装,命令如下:source ~/.platformio/penv/bin/activate # 激活虚拟环境 pip install platformio # 安装 platformio 核心 pio pkg install --global --tool “platformio/contrib-piohome”

运行完成后,基本就可以装好了,然后在PIO里新建工程


新建工程


接着输入


第二个可以选你的板子,小鱼这里买的是stm32103c6t6的最小系统板子,不到10元。

点Fishish 即可,整个过程会很慢,你可以关闭这个页面,然后用vscode打开文件夹的方式,打开刚刚新建的工程,然后再次点击PIO按钮,这个时候右下角就会出现load相关的进度,直接点取消。

重点来了。

点左下角这里


然后在打开的新的终端里输入

pio run

好,接着等待,这时候就可以看到整个的进度条了,如果网络不好,一键安装里有某个上网工具,咳咳

pio run 结束后应该会报错,因为没有main.cpp,我们来新建一个

在 src/目录下新建 main.cpp ,然后编写如下内容(闪个灯,开发过FishBot的小伙伴会发现这个代码和ESP32上的一模一样,没错!):

#include <;Arduino.h>;

void setup(void)
{
  pinMode(PC13, OUTPUT);
}

void loop(void)
{
  digitalWrite(PC13, HIGH);
  delay(500);
  digitalWrite(PC13, LOW);
  delay(500);
}

接着在运行pio run 的终端再输入

platformio run --target upload

来下载一些上传工具并上传,比如stlink的驱动~

接着你就可以把你的stlink和单片机连在一起,也可以直接使用串口下,直接用usb下也可以。

我们需要改一下下载模式:

PIO可以使用下面这么多种类:

AVAILABLE: blackmagic, cmsis-dap, dfu, jlink, serial, stlink CURRENT: upload_protocol = serial

默认是串口,需要改一下,修改

platformio.ini 文件如下:

[env:genericSTM32F103C6]
platform = ststm32
board = genericSTM32F103C6
framework = arduino
upload_protocol=stlink

对了,PIO还支持一个工程给很多个板子用,什么意思呢,比如我还有一块STM32F103C8T6

可以添加两个配置

[env:genericSTM32F103C6]
platform = ststm32
board = genericSTM32F103C6
framework = arduino
upload_protocol=stlink

[env:genericSTM32F103C8]
platform = ststm32
board = genericSTM32F103C8
framework = arduino
upload_protocol=stlink

在VSCode右下角可以切换板子,非常的丝滑。

配置好,直接用快捷键:Ctrl+Shift+U 或者点击左下角的 ->; 进行上传即可,板子小鱼并没有带回来,今天就没有办法给大家进行演示了,改天补上。

今天是干货满满的一篇文章,记得点赞再看~

0条评�?
全部评论

关于博主

an actually real engineer

通信工程专业毕业,7年开发经验

技术栈:

精通c/c++

精通golang

熟悉常见的脚本,js,lua,python,php

熟悉电路基础,嵌入式,单片机

耕耘领域:

服务端开发

嵌入式开发

git

>

gin接口代码CURD生成工具

sql ddl to struct and markdown,将sql表自动化生成代码内对应的结构体和markdown表格格式,节省宝贵的时间。

输入ddl:
输出代码:

qt .ui文件转css文件

duilib xml 自动生成绑定控件代码

协议调试器

基于lua虚拟机的的协议调试器软件 支持的协议有:

串口

tcp客户端/服务端

udp 组播/udp节点

tcp websocket 客户端/服务端

软件界面

使用例子: 通过脚本来获得接收到的数据并写入文件和展示在界面上

下载地址和源码

duilib版本源码 qt qml版本源码 二进制包

webrtc easy demo

webrtc c++ native 库 demo 实现功能:

基于QT

webrtc摄像头/桌面捕获功能

opengl渲染/多播放窗格管理

janus meeting room

下载地址和源码

源码 二进制包

wifi,蓝牙 - 无线开关

实现功能:

通过wifi/蓝牙实现远程开关电器或者其他电子设备

电路原理图:

实物图:

深度学习验证工具

vtk+pcl 点云编辑工具

实现功能:

1. 点云文件加载显示(.pcd obj stl)

2. 点云重建

3. 点云三角化

4. 点云缩放

下载地址:

源码 二进制包

虚拟示波器

硬件实物图:

实现原理

基本性能

采集频率: 取决于外部adc模块和ebaz4205矿板的以太网接口速率,最高可以达到100M/8 约为12.5MPS

上位机实现功能: 采集,显示波形,存储wave文件。

参数可运行时配置

上位机:

显示缓冲区大小可调

刷新率可调节

触发显示刷新可调节

进程守护工具

基本功能:

1. 守护进程,被守护程序崩溃后自动重启。

2. 进程输出获取,显示在编辑框中。

二进制包

openblt 烧录工具

基本功能:

1. 加载openblt 文件,下载到具有openblt bootloader 运行的单片机中。

二进制包

opencv 功能验证工具(开源项目二次开发)

基本功能:

1. 插件化图像处理流程,支持自定义图像处理流程。 2. 完善的日志和权限管理

二进制包

又一个modbus调试工具

最近混迹物联网企业,发现目前缺少一个简易可用的modbus调试工具,本软件旨在为开发者提供一个简单modbus测试工具。
主打一个代码简单易修改。
特点:

1. 基于QT5

2. 基于libmodbus

3. 三方库完全跨平台,linux/windows。

二进制包

屏幕录制工具

1. 基于QT5

2. 基于ffmpeg

3. 支持自定义录屏

源代码

开源plutosdr 板卡

1. 完全开源

2. 提高固件定制服务

3. 硬件售价450 手焊产量有线

测试数据

内部DDS回环测试

接收测试

外部发送500MHZ FM波形

硬件原理图

matlab测试

2TRX版本

大部分plutosdr应用场景都是讲plutosdr板卡作为射频收发器来使用。
实际上plutosdr板卡本身运行linux 操作系统。是具有一定脱机运算的能力。 对于一些微型频谱检测,简单射频信号收发等应用完全可以将应用层直接实现在板卡上
相较于通过网卡或者USB口传输具有更稳定,带宽更高等优点。
本开源板卡由于了SD卡启动,较原版pluto支持了自定义启动应用的功能。
提供了应用层开发SDK(编译器,buildroot文件系统)。
通过usb连接电脑,经过RNDIS驱动可以近似为通过网卡连接
(支持固件的开发定制)。

二次开发例子

``` all:
arm-linux-gnueabihf-gcc -mfloat-abi=hard --sysroot=/root/v0.32_2trx/buildroot/output/staging -std=gnu99 -g -o pluto_stream ad9361-iiostream.c -lpthread -liio -lm -Wall -Wextra -lrt
clean:
rm pluto_stream

bsdiff算法补丁生成器

1. 官方bsdiff算法例子自带bzip压缩方式

2. 本例子没有压缩,直接生成补丁文件

3. 图形化界面基于DUILIB

二进制文件

版面分析即分析出图片内的具体文件元素,如文档标题,文档内容,文档页码等,本工具基于cnstd模型

Base64 Image

. 闽ICP备19002644号