问题标签 [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 投票
1 回答
4430 浏览

c - STM32 DMA传输错误FIFO和传输错误标志设置

我有一个 STM32F769I-EVAL 配置为根据 ST 的AN4666代码接收 8 位并行数据。我期望发生的是:来自我的输入设备的时钟触发输入捕获 DMA 并将数据写入 SDRAM,直到我的 OC 定时器中断禁用传输。那时我可以操作 SDRAM 中的数据并将其传输到其他地方。但是,在配置硬件并启用输入捕获后,我收到 DMA 传输错误。HAL_DMA_IRQHandler 函数中错误代码 (6) 的值表明 FIFO 和传输错误标志都已设置。根据我对数据表的理解(参见第 261 页),这应该是不可能的,我认为我在某处错误配置了一个设置,但我不知道如何继续。我可以采取哪些步骤来解决这个问题?

DMA配置:

主要代码:

0 投票
1 回答
115 浏览

c++ - FatFs - FIL 结构导致内存损坏 - STM32F7

STM32F7、GCC、FatFS

以下代码破坏了 retVal。(例如,向量是用一个对象创建的,但是当你检查它时,它的数量是荒谬的)

如果您注释掉“FIL 文件”,那么向量就可以了。但是,一旦您重新使用 FIL 结构,它就会破坏向量。

下一个奇怪的事情是,如果我要创建另一个向量,然后返回使用它作为函数返回对象。原始向量变得很好,但是新返回的向量被破坏了。

我对 c++ 很陌生,所以我需要一些关于如何诊断这个问题的指导。

提前致谢。

0 投票
1 回答
1440 浏览

openocd - STM32F476G Disco,OpenOCD读取版本失败

我想调试我的程序,我的调试器显示:

0 投票
1 回答
968 浏览

timer - 在 APB1 定时器触发的 STM32F7 DMA 上失败

我有 STM32F7 Disco 板和 STM32F723IEK MCU。尝试从定时器触发 DMA 请求会导致 DMA 错误,但仅适用于连接到 DMA1 的 APB1 组(TIM2 到 TIM7 等)的定时器。对连接到 DMA2 的 TIM1 和 TIM8 执行相同操作可以正常工作。错误表现为在相应的 DMA LISR 或 HISR 寄存器中设置了 TEIFx 标志,并且在第一次事务处理后立即禁用 DMA。NDTR 寄存器减一。

根据数据表,TEIF 错误可能由“总线错误”触发。我将其理解为例如尝试访问无法从 DMA 总线访问的外围设备。然而,同样的设置在使用 DMA2 和 TIM1/TIM8 时效果很好,无需更改 DMA 地址。所以问题似乎与 DMA 请求有关,而不是数据事务本身。鉴于为 DMA1 定义了许多定时器通道,这肯定可以工作。

我试图改变 DMA 设置,但这没有任何区别。测试程序的相关部分如下。完整版https://github.com/ak-hard/stm32-dma-tim/blob/master/main.c只是稍大一些,除了 CMSIS 和 STM32 设备头之外没有依赖项。

我想知道是否有人可以评论或重现此问题。

0 投票
2 回答
796 浏览

c - STM32F769I-DISCO 上的 1s 定时器

我正在尝试使用 STM32 HAL 库在 STM32F69I 发现板上设置 1 秒 LED 闪烁。我已经通过以下方式设置了我的计时器:

然后我用以下命令切换我的 LED:

MCU 时钟应为 216 mHz。我的逻辑是,如果我将预分频器设置为 216000,这将意味着我的计时器每秒将进行 216000000/216000 = 1000 增量。意思是,如果我将周期设置为 1000,我的 LED 应该每秒钟闪烁一次。但是,它们每 1.1-1.2 秒闪烁一次。

我对预分频器和周期的理解是完全错误的还是我错过了什么?

编辑: 216000-1 && 1000-1 没有任何明显的区别。老实说,我是一个完全的初学者,所以我通过看到它与普通的“挂钟”不同来确认这一点,因为我不知道如何调试它。没有其余的代码,这就是全部。我在 216mHz 上运行,因为它在 STM 网站上说 STM32F769I 的 MCU 在 216 上运行,所以我假设我的计时器也是。如果是这样的话,在任何地方都无法真正破译。我也没有在计时器结构中找到任何可以设置时钟频率的设置。

0 投票
0 回答
675 浏览

microcontroller - OpenOCD 和 stm32

我的系统:Windows 8,USB 3.0 端口。

我想在 ChibiStudio 中调试我的 stm32f7-disco。构建后,我尝试使用 OpenOCD 和 ST-Link 进行连接,但得到以下信息:

我认为 libusb 和 usb 3.0 存在问题。

0 投票
2 回答
2227 浏览

embedded - lwIP 调用远程服务器 API

这个问题将相当笼统,因为我什至还没有开始编码,只是想知道是否可以使用 lwIP 实现我想要的。

我想要的是让我的嵌入式 STM32F769I-Disco 板调用网站 URL API,例如http://test.com/items/1,它返回 JSON,然后我想对其进行解析。

由于 lwIP 实现了 TCP/IP 堆栈,理论上这应该是可能的,还是我弄错了?

我还没有真正找到任何可以做到这一点的例子,或者我什至不知道如何搜索它。有什么有用的指示吗?

问题也是,我是否应该使用套接字连接而不是尝试调用 API url?如果我决定使用 nanopb 之类的东西,我还需要 lwIP,还是可以不用它?

0 投票
0 回答
415 浏览

arm - ARM Cortex-M4/7:LDREX/STREX 之间的定期内存访问使独占监视器无效

我正在尝试重写一个代码部分,该部分当前可以在 STM32F7(单核,微控制器)上使用 LDREX/STREX 禁用/启用中断。

听起来像是一个简单的问题,但经过几天的研究,似乎在 ARM 文档和社区回复中都没有找到明确的答案:

LDREX/STREX 之间的常规内存访问是否会使独占监视器状态无效(因此总是使 STREX 失败)?

常识是它应该失效,但 ARM 文档仍然没有将常规内存访问作为使独占监视器失效的情况之一。

事实上,在大多数情况下,LDREX 和 STREX 之间的工作只能在寄存器中完成,所以这个问题不相关,但在我的情况下,这还不够,我需要访问内存。我基本上是在尝试做一个检测器“这些线路之间是否发生了中断?”

ST手册指出EGR是整个内存,但它仍然没有回答这个问题。

代码部分:

0 投票
1 回答
579 浏览

stm32 - STM32 目标停止时切换 PIN

我正在使用 STM32F7 系列微控制器,每当内核被连接到 JTAG 接口的调试器停止时,让一些 GPIO 更改值(切换、脉冲、高阻抗等)将是最有帮助的。有人知道这样的功能吗?

0 投票
1 回答
4860 浏览

c - STM32F7 定时器触发定时器

我用 CubeMX 生成了一些代码。我希望定时器 2 触发定时器 3。如果定时器 2 发生溢出,定时器 3 应该计数 1。我尝试了一些配置,但没有任何效果 - 当我设置输出触发器(定时器 2)时,定时器 3 没有中断

与(定时器 3)相同的值

我仍然没有中断计时器 3

这是两个定时器的完整配置代码: