问题标签 [stm32cubeide]
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.
reference - 在 STM32CubeIDE(基于 Eclipse 的 IDE)中添加新的源文件和头文件不能无缝工作
我希望有人可以帮助我解决这个问题,因为我真的不知道我在这里做错了什么。我想了解如何将 FreeRTOS 与一些 STM32F103RCTx (Cortex-M3) 设备一起使用。使用 STM32CubeIDE 软件(基于 Eclipse 的 IDE)进行编码。一些简单的任务创建和用于调试的 ITM Traces 没有问题并且可以无缝地工作。在这一点上,我了解到拥有像 SEGGER SystemView 或 Tracealyzer (percepio) 这样的分析工具来全面分析 FreeRTOS 的系统行为非常重要。我首先尝试了SEGGER SystemView的免费版本,并根据SEGGER手册实现了所有的源文件和头文件。我在路径环境中包含了新文件夹(C/C++ Build->Settings->Tool Settings->Include paths)。我还检查了编译时是否在我的 objects.list 中创建了适当的对象,就是这样。无论如何,我仍然会收到某些函数的“未定义引用”错误,尽管我可以轻松地跳转到 IDE 中的声明。我在 STM32 论坛和 SEGGERs 论坛上提出了几个关于这个问题的问题。至今没有回应。
两天没有解决问题,我认为工具 Tracealyzer 可能是一种可能性。所以我今天开始了评估。我再次在我的源文件文件夹和头文件文件夹中实现了所有必要的文件,以避免创建可能无法识别为包含或未正确索引的新文件夹。再次编译没有成功,我不明白为什么......
请在编译程序时找到我的控制台输出:
也许有人也知道 SEGGER SystemView 实现发生了什么。我附上控制台输出的屏幕截图: 未定义的参考错误
希望有人可以帮助我。谢谢!
本杰明
c - STM32CubeIDE 在地址“xxx”处中断,没有可用的调试信息,或在程序代码之外
我正忙着用 STM32F030C8 单片机开发一些新硬件。我正在使用带有 gcc 的 STM32CubeIDE。我对微控制器开发非常陌生,这是我使用 ST 及其工具的第一个项目。
这是一个非常基本的程序,只触发一个 GPIO。其余的都是生成的代码。由于我在这个领域的经验很少,我希望有人可以指出我可以查看的位置。我怀疑这可能是配置问题。
这是代码(我删除了所有生成的注释以使其更紧凑):
当我单步执行代码时,一旦我单步执行“我的代码 2”,它将触发“我的代码 1”上的 GPIO,这将导致问题。我什至尝试过只运行一个完全生成的程序而不做任何修改,但问题仍然存在。这是一个快速测试,以查看程序是否确实在 mcu 上运行。它确实如此,并且触发了 GPIO。
调试器控制台输出:
临时断点是程序开始的地方,然后我可以从那里运行。或者单步执行,结果都是一样的。
控制台输出:
完全错误:
这是两张可能有帮助的图片。正如我提到的,我对此很陌生。所以任何其他需要的信息请询问。提前致谢。
stm32 - STM32 F334R8 I2C GPIO问题 - 不工作
我有一个 Nucleo-F334R8 并且正在使用 STM32Cube IDE 版本:1.3.0 构建:5720_20200220_1053 (UTC)。UART2 已经可以正常工作并正确打印内容,现在我想通过 I2C 控制显示器,但 Nucleo 似乎无法为 I2C 接口初始化 GPIO。
我配置了 IOC 文件以启用 I2C 和 UART2 接口。我没有更改 I2C 接口的属性,只是启用了它。它编译成功,但是当我尝试让它运行时,它在调试控制台中说它不再响应。我对其进行了调试以查看它停止工作的位置。它在其中初始化 I2C 接口(PA14、PA15)的 GPIO。
在这个方法中它停在这里:
我不知道该怎么做,让它工作。有谁知道怎么做?
我注意到一件奇怪的事情:当程序不再响应并且我尝试再次调试它时,它在设备上找不到目标。即使我再次禁用 I2C,它也无法在设备上找到目标。所以我创建了一个新项目,我只启用了 UART2,并让它调试。这次它调试成功,没有错误消息。然后我尝试再次上传另一个项目,其中我禁用了 I2C,这次它运行成功。当我尝试让它在启用 I2C 的情况下运行时,它仍然不起作用并且不再响应。
stm32 - STM32:STLink 不再通过 SWD 连接
第一次闪烁很好,随后的闪烁失败
初始化 ST-LINK 设备时出错。原因:在目标上找不到设备。
在 STM32H745 NUCLEO 板上,我错误地启用了 DEBUG 接口和 SWO 引脚。有没有办法硬重置这个板?
stm32 - 在 STM32CubeIDE 中更改自定义 HID 的属性/生成代码的正确方法是什么
我正在尝试使用STM32F103C8创建自定义 HID 设备,我选择的 IDE 是 STM32CubeIDE,我关注的 教程位于 ST youtube 官方频道。
ST提供了很棒的工具“设备配置工具”,我可以在其中配置微控制器,并且会生成很多基于我的配置的代码。该生成的代码具有“用户代码部分”,用户可以在其中创建他的逻辑,如果他需要重新配置微控制器,“设备配置工具”将不会删除该部分代码。
问题:要配置自定义 USB HID,我需要在没有用户代码的地方更改由“设备配置工具”生成的代码,如果我再次运行“设备配置工具”,这些更改将被删除。我只能在“设备配置工具”中设置的字段是:
但这还不够,我还需要更改 CUSTOM_HID_EPIN_SIZE 和 CUSTOM_HID_EPOUT_SIZE 定义表示设备和主机一次相互发送的字节数,如果我更改“数据包”的大小,我将需要更改默认生成的回调接收该数据并使用它的函数,例如该工具生成如下代码:
但我需要指向“Report_buf”的指针,而不是它的副本,以便s first 2 elements, and the default generated code pass only copy of 2 first bytes, and i can
在“设备配置工具”中更改它。
我目前的解决方案:实际上我解决了这个问题,但我认为我没有以正确的方式解决它并且它有效。我已经更改了此处的模板文件“STM32CubeIDE_1.3.0\STM32CubeIDE\plugins\com.st.stm32cube.common.mx_5.6.0.202002181639\db\templates”并且还更改了“STM32CubeIDE_1.3.0\en.stm32cubef1. zip_expanded\STM32Cube_FW_F1_V1.8.0\Middlewares\ST\STM32_USB_Device_Library\Class\HID"
我认为这不是正确的做法,有人知道做这件事的正确方法吗?
我在这里的 ST 论坛上也发现了同样的问题,但没有解决。
debugging - 如何在使用 Segger J-link pro 和 Stm32cubeIDE 进行调试期间暂停看门狗计数器
我正在尝试使用 Segger J-link 调试我的应用程序,因为 Nucleo 开发板附带的 ST-Link 调试器只允许 5 个断点。
我找不到在调试会话期间停止看门狗的方法。我在哪里可以找到这样的设置?
如果我使用 ST-link 进行调试,则此选项在以下窗口中可用:
但是,当我选择 J-Link 时,该选项不再存在:
我在 SO 上找到了有关添加特定指令的内容(在调试期间禁用 STM32 IWDG),但我正在寻找不需要添加代码的内容。
c - STM32F107 通过代码 HAL 进行读出保护
我想启用正常的读出保护,目前我在 ST Link Utility 中执行此操作,但更好的是在代码中。我找到了一些旧的代码片段,它们适用于旧的 Std Lib,而不是 HAL:
是否有人拥有适用于 HAL Lib 的正确代码?
谢谢!
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 服务器已退出。哦,是的,我已经查看了设备管理器,对我来说一切都很好。
非常感谢您的帮助!
gdb - 无法再调试我的 STM32 CubeIDE 项目 - 但代码在没有 j-link 的情况下工作
我不知何故陷入了无法以调试模式启动我在 CubeIDE 和 j-link 中的项目的状态。代码编译,flash 被写入,但是我没有在 main.c 的 main 函数的第一条指令上停止,而是陷入了项目的反汇编部分。
在标题栏中显示“未找到源”,在工作窗口中显示:
在没有可用调试信息或程序代码之外的地址“0x20011b88”处中断。
该地址的反汇编显示:
但 step into 弹出窗口:
执行 MI 命令失败:-exec-step 1 来自调试器后端的错误消息;找不到当前函数的边界
我必须在这里遗漏一些明显的东西,并会感谢任何指导。还有一些指针,在哪里学习,如何详细启动项目调试,将受到欢迎。
在此先感谢,R。
stm32 - 按下按钮时从 STM32 ADC 获取读数
使用 CubeIDE 和 STM32F4 板我正在尝试启动 ADC 转换并根据 ADC 值使两个 LED 中的一个闪烁 - 如果该值小于某个限制,则一个 LED 应该闪烁而另一个保持关闭,但是如果 ADC 值大于我设置的限制,那么另一个 LED 应该闪烁。当我按下按钮时应该会发生这种情况,并且应该继续闪烁直到按下按钮。
所以我有 4 个引脚 - 两个(G2 和 D8)GPIO 输出用于闪烁 LED,一个(A0)引脚是模拟输入,一个引脚(F2)GPIO 输入用于按钮。它设置为上拉,并通过按钮连接到 GND。
相关代码是
我没有在 while(1) 循环中添加任何内容。
编译时,我没有收到错误或警告,当我运行代码时,F2 引脚设置为高电平(当我用测试仪测量时为 3V,按下按钮时变为零)但 LED 没有反应完全没有,尽管电压施加到 A0。我怀疑我以错误的方式使用 ADC。我希望 ADC 在连接到按钮的引脚变低时保持空闲并读取并转换一个值。
当我将与 GPIO 相关的行放入 while(1) 循环时,它也不起作用。这可能是某个地方的一个简单错误,但谁能告诉我它在哪里?
我从自动生成的代码中找到了这样的行
但是当我将它们评论出来时,它并没有帮助。我还添加了ADC设置,也许问题出在: