🥬STM32借助Mbed OS多线程调节电脑音量
STM32 | Mbed OS | 多线程
Mbed定义STM32
STM32
本文使用 Black Pill STM32,其DIP 外形尺寸适合任何面包板,并且 USB C 电缆可以为电路板供电,除非您驱动大量外部电路,否则您可能不需要外部电源。
不过,与某些开发板不同的是,USB 端口无法帮助您进行编程,除非您在引导加载程序中进行烧录。 理论上,如果在复位过程中按住 BOOT0 按钮,板子可以做 DFU。 但是,我的板子偶尔会进入 DFU 模式,这似乎是一个普遍的问题。 解决的诀窍似乎是拔下 USB 并重新插入,而不是使用重置按钮。 插入电路板时,按 BOOT0,几秒钟后,松开 BOOT0 按钮,这使它更可靠一些。 然后,您需要一个 DFU 闪存程序来编写一个 .bin 文件,以便写入位置 0x08000000 处的 DFU 设备的 alt 0,至此,你仍然不能开始调试。
从 USB 连接到 10 针连接器的 STLink v2 加密狗非常便宜,它将让您进行编程和调试。 但是,这些加密狗不支持跟踪功能。
当然,您也可以在没有跟踪的情况下使用,可以通过称为 SWO(串行线输出)的功能进行“printf 样式”输出,而不必将 USB 端口用作串行端口。 如果你想要 SWO,你要么需要更昂贵的 STLink 版本(带有更大的连接器)。 您还可以使用其他类似的探头,例如 Blackmagic 探头。 在某些情况下,您也可以使用半主机,但最好使用正确的探针、SWO 输出或仅使用调试器。
我使用的 STLink 加密狗有 10 个引脚。 不幸的是,并非所有复制品都具有相同的引脚排列。 Blackpill 上的四个引脚(从左侧开始,同时查看连接器)是:3.3 V、SWDIO、SWCLK 和接地。 如果您不介意从 USB 端口获取电源,则只需要最后三个引脚。
通常,这些复制品适配器的外壳上有引脚排列。 对于我来说,我需要的三根电线分别位于引脚 6、7 和 8 上。如果您确实需要从设备中汲取 3.3 V 电压,请小心,消耗过多电流或短路电源线会损坏加密狗。
软件
我选择 Mbed 工具,它是一个类似于 Arduino 的生态系统。不过,其生态系统并不直接支持 Black Pill,且目标板不支持 USB。 不过,它似乎只能在本地运行的 Mbed IDE 上工作。如果您使用不同的工具集,您可能会发现自己需要自己来定义目标,如PlatformIO。
开始
一旦你把所有东西都组装好了,就很容易让程序运行起来。让我们做一个简单的 LED 闪光灯,在 USB 串行端口上输出一些输出。 例如,您可以在在线模拟器中运行“Blinky”示例。 问题是 printf 在我们的板上没有任何用处。
#include "mbed.h"
#include "USBSerial.h"
DigitalOut led(LED1);
USBSerial usbSerial(false); // don't wait for connection
int main() {
usbSerial.connect(); // set up serial port
while (1) {
led = !led;
usbSerial.printf("Blink! LED is now %d\\n", led.read());
ThisThread::sleep_for(500ms);
}
}
就是这么简单。只需按照 Black Pill 配置中的说明设置一个项目。即:
在 Mbed IDE 中创建一个新项目。
右键单击程序的根文件夹,然后在弹出窗口中选择添加库...
打开下拉列表并选择默认值,然后单击完成。
如果您使用的是 STLink,您只需单击运行按钮或调试按钮即可开始使用。 如果您选择了 DFU,IDE 会告诉您将 .bin 文件放在哪里。 这就是你需要为你的 DFU 编程器提供的东西。 如果您使用 Linux,dfu-util 行将如下所示:
STM32 Mbed OS多线程控制
线程设置
音量调节
多线程通讯
源代码
Last updated