问题标签 [truestudio]

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 投票
2 回答
659 浏览

stm32 - 如何从 TrueStudio 调试和烧写 Nucleo32 板?

我正在尝试通过 TrueStudio 将我的代码闪存到 NUCLEO-L432KC(STM32L432KC)。它失败了。

[在此处输入图像描述

看起来工具无法检测到 ST-Link 探针。我刚刚通过 PC(Windows10)的 USB 电缆连接了它。代码和工程文件由 STM32CubeMX 生成。

缺少什么?我应该怎么办?

我已经确认以下。

  • 从 STM32CubeProgrammer GUI,它无法检测到 ST-Link 连接。
  • 从 STM32CubeProgrammer CLI,它可以检测 ST-Link 的 S/N。但无法连接。
  • 从 STLinkUpgrade 3.3.0 开始,它可以检测设备和 S/N。也可以更新到 V2J33M25。
  • 从 IAR Embedded Workbench,它可以构建和闪存代码以及调试。完全没有问题。
  • STM32F4 Discovery 套件用于 STM32F429 MCU 的结果看起来相同。
0 投票
2 回答
480 浏览

eclipse - Eclipse:串行终端:将 /n 视为 /n/r

我正在为 STM32 平台使用称为 Atollic TrueSTUDIO 版本 9.2.0 的 Eclipse 变体。

当我printf("Hello World\n");从微控制器执行时,是否可以将 Eclipse 终端配置为将其\n视为换行符?如果没有回车,Eclipse 不会将光标返回到行首。

是否有可能做到这一点?我尝试了以下操作:Window->Preferences->General->Workspace,并在此窗口中选择了“New text file line delimiter: Unix”,但这对我不起作用。

下图说明了问题。 Eclipse 不将 \n 视为换行回车

0 投票
1 回答
1731 浏览

c - 如何在 Atollic TrueStudio 中包含 CMSIS-DSP 标头

我正在尝试在 STM32 F411RE 板上实现 DSP 的使用,但我似乎无法在不调用大量错误的情况下包含必要的文件。

背景

我以前在 Keil uVision 中使用过 CMSIS 和 CMSIS-DSP,但考虑到 32k 的代码限制,我很快就超过了评估限制。因此,我一直在尝试将 CMSIS-DSP 包含到 Atollic TrueStudio 中,但这似乎很难实现:CMSIS-DSP 上可用的文档有限,在 Atollic TrueStudio 中实现的文档更少。

一些相关资源可以在 Atollic TrueStudio 用户指南 以及 StackOverflow 主题 #1StackOverflow 主题 #2中找到 。我能找到的大多数其他相关主题只是参考 Keil uVision 或用户指南的使用,而没有更多帮助。

Atollic TrueStudio 确实包含一个内置的包管理器,其中基本 CMSIS 可供下载,但它不为 CMSIS-DSP 包提供此选项。

尝试的解决方案

我曾尝试手动下载对应的CMSIS包(STM32Cube_FW_F4_V1.24.0),并将对应的DSP包放入工程文件结构中。然后,这允许使用 DSP 功能,例如 #include arm_math.harm_rfft_fast_instance_f32 S;可以通过使用自动完成功能来调用,并因此被 IDE 识别。

然而,这个过程也会引发很多错误,因为包含的函数无法识别它们的头依赖关系(例如#include arm_math.h)。我发现 main.c 能够识别该#include arm_math.h命令但包含的功能却不是,但我仍然尝试通过将 CMSIS DSP 添加到包含的目录来解决这个问题(在“构建属性-> C/C++”中找到构建 --> 设置 --> 工具设置 --> C 编译器 --> 目录`)。然而,这也不能解决手头的问题。

代码结果

该函数找不到标题

函数找不到标头

但是主要可以找到完全相同的标题

Main.c 可以找到标题但是

并且标头包含在构建选项 -> 目录中

构建选项,包括 DSP 头

刚刚验证它也包含在“路径和符号”中,一旦将其包含在构建选项中,它应该自动执行 AFAIK:

路径和符号

更新

自从我的 OP 以来,我取得了一些进展,主要是通过弄乱包含、符号和链接器。我现在已经设法克服了最初的错误(尽管不幸的是我不知道如何),但是我现在已经为 startup_stm32 文件产生了大量额外的错误。

这些似乎都是涉及 CMSIS 中包含的模板文件(CMSIS / Device / ST / STM32F4xx / Source / Templates / ARM / ...)的错误指令错误,无法解释这些模板中列出的各种命令。

示例错误:bad instruction __heap_base

0 投票
3 回答
1903 浏览

stm32 - 在 TrueStudio 中上传到 STM32 时如何修复“无法打开文件”

我正在尝试将我为 STM32F411RE 编写的程序从我的 TrueStudio for STM32 IDE 上传到电路板本身。该板通过 mini USB b 电缆连接,目的是通过 SWD 对其进行编程。

设置

Atollic 提供了一个很好的教程,介绍如何通过其 TrueStudio IDE 和 ST-Link_CLI(命令行界面)执行此编程,如此链接中的文档所述。这需要以下步骤,我已多次遵循并检查:

  1. 首先,输出(二进制)文件需要是 intel .HEX 而不是 TrueStudio .elf 默认值。要更改此设置Project properties -> c/c++ build -> settings -> tool settings tab -> other -> Output format 并勾选“转换构建输出”选项,请确保在下拉列表中选择了 Intel Hex 选项。

    1


  2. 要从 IDE 内部调用 ST-Link_CLI,需要进行外部工具配置。为了进行这个配置,我去Run -> External Tools -> External Tools Configurations ....创建一个新的配置,我们称之为 ST-Link_CLI。

    对于工作目录,我指定我的 ST-LINK_CLI
    ( C:\Program Files (x86)\STMicroelectronics\STM32 ST-LINK Utility\ST-LINK Utility)的目录,
    而对于位置,我指定此目录和文件名
    ( C:\Program Files (x86)\STMicroelectronics\STM32 ST-LINK Utility\ST-LINK Utility\ST-LINK_CLI.exe)。
    最后,我添加了以下参数来识别 STM32 板,让它通过 SWD 连接并处于复位状态,同时告诉它上传由 TrueStudio
    ( -c ID=0 SWD UR LPM -P ${project_loc}\Debug\${project_name}.hex -v) 构建的 .HEX 文件。

    2


输出

当我通过Run -> External Tools -> ST-Link_CLI刚刚创建的链接调用这个外部工具配置时,我得到下面列出的输出:

3

显然,从 IDE 内部成功调用了 ST-Link_CLI,但它无法消化 .hex 文件(在调试文件夹内)并将其上传到 STM32 板。

即使从 CubeMX 刷新一个全新生成的项目并设置上述选项(包括将其设置为 .hex 文件)也不会让该工具链将其上传到板上。


手动刷码

我已经能够通过使用 ST-Link GUI 手动将 TrueStudio 构建的 .HEX 文件上传到 STM32 Board 成功上传,所以我认为问题不在于 ST-Link 本身。但是我不能以这种方式调试它,因为我需要 TrueStudio IDE 工具,因此需要外部工具配置才能成功工作。

3 4

相反,我怀疑问题出在我自己的设置上,不知何故缺少通话或选项设置不正确。也可能是 GUI 和 CLI 客户端以完全不同的方式运行,允许一个读取和上传文件,而另一个不能,但这对我来说似乎不合理。


但是,我在这里有点不知所措,因为我似乎无法弄清楚为什么其他人可以通过提供的 Atollic 文档来完成这项工作,而我却抛出了这些错误。

0 投票
1 回答
539 浏览

c# - 如何使用 C# 将十六进制转换为浮点数

我通过 UART 从 ST MCU 获取数据并将值显示到 PC 屏幕,但其结果与我对浮点类型的预期不同。

我正在使用 TrueStudio for ST MCU 和 C# 在屏幕上显示值。我在 MCU 上使用浮点值并将数据发送到 PC 当我进入 PC 时,如果我向 textBox 显示浮点值,它的结果与我的预期相差太大。在 TrueStudio 内存视图和观察视图中,我可以看到下面

  1. 在 TrueStudio MCU 中,我可以看到

    • 在观察窗口中:acc.x = 5.12400007
    • 在内存视图中:浮点格式的 5.124000E0 十六进制格式的 CFF7A340
  2. 我可以通过 C# 中的 Visual Studio 在 PC 中获取这些数据

    • 我可以通过观察窗口看到 byte[] 数组数据,我可以看到我得到了

      /li>
    • 所以在 12 月,3489112896
    • 我用这些转换了这个值,但我无法得到我想要的,5.124

      将 dec 转换为 UInt32 所以

      /li>

    在 TrueStudio 中,复制如下(在 C 中)

    在视觉工作室中,C#

    我首先尝试使用 MSB/LSB,但无法得到我想要的。如何在 C# 中获得 5.123 浮点值?

0 投票
2 回答
12680 浏览

stm32 - STM32 虚拟串口有什么问题?我打不开

我有 Nucleo STM32H743ZI 板。我正在使用 CubeMX HAL(我尝试了几个版本)和 TrueStudio。Windows 10 中出现“虚拟 COM 端口”(我尝试了默认的 Windows 驱动程序和 ST 驱动程序),但我无法打开端口。当我尝试打开它时,我的 C# 程序写给我“参数不正确”:

同样的消息写给我程序 Realterm,PuTTY 什么也不做,“Tera Term”程序工作正常——我可以向我的 MCU 程序发送和接收数据。

有人知道它是什么吗?

在我的 C# 程序和终端程序中,我使用相同的参数

USB 设备查看器信息:

0 投票
2 回答
505 浏览

c - Truestudio atollic(基于 Eclipse 的 IDE)创建空的二进制文件,尽管不是空的 elf 文件和大量代码

我正在尝试创建一个用于闪烁蓝牙板的二进制文件。不幸的是,编译时出错,因为某些原因我的二进制文件是空的。我有很多代码,它们是正确链接的。

关于我为什么会收到此错误的任何建议?

这是编译器的输出。如您所见,没有错误,只是一些警告,应该不危险:

这是主要代码:

0 投票
1 回答
123 浏览

stm32f4discovery - STM32F-Discovery和MAX31856之间的SPI通信问​​题

我试图使用 SPI 通信将我的 STM 发现板与 MAX31856 通信。根据数据表,我应该先发送地址字节,然后是数据字节。我目前能够写入寄存器,但是当我尝试读取写入寄存器的数据时,除非我只发送读取命令,否则我无法读取数据。

例如:

http://puu.sh/E2gJD.png 使用此代码,我可以读取默认寄存器值。

http://puu.sh/E2gLC.png 使用此代码,我可以将新值写入 CR0 和 CR1 寄存器。第一个 0x80 值是寄存器 CR0 的地址字节。下一个值是新的寄存器值 0x80 和 0x37。

http://puu.sh/E2gNK.png 我停止了之前的程序并将我的代码更改为这个程序。然后我开始调试。从这张图可以看出,CR0和CR1寄存器的值都变成了我们之前写的。

最后; http://puu.sh/E2gRw.png 当我尝试结合这两个操作,写入和读取时,我无法读取我写入寄存器的内容。需要一些帮助来解决这个问题。

我需要能够读取稍后写入 CR0 和 CR1 寄存器的命令。我怎样才能做到这一点?我希望你能理解我的问题并能够帮助我。谢谢。

0 投票
1 回答
87 浏览

stm32 - 尝试使用 STM32L452RE 微控制器从 MAX144 外部 ADC 获取数据但没有成功:(

我对使用 ADC 很陌生。我正在使用外部 ADC MAX144 使用 STM32L452RE 获取传感器数据。我将此 ADC 的两个通道用于两个传感器。ADC 不断发送数据,我想读取它。

ADC 的数据表在这里

我正在做的是:

  1. 创建了一个 2 字节的缓冲区
  2. 我将 DMA 用于 spi 和 uart
  3. 使用 HAL_SPI_Receive_DMA() 接收缓冲区中的数据
  4. 使用 HAL_UART_Transmit_DMA() 通过 usart 传输数据

我所做的代码如下:

在过去的两周里,我陷入了这个问题。任何这方面的指南都将受到高度赞赏。

问候。

0 投票
1 回答
160 浏览

stm32 - 如何使用STM32微控制器从外部ADC MAX144读取数据

上周我在使用 SPI 和 STM32L452 从外部 ADC MAX144 读取数据时遇到了问题。令人困惑的是如何在缓冲区中接收数据,因为 ADC 的数据表中没有提到内存地址或控制寄存器地址。数据表 ADC 如下所示。

https://datasheets.maximintegrated.com/en/ds/MAX144-MAX145.pdf

我尝试的是:

  1. 我做了一个2字节的缓冲区。(静态 unit_8 readBuffer[2])

  2. 然后使用 HAL SPI 的接收命令 ( HAL_SPI_Receive(&hspi3, readBuffer, 2, 5000)

  3. 并通过 USART 传输到 PC

令人困惑的是,我没有提供任何内存地址或控制寄存器地址来读取数据,因为 ADC 的数据表中没有提到寄存器,并且它不断发送数据。

请指导我有人对此有任何想法。我陷入了这个问题,但不明白。任何线索将不胜感激。

问候,