问题标签 [stm32f7]

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 回答
1385 浏览

gdb - 无法再调试我的 STM32 CubeIDE 项目 - 但代码在没有 j-link 的情况下工作

我不知何故陷入了无法以调试模式启动我在 CubeIDE 和 j-link 中的项目的状态。代码编译,flash 被写入,但是我没有在 main.c 的 main 函数的第一条指令上停止,而是陷入了项目的反汇编部分。

在标题栏中显示“未找到源”,在工作窗口中显示:

在没有可用调试信息或程序代码之外的地址“0x20011b88”处中断。

该地址的反汇编显示:

但 step into 弹出窗口:

执行 MI 命令失败:-exec-step 1 来自调试器后端的错误消息;找不到当前函数的边界

我必须在这里遗漏一些明显的东西,并会感谢任何指导。还有一些指针,在哪里学习,如何详细启动项目调试,将受到欢迎。

在此先感谢,R。

0 投票
1 回答
661 浏览

ethernet - STM32H743 中的 IEEE 1588 PTP 时钟源

我正在尝试获取PTP时间戳STM32H743 NucleoLwIP到目前为止,以太网驱动程序没有问题,除了PTP. IEEE 1588 timestamping我遵循了参考手册 ( ) 上的说明 ( 58.9.7 Programming Guidelines for ) RM0433,如下所示。

但是,系统时间秒数寄存器 ( ETH_MACSTSR) 不计数,只是将初始值加载到系统时间秒数更新寄存器 ( ETH_MACSTSUR) 中。在参考手册中没有关于时钟源的明确信息PTP。在中,时钟配置页面中有如下图所示STM32F7的时钟路径。PTPCubeMX

在此处输入图像描述

但是,如下图所示, PTPin没有时钟路径。STM32H7

在此处输入图像描述

我是否遗漏了一些关于从寄存器中获取系统时间的ETH_MACSTSR信息ETH_MACSTNR

0 投票
0 回答
458 浏览

eclipse - STM32 Eclipse (CubeIDE) 调试项目不在 main.c 中启动,而是在 UcHeap 汇编代码中启动

我有一个工作项目,但是从某个时候开始,当我在调试模式下启动它时,它不会在 main.c 中停止,而是在 main 之前的代码中的某一点停止...

调试器在 ucHeap() 0x20011b88 ... 报告跟踪/断点。

如果我单击 Run->Reset,项目会在 main.c 或 Reset_handler 中正确重置,如果我设置了额外的断点...

我已经检查并清除了所有断点,但这仍然会发生......

显然发生了一些事情,可能是在项目设置中。我在哪里可以了解更多关于项目究竟是如何开始的以及从哪里开始检查问题所在?

预先感谢,问候。

0 投票
2 回答
3015 浏览

stm32 - STM32F745 - HAL_FLASH_Program 未永久写入闪存

我正在使用 HAL_FLASH_Program() 将 uuid 编程到特定地址。我可以通过从同一地址读取来验证它是否成功写入。但是,如果我重新启动 MCU,该地址处的内存将恢复为原始值。如果我直接通过 ST-Link 写入它,那么它会永久保留。

有谁知道这是为什么?在使用 HAL_FLASH_Program() 写入之前,我是否需要擦除内存位置?我正在使用STM32F745。

我的代码很简单:

谢谢

0 投票
2 回答
886 浏览

stm32 - NVIC 系统重置失败

我正在使用带有 FreeRTOS 内核的 STM32f767zi。我有两个任务:

1-每100ms由来自中断的任务通知触发,并通过TCP接收一些数据。

2-另一个任务是处理来自用户的一些请求。

现在,如果 task-2 使用 API 请求系统重置NVIC_SystemReset,系统重置失败并且一切都挂起。当我运行调试器时,它似乎挂在vPortRaiseBASEPRI. 在反汇编中,那是几行,之后vTaskNotifyFromISR是我用于任务 1 的通知功能。

当我删除该任务通知并在中断中仅使用一个标志时,系统重置工作正常。但是,我认为这种方式会消耗处理器周期并且效率不高。

我试图禁用中断portDISABLE_INTERRUPT、任务vTaskSuspendAll或进入关键taskENTER_CRITICAL但没有任何工作。

我通过portDISABLE_INTERRUPT在一个独立的请求中请求(以便任何挂起的中断或“通知”可以完成),然后在另一个请求中发送系统重置来绕过方法。这个可行,但是,它不安全,因为用户可以(错误地)在禁用中断之前进行系统重置。

请注意,当我进行硬件重置(板上的按钮)时,它工作正常吗?!

那么,知道如何解决这个问题吗?如何在没有这个问题的情况下通过软件重置板?

0 投票
2 回答
2213 浏览

timer - 如何使用硬件定时器通过 DMA 触发一定数量的 ADC 转换?

我正在使用 HAL 与 STM32CubeIDE 一起研究 STM32F767(我没有时间完全学习裸机,我在业余时间做)。我将 TIM2 设置为 CH1 和 CH2 上的 PWM,周期为 200us,CH1 的占空比为 25%,大约为 25%。CH2 为 30%。我还将 ADC1 配置为 1.8 Msps。我想要的是,在 PWM CH2 的上升沿让 ADC 触发,DMA 读取 50 个样本(或我最终决定的任何缓冲区大小。现在是 50),然后让 ADC/DMA 等到下一个上升PWM CH2 的边沿触发 ADC/DMA 再进行 50 个采样。简单地说,我希望每次 PWM CH2 上升时都填充大小为 50 的 ADC 缓冲区。现在,我已经通过中断和轮询实现了这一点,但我想尽可能地将 CPU 排除在外。

问题:一旦 PWM CH2 的第一个上升沿在电路板复位后激活 ADC,它就会永远运行转换信号并且 DMA 更新缓冲区。我希望 PWM 不断触发 ADC 或 DMA,而不是仅仅触发 ADC 一次然后永远运行。

主要的:

设置和转换完成回调,我在其中切换 GPIO 以供参考:

完整性中断处理程序:

我已经设置了一个 GPIO 以在每次进行转换时进行切换。TIM2 CH1 为黄色,TIM2 CH2 为蓝色,adc Complete GPIO 切换为紫色。正如您在此处看到的,在 PWM CH2 的第一个上升沿上,由于 ADC 完成了其转换,GPIO 进行了切换。这是完美的,我希望这个重复每个上升沿。但是,在第二张图片中,它不会在完全相同的时间之后再次切换。它只是不断地运行 ADC 并在不考虑定时器的情况下进行切换。 在此处输入图像描述

在此处输入图像描述

我确信我已经完成了 90%,我需要做的就是在某个地方的寄存器中清除一点,为下一个定时器触发做好准备,但是参考手册根本不清楚,所以我已经反复试验。任何帮助或想法都会很棒。在 ADC_SR 或 ADC_CR1/CR2 寄存器中似乎没有对此功能进行任何控制。谢谢。

0 投票
0 回答
585 浏览

debugging - 使用 OpenOCD 调试 STM32F767 - 未知设备 ID 问题

尝试在 VSCode 中使用 OpenOCD 0.10.0 调试 STM32F767(NUCLEO-F767ZI 板)我收到以下错误:

这是否意味着 OpenOCD 根本不支持这个 MCU?
我该如何解决呢?
我在下面附加了 launch.json配置。

0 投票
1 回答
234 浏览

lcd - 如何从数据表中计算 RK043FN48H-CT672B 的 HSYNC 和 VSYNC?

我正在使用 STM32F746G Disco Board,想了解这些值是如何计算的。数据表 ( https://cache.nxp.com/docs/en/supporting-information/RK043FN02H-CT.pdf ) 和驱动程序文件 (rk043fn48h.h)中提到的 HSYNC、VSYNC、HBP、HFP、VBP、VFP 值) 在 ST 提供的示例中完全不同。谁能解释一下。

0 投票
3 回答
2819 浏览

memory - STM32 - 内存映射模式下的 QSPI Flash 只读问题

STM32F7中,代码从内部闪存运行(默认),我们可以从内部闪存读取/写入数据。

我的问题是:我想使用外部QSPI闪存来执行代码(内存映射模式)。同样在这种模式下,当代码在闪存中执行时,我想使用相同的QSPI闪存来存储我的数据(即保存一些设置)QSPI。但这是不可能的,因为 ST 在其参考文档 ( AN4760 ) 中声明:

QSPI在不退出内存映射模式的情况下,我的问题(将数据写入闪存)是否有任何解决方案?

是否可以将QSPI闪存分为两部分?一个用于内存映射模式,另一个用于读取/写入数据。

注意:我不想从外部闪存跳转到内部闪存写入数据,然后再次跳转到外部闪存执行代码。

任何帮助,将不胜感激。

谢谢。

0 投票
1 回答
952 浏览

timer - STM32 HAL_Delay TIMER 微控制器

HAL_Delay() 函数和空的 for 循环有什么区别?定时器应创建中断并关闭 LED。如果我在中断函数中使用 HAL_Delay() ,结果是 LED 永远关闭:

但如果我改用:

然后 LED1,它在主文件中始终打开,会在短时间内关闭然后打开,正如我所期望的那样。那么为什么带有 HAL_Delay 的代码不起作用呢?