问题标签 [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.
c - 如何检测USB何时断开?
我使用虚拟 com 端口在微控制器和计算机之间进行通信。
我有MK。stm32h743由自己的3.3V电源自供电。在立方体的帮助下,我提出了一个虚拟 com 端口。您如何理解 USB 已与设备断开连接?
当你连接Usb时,它调用“CDC_Init_FS”并且hUsbDeviceFS.dev_state设置为3,对应于“USBD_STATE_CONFIGURED”。
但是当您断开 USB 时,没有回调“HAL_PCD_DisconnectCallback (PCD_HandleTypeDef * hpcd);”
为什么“HAL_PCD_DisconnectCallback (PCD_HandleTypeDef * hpcd);” 禁用USB时不调用?
我无法跟踪 Vbus 电压。所以我这样做了:
你好。
我遇到了 USB 正常工作的问题 - 断开 USB 电缆并再次连接后,带有 CubeMX HAL 的 USB CDC(虚拟 Com 端口)。
对于测试,我使用 STM32CubeIDE 和 STM32CubeMX创建了一个类似于此处介绍的项目 - https://www.youtube.com/watch?v=AYICE0gU-Sg 。
程序上传到STM32后,将while(1)循环中的数据写入USB口。
数据被写出,在 Windows 7 (Tera Term) 中可见。
当我断开 USB 电缆(OTG FS 端口)并重新连接时,Windows 会发送消息“USB 设备无法识别”。
没有接收到数据。
为了传输数据和识别电缆,我必须在板上进行重置。
硬件:
单片机:STM32H743VIT
软件:STM32CubeIDE v1.2
固件包:STM32Cube_FW_H7_V1.7.0
如何使 USB 设备始终正常工作(断开电缆并重新连接后),以便被 Windows 识别并传输数据?
debugging - 我可以阻止 STMCubeIDE 在微控制器复位(调试)时打开启动 .s 文件吗?
当我调试 STM32CubeIDEstartup_stm32f722xx.s
在微控制器重置时打开文件时(当我开始调试或重置微控制器时。
看起来调试器有一些“隐藏”断点,它会命中它们,然后继续,但文件仍然打开。
它现在对我没有用。我能做些什么呢?
我正在使用 STM32CubeIDE 1.6.1 和 STM Nucleo-F722ZE(板载 STLink 3v)。
debugging - STM32F103 works on Arduino IDE but not on STM32CubeIDE
I just bought a STM32F103 "Blue pill" and a ST-Link V2 clone to program it. I'm having a weird issue, I can program and flash the microcontroller using Arduino IDE, and it works just fine, at least blinking LEDs and stuff, but when I try to flash it with STM32CubeIDE provided by ST, it doesn't work. It seems to know there's a microcontroller connected to the ST-Link, and when I try to flash it, if I was running the blinking code on the board, it stops, it doesn't blink anymore, like the STM32CubeIDE erases the previous program, but doesn't load the new one. This is what I tried:
- I made sure I wasn't using the pins the ST-Link uses to program and debug, and that the project had "Serial debug" configured to those pins
- I tried making the onboard LED blink and to even just turn on an output using HAL_GPIO_WritePin() and nothing
- I've read that some board have clone microcontrollers (even if mine does have the ST logo) and only work with OpenOCD debugger so I tried that too, modifying "stm32f1x.cfg" so it ignored the devices ID
- I've also read that changing the reset to "Software system reset" works so I tried it with OpenOCD and GDB Server, no luck
- I tried reinstalling the IDE
I really don't know what's going on, taking into account that with Arduino IDE it worked first try, not even an error or warning message.
This is the Consolre report when I try to use GDB Server:
And this is the output of OpenOCD
EDIT to add more information: I tried debugging the code with the debug option. First time, I saw the microcontroller was "running" the code but was always getting stuck on the Error Handler code generated by the IDE, which is simply a loop. After more debugging, I found that for some reason it jumps to that subrutine if I use the external crystal of the board for the RTC, so I just changed it to use the internal RC, since I'm not using it for the moment. However,now the code "runs", jumping from breakpoint to breakpoint, but it doesn't actually run on the microcontroller. To explain it better, here's the main loop:
I have a breakpoin on each write calls, and if click on run, it shows that the code jumps from write to write in an infinite loop. So, in theory, it should be working, but in the microcontroller the status of the output pin doesn't change. It stays always ON, doesn't matter how many times I let the code run. It's like the debugger is emulating the microcontroller instead of running the code on the actual hardware.
I tried using Arduino IDE, and I can even make an OLED screen work with the STM board, so I'm still confused with the official IDE not working.
c - 通过编写一些代码从 HC-05 数据模式传递到 HC-05 AT 命令模式
我的主要问题是降低HC-05蓝牙模块的功耗。众所周知,这种模块在 AT 命令模式(1.5 到 3 mA 电流之间)时消耗的能量越来越低。由于我的项目需要发送每 15 秒更改一次的实时数据,因此我希望在 HC-05 没有收到任何数据的 15 秒内保持模块处于 AT 命令模式。我显然相信这种想法/解决方案将大大节省模块的能量。换句话说,模块不会永久保持在数据模式,而是在15秒内设置为数据模式,在15秒内设置为AT命令模式,然后返回数据模式,仍然是15秒等...... 我想知道有什么解决办法吗?例如写一堆C代码(因为我的Hc-05直接连接到STM32板)每15秒通过AT命令模式提前谢谢。
macos - “没有连接ST-LINK!” Nucleo-F413ZH 的问题
我正在尝试使用 STM32CubeIDE 将基本的 LED 闪烁程序闪烁到我的 Nucleo F413ZH 板上,但每当我尝试调试时,它都会显示:-
“未连接 ST-LINK!请连接 ST-LINK 并重新启动调试会话。”
板上的 PWR 和 COM LED 闪烁,这意味着我连接到板上的 USB 正在供电,我无法上传任何代码。
我尝试使用 ST-LINK 升级固件(https://www.st.com/en/development-tools/stsw-link007.html)安装新驱动程序,因为这是网上一些人建议的,但程序赢了下载后不响应,这似乎是未注册连接的附带问题。
我不确定这是驱动程序的问题还是我的硬件坏了。我正在使用 macOS Big Sur。
dma - STM32F407ZET6,DMA的多个流是否可以并行运行?
嗨,我正在使用 STM32F407ZET6 微控制器,我想使用 DMA1 的多个流。是否可以同时触发同一 DMA 的两个不同流将数据传输到两个不同的外围设备。(如并行)。
在高级 AHB 总线矩阵中,我观察到每个 DMA 只有两条线,一条用于内存,一条用于外围设备,这向我表明,在任何时候最多两个流可以并行运行,并且如果没有流确实在进行内存<->外围传输。这个假设正确吗?而且,通过单个 DMA 并行运行两个流,它们不应该进行内存<->外设传输,这也是正确的吗?我的意思是,从 AHB 矩阵的外观来看,如果只完成 Mem 到 Mem 和 Periph 到 Periph 的传输,那么可能两个流可以并行运行,但如果其中任何一个流执行memory<->peripheral传输然后使用 DMA 内存和外设接口进行单次传输可能会使这成为不可能。你能对此有所了解吗?
我想就这个特定主题请求一些指导,因为我找不到令人满意的信息......如果它依赖于总线带宽来并行传输流,那么带宽如何在单个总线的多个通道之间分配执行多次转移....一些如果有任何这样的例子,我将不胜感激。作为参考,我将 AHB 矩阵放在下面:
eclipse - 如何在同一个 IDE 中对两个 STM 微控制器进行编程
对于 SPI 传输,我需要调试两个 STM 微控制器。我现在只能调试一个微控制器。STM32CubeIDE可以同时调试两个微控制器吗?
build - STM32CubeIDE 终止前的无头构建延迟
我在自动构建管道中使用 STM32CubeIDE 无头构建。构建命令本身采用以下形式:
这很好用,但我注意到构建本身需要大约 15 秒,但之后命令需要 1 到 2 分钟才能退出。这很烦人,因为它使构建过程花费的时间比必要的长得多。
我尝试直接从命令行运行命令,并在两台不同的计算机上计算运行时间。结果是这样的:
大约 20 秒后会打印“构建完成”消息,此时已生成输出二进制文件,但该命令仅挂起几分钟。不显示错误消息。
stm32 - __io_putchar() 和 __io_getchar() 在哪个文件中定义?
我注意到syscalls.c
STM32F407-DISC 项目(通过 STM32CubeIDE 制作)的文件具有__io_putchar()
和__io_getchar()
作为外部。
但我无法在项目中找到实际定义这些函数的任何文件。
这是syscalls.c
文件中的内容:
有谁知道这些外部人员从哪个文件中提取?
提前致谢!
iar - STM32CubeIDE - __packed 之前的预期说明符限定符列表
我正在将用 IAR 编写的代码移植到 STCube。
在 IAR 中工作的相同代码在 STCube 上具有以下错误:
错误:__packed 之前的预期说明符限定符列表
有谁知道编译器中缺少哪个参数?