问题标签 [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.
eclipse-cdt - STM32CubeIDE 上的空目标选择窗口
STM32CubeIDE 在 Fedora 32 上运行。为了在目标板上启动代码,我打开了 STM32Project -> Target selection。
但是窗口(目标选择)是空的,没有机会选择任何板。任何解决此问题的建议表示赞赏。
eclipse - 如何修复STM32CubeIDE中带有删除线的功能?
我正在使用 STM32CubeIDE 为 STM32F411RE Nucleo 板编写应用程序。该代码涉及使用计时器。当我尝试构建我的项目时,我收到了许多调用的计时器函数的“未定义引用”错误。
环顾四周后,我注意到与错误相关的计时器函数(例如:HAL_TIM_Base_Init())位于 stm32f4xx_hal_tim.c 中,并以删除线显示为灰色。我认为这是我看到的未定义参考错误的原因。
根据我的谷歌搜索,我的理解是删除线意味着该功能已被弃用。但是,我无法弄清楚如何解决这个问题。我确实遇到了另一个与我的问题有点相关的问题:什么会导致我的源文件变灰并带有删除线的文件图标?. 但是,它的解决方案与源文件有关,而不是与源文件中的函数有关。
我看到的截图:
我是 STM32 和 STM32CubeIDE 世界的新手,因此非常感谢任何帮助/解释。谢谢
type-conversion - 调试器中的表达式显示正确的计算值,但分配给变量时值被四舍五入
我通过 I2C 和 STM32 逐字节读取 16 位二进制补码传感器数据,因此我必须将高字节和低字节粘在一起并将这个数字转换为浮点数以获得实际值。
我在 C 中的表达是
当我使用 STM32CubeIDE 的调试器检查计算时,表达式显示数据的正确转换(见截图)。但是分配给 temp 变量的值始终是 25!在我看来,表达式的第一项总是被假定为 0 还是什么?我已经尝试将括号中的术语直接转换为浮动,但这并没有改变任何东西。
谁能指出我的问题?为什么调试器显示正确的值,但代码分配了错误的值?
以下屏幕截图中的表达式是通过在调试模式下将鼠标悬停在上述代码行的相应部分上来捕获的。
图 4:临时结果(始终为 25,即使上面的表达式显示了预期值)
temp目前只是一个 volatile,因为我还没有使用那个值,编译器会优化它。
hal - __weak HAL_GPIO_EXT1_Callback (uint16_t GPIO_Pin) 即使我在源代码中定义了 HAL_GPIO_EXT1_Callback (uint16_t GPIO_Pin)
我正在使用带有 Blue Pill 板的 STM32 CubeIDE 工作。
为了控制 main.c 的大小,我将函数组收集到了几个 c/h 对文件中。其中一对是“myirqcallbacks.c/h”。目前我在这个 c/h 对中有两个 UART IRQ 和一个外部引脚 IRQ 回调。
UART 工作正常,但 EXT IRQ 无法调用我的代码。它改为在 stm32f1xx_hal_gpio.c 中运行 __weak 副本。
当代码在 main.c 中时,它运行正常。
似乎编译器看不到我的 EXT IRQ 回调函数,因此未能弃用回调的 __weak 副本。但是,它可以在那里看到两个 UART 回调函数。GPIO 和 UART IRQ 的结构有什么不同吗?
myirqcallbacks.h
myirqcallbacks.c
我认为这更多的是关于我的片状 c 文件结构知识,但我已经研究了几天,任何指针都将非常感激。
stm32 - lwip组件的SNTP app如何设置接收时间?
我正在尝试使用 LWIP 和使用 STM32Cube 的 Nucleo-F429ZI 开发板上的 SNTP 应用程序读取时间,LWIP 的文档列出了初始化方法等,但没有提供您实际读取时间的方式。我猜有些东西在后台的线程上运行,但是没有阅读和理解 LWIP 堆栈,这超出了我的范围。
关于如何简单地读取时间的任何指示?然后我可以简单地将它存储到 RTC 中,每天一次。
stm32 - LPS25HB 传感器与 NUCLEO-F401RE
我正在使用 STM32CUBE IDE,并且一直在努力从 X-Nucleo-IKS01A1 板上读取数据,该板包含例如 LPS25HB 温度和压力传感器。
根据数据表,我定义了地址和寄存器:
然后我想通过 I2c 读取数据并将原始数据转换为摄氏度:
但无论如何(更改传感器地址,加热传感器等)我得到的输出等于 8306 C - 而且我没有移动到太阳,
我是这个领域的新手,我不确定在采集之前是否必须向传感器发送一些数据?我正在阅读一些类似的主题,例如与 HTS221 相关的主题,但没有找到此类信息。
c - 当我尝试连接到服务器时,LWIP 中的路由错误
我尝试使用 LWIP 连接到远程主机,但是当我尝试连接时失败并出现路由错误。
我使用 netconn、tcp 甚至 udp 尝试了一些不同的设置,但是当我尝试连接时所有设置都失败了。所以我认为在调用connect之前我在设置中遗漏了一些相当重要的东西,但我不知道出了什么问题。
我使用的是 STM32CubeIDE 和 LWIP 已添加为中间件,我使用的卡是 ST nucleo F746ZG
该卡直接连接到我的计算机,我可以在计算机的网络设置中看到它已连接。所以某种形式的谈判正在发生。
c - STM32 F407VG 启动到不同的(主)应用程序
对于我刚开始工作的项目,我需要用 C 语言编写一个固件,让我可以启动到两个不同的固件版本。任务是能够使用带有 Intel .hex 文件的 RS485 端口在现场更新包含 STM 的设备。我的想法是将两个固件版本放在闪存中指定的起始地址,包括某种校验和以确保数据完整性。根据参考手册中的闪存模块组织,我的第一个想法是将一个版本放入扇区 10(从 0x080C0000 开始),将另一个版本放入扇区 11(从 0x080E0000 开始)。每次复位后,STM32 应该启动到“bootmanager”,这只是决定扇区 10 或扇区 11 中的固件是较新版本的最少代码。我想在下图中阐明我的想法:
每个扇区的 128kBytes 就足够了。到目前为止,我能够将单字节写入闪存并在之后读取它们。另外,我已经使用 RS485 建立了一个工作的 UART 通信。
我的问题
- 我可以直接将 .hex 文件写入 Flash 中,无需修改,例如
ETC?
由于我对跳转不熟悉:我应该如何执行从“bootmanager”到扇区 5 固件的跳转?地址是否自动相对于扇区 5 的入口点?
你能给我关键词或告诉我,我会遇到什么挑战吗?
*编辑:我知道 STM 本身包含一个引导加载程序。不幸的是,RS485 设备硬连线到 USART2 使用的 GPIO 引脚。根据参考手册,内部bootloader只能被USART1和USART3、CAN2和USB OTG FS使用