问题标签 [stm32ldiscovery]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
658 浏览

stm32 - STM32远程固件更新标准方法

我的问题是关于带有 STM32F072RBT6 MCU 的 STM32F0 系列探索套件的引导加载程序序列的特殊情况,我们目前已在该领域的一些产品中实施。

我将使用 ST 自己的引导加载程序来更新我的固件,但我想远程执行此操作,这意味着无法按照用户手册中的说明将 BOOT0 和 BOOT1 引脚物理短路以进入“BOOT”模式。

—> 假设我上传的固件不是一个好版本,它有问题或者我想稍后上传我的固件的更新版本。我的问题是,在运行用户应用程序后,我无法返回 ST 的 ROM 引导加载程序来获取新固件。如果我重置电路板,它将再次开始从闪存而不是 ROM 执行指令。

唯一的解决方案是自定义引导加载程序吗?

如果解决方案是自定义引导加载程序,我已经实现了一个虚拟引导加​​载程序,我将其下载到我的闪存的第 0 和 1 部分(如果需要,还有更多)。这个虚拟引导加​​载程序将在复位时始终首先运行。它所做的只是决定跳转到闪存第 2-7 节中的用户应用程序代码或系统内存 (ROM) 中 ST 的原始引导加载程序。它将通过将主堆栈指针 (MSP) 设置为提到的部分的起始地址来实现,请参见下面的代码。

这很好,好像我的固件损坏了,我可以重置,如果需要,我很高兴上传新代码。

这在业界是如何完成的?有一个标准的 3rd 方工具/lib 我可以使用它提供与我的引导加载程序相同的功能,但它更稳定吗?

0 投票
2 回答
245 浏览

stm32 - 我们如何将浮点值转换为字符串值

我正在尝试将浮点值转换为字符串。为此,我使用了“ftoa”,但它显示了“未定义对 ftoa() 的引用”之类的错误。另外我使用了“gcvt()”而不是 ftoa,但没有工作。请问有什么建议吗?

谢谢。

0 投票
1 回答
155 浏览

c - STM32L1 - Malloc 问题(初学者问题)

我对C有点陌生,但觉得我有很好的基本理解,因此在这里发布了这个问题。

我正在尝试移植一些用于 Waveshare 电子纸显示器的演示代码,以用于我的研究生项目中的应用程序。现在我只是想证明演示代码是有效的,但以后很可能会用到它的某些方面。

我目前遇到的问题是使用以下几行:

我很确定我对此的理解是正确的,但本质上是:

  1. 为 BlackImage 创建一个指针
  2. 为 Blackimage 分配的内存大小取决于显示尺寸
  3. 在 if 语句中,BlackImage 从上面的行中分配了内存大小,并重新返回 BlackImage 的指针值。如果此指针值为 NULL(即 0),则内存尚未分配。

我的代码总是无法“应用此内存”。我认为原因是我没有足够的可用内存..但这是我的问题:

  1. 如果我没有足够的内存 - 我在哪里可以找到这个?(我正在使用 Keil uVision IDE)
  2. 我可以通过移动内存分配来解决这个问题吗?malloc 是否存储在特定类型的内存中?我知道术语堆本质上是可用内存,但是这与 uC 数据表中的哪种类型的内存相关?
  3. 有没有其他方法可以做到这一点?演示代码还包括一个存储在单独的 C 文件(附加 ImageData.c)中的数组,那么为什么要在这里使用 malloc 而不是以同样的方式呢?
  4. 围绕这个问题的最佳解决方案是什么?

提前感谢您的帮助!请指正我说的不正确的地方,我是来学习的!:D

编辑:下面的附加信息。

我正在使用具有 16kB RAM 的 STM32L152RB(STM32L-Discovery)。另请参阅下面的变量:

完整的演示代码可以在这里找到:https ://www.waveshare.com/wiki/File:2.13inch_e-paper_code(V2).7z

我所做的只是将引脚移植到上面并移除 printf/debug 线,因为我目前没有 USB 到 TTL 转换器。

0 投票
1 回答
995 浏览

timer - stm32中的定时器/计数器溢出中断的名称是什么

我在带有keil编译器的STM32 micro的输入捕获模式下使用定时器,并且我想在专用定时器的计数器寄存器溢出时触发中断。

谁能告诉我我该怎么做?这个中断的名称是什么?

注意:我正在使用 hal 函数。

0 投票
0 回答
214 浏览

rust - 为什么我们在使用 STM32F30x 的嵌入式 RUST 中使用 FLASH.constrain() 和 RCC.constrain()?

我是 Rust 的新手。目前我正在使用 STM32F303 Discovery 板进行嵌入式 rust。我在访问寄存器时遇到了很多问题,不知道如何访问 RCC、FLASH、TIMER 等以完成任务。谁能帮帮我。您可以查看我卡住的代码。

0 投票
3 回答
1234 浏览

stm32 - 如何在 STM32CubeIDE 的控制台中显示一个变量(这里是温度)?

我是 SMT32 产品的初学者。我尝试复制这个教程,它提出了如何与 HTS221sensor 接口以获取温度值并将它们显示在终端上:

家教

我严格按照教程进行,项目的构建是可以的,但是当我在STM32L475VGT6板上以调试模式运行代码并打开控制台->命令shell控制台->此控制台中没有显示任何内容(不显示温度)。

此外,当我在“表达式”中设置变量时,显示的值是“错误:目标不可用”...

你能帮我解决这些问题吗?

我的 main.c 代码:

谢谢,

问候,

莱昂内尔

0 投票
3 回答
15553 浏览

gdb - 如何在 stm32cubeide 中启动 GDB 服务器?

现在我正在尝试在 STM32G0-Disco-board 上使用 WIN10 上的程序 stm32cubeide 进行编程。这工作得很好,直到它没有。我现在的问题是我不能再调试/运行它了。这是我使用这个程序的第一天,这并不意味着它一开始就不起作用。构建、调试和运行工作得很好。但现在我收到此错误消息:

我已经尝试了多个 USB 端口,即板上的跳线。我什至查看了这个批处理文件:C:\ST\STM32CubeIDE_1.3.0\STM32CubeIDE\plugins\com.st.stm32cube.ide.mcu.externaltools.stlink-gdb-server.win32_1.3.0.202002181050\tools\bin ST_LINK_gdbserver 因为它在其他线程中提到过,我刚得到这个:

错误:无法在 '..\STM32CubeProgrammer\bin\' 中找到 STM32CubeProgrammer,使用 -cp GDB 服务器已退出。哦,是的,我已经查看了设备管理器,对我来说一切都很好。

非常感谢您的帮助!

0 投票
0 回答
44 浏览

stm32 - 忙等待时中断的好处?

我分别知道忙等待和中断的具体情况,但不确定在忙等待循环中使用中断有什么好处。

0 投票
1 回答
3766 浏览

linux - 用 STLINK 和 Linux 刷 ST 板

我正在尝试通过 STLINK 连接器从 Linux 命令行中刷新 ST 板(STM32 发现套件 STM32L072)。

要使用 STLINK 闪存,您只需将二进制文件复制粘贴到 USB 阅读器(与 STLINK 关联)中即可;

为此,使用dmesg,我找到了/dev/sdx。然后我挂载/dev/sdx

使用ls命令,我可以读取 ST 板的文件夹:

==>我可以阅读ST板。

现在我可以将二进制文件复制到 ST 板上。复制后应自动完成闪存:

我们可以看到 STLINK 的 LED 闪烁,呈绿色。二进制文件正在闪烁。

但我有两个主要问题:

  • 有时,将二进制文件复制到/mnt/board后,不会立即将二进制文件闪存到 ST 板。有时我们必须等待 30 秒以上。

  • 我的第二个问题,就是刷完之后ST板没有RESET。当我使用装有 Windows 的计算机执行此过程时,ST 板在闪烁后被重置。我需要对/dev/sdx或其他东西做些什么吗?

非常感谢,纪尧姆

0 投票
1 回答
228 浏览

arduino - 尝试使用 LoRaFi 库编译 STM32duino 项目时,设备头文件中出现莫名其妙的“error: expected ')' before '*' token”错误

我正在尝试编译 LoRaFi 库中包含的示例,用于 SX1272 LoRa 无线电帽和 STM32 IoT 节点发现套件。这是一个STM32duino项目。

该错误专门指向 IoT 节点的设备标头,包含在 STM32core 包中。

这个错误对我来说没有任何意义,因为 CRC_TypeDef 的结构在标头本身中有很好的定义。

后面是CRC自己的定义

LoRa 无线电需要打开 CRC,所以我不能只注释掉 LoRaFi.h 中的违规代码。我不知道如何解决这个问题。CRC_TypeDef 定义正确,CRC 也应该是可定义的。

任何帮助将非常感激。

如果有帮助,这里是 LoRaFi 提供的示例。值得注意的是,所有提供的示例都会出现此错误,而不仅仅是这个。