问题标签 [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 回答
52 浏览

c++ - stm32f769板子支持c标准库吗?

我目前正在尝试熟悉 stm32f769 板。我注意到当我使用 malloc 时出现构建错误。

我对微控制器开发不是很熟悉,所以不确定这个错误是否是因为 stdlib 不存在或其他原因。

这些是我正在使用的编译器标志:

0 投票
1 回答
280 浏览

c - 对 BSP_LCD_Init 的调用永远不会返回。卡在 HAL_DSI_shortwrite

我一直在尝试了解带有 cortex m7 的 stm32f69 微控制器板上的工作原理。我在显示器上找到了一个写 hello world 的教程,但我可以让它在我的板上工作。这是我正在使用的代码

当我检查时,我一直在暂停执行,我注意到有一个函数专门停止执行,称为 HAL_DSI_ShortWrite()。在此函数中,它陷入以下循环

它在 st board 制造商提供的库中提供。在调用 BSP_LCD_Init 之前我应该​​做些什么吗?

这是堆栈的示例 堆栈跟踪示例

0 投票
3 回答
2314 浏览

stm32 - 指定超时后有意接收完整的 UART DMA 中断

我已将 UART 配置为以 DMA 模式接收,其中缓冲区的大小约为 64 字节。因此,基本上,HAL_UART_RxCpltCallback() DMA 接收完成中断只会在接收到 64 个字符时触发。

STM32中是否有一种方法可以通过它为DMA Rx配置超时,当缓冲区仅部分填充(即接收到少于64个字符)并且我们在指定的超时时间内不再接收到字符时,DMA将然后引发相同的基于 HAL_UART_RxCpltCallback() 的中断,让消费者使用当前在 UART 上接收到的任何部分数据?

0 投票
1 回答
792 浏览

usb - 通过USB连接STM32F7和SIM7600

有没有人尝试通过 USB HS 将 sim7600 LTE 模块与 STM32f7 连接?

Simcomm 开发了适用于 Windows/Linux/Android 的 USB 驱动程序,但不适用于 STM32 等普通微控制器。

STM32F7 具有 USB HS Host 能力。

问候,

0 投票
3 回答
967 浏览

c++ - STM32F767ZI 外部中断处理

我正在尝试为 AD7768-4 ADC 创建一个合适的 SPI 从接口。ADC 有一个 SPI 接口,但它不通过 SPI 输出转换。取而代之的是,数据输出在各个 GPIO 引脚上同步输出。所以我基本上需要bit-bang数据,并输出到SPI以获得正确的从属SPI接口。请不要问我为什么要这样做,它是分配给我的。

我遇到的问题是中断。我使用的是 STM32F767ZI 处理器——它以 216 MHz 运行,我的 ADC 数据必须以 20MHz 时钟输出。我已经设置了我的 NMI,但我没有看到系统调用或指向中断处理程序的位置。

我使用 STMCubeMX 软件分配引脚并生成设置代码,并在stm32F7xx.c文件中显示了该NMI_Handler()功能,但我在系统文件的任何地方都没有看到指向它的指针。我还在 中找到了 voidHAL_GPIO_EXTI_IRQHandler()函数STM32F7xx_hal_gpio.c,它似乎检查引脚是否已被断言,并清除任何未决位,但它没有重置中断标志,也没有检查它,我再次看到没有指向该函数的指针。

为了使事情更复杂,我有 10 个时钟周期来确定设置了哪个标志(一次两个标志中的一个),重置它,增加一个变量,并从 GPIO 寄存器移动数据。我相信这是可能的,但同样,一旦中断被触发,我就不确定系统在做什么。

有没有人有在这个处理器上处理外部中断的经验,可以阐明这个特定系统如何处理事情?再一次 - 10 个时钟周期来做我需要做的事情......移动数据应该只需要我 1-2 个时钟周期,让我 8 来处理中断......

编辑:

我们将 DCLK 速度更改为 5.12 MHz(20.48 MHz MCLK/4),因为在 2.56 MHz 时,我们正好有 12.5 微秒的时间来输出数据并为下一个 DRDY 脉冲进行设置,而 80 kHz 的速度正好为我们提供了零余量。在 5.12 MHz 时,我有 41 个时钟周期来运行中断例程,如果我跳过检查第二个标志而只处理传入数据,我可以稍微减少它。但我觉得我至少必须使用 DRDY 标志检查,并使用例程启用第二个中断,否则我将不断中断,因为 ADC 上的 DCLK 一直在运行。这让我有 6.12 微秒的时间来读取数据,并在下一个 DRDY 脉冲之前有 6.25 微秒的时间将其洗牌。我应该能够在 32 MHz SPI 时钟(从属)下做到这一点,但很可能会在 50 MHz 下做到这一点。这是我当前的中断代码:

我仍然担心时钟周期,如果我假设唯一会触发的其他 EXTI 标志是时钟引脚,我相信我可以只检查 DRDY 标志。虽然我质疑如果 SYS_TICK 在后台运行这将如何工作......我必须找出答案。

我们正在研究一种更快的处理器来处理位碰撞,但现在,如果 PI3 运行 Linux,它看起来将无法处理它,而且我不知道有太多更快的处理器运行非常小的可靠 RTOS,或者可以在紧要关头进行裸机编程......

0 投票
1 回答
1989 浏览

microcontroller - How to the same DMA Stream with different DMA channel on the Cortex-M7(STM32F746)?

I want to use SPI2 and UART4 peripherals with DMA but, as I see DMA1-SPI2-Tx and DMA1-UART4-Tx uses the same dma stream.

Is there any way to use the same DMA stream for the different peripherals at the same time? enter image description here

0 投票
2 回答
266 浏览

stm32f7 - Mbedtls 熵生成永远运行

我正在尝试为 mbedtls 编写一个测试函数,它随机生成一个用于 AES 加密的密钥。我使用 mbedtls 的原始教程代码。执行“mbedtls_ctr_drbg_seed()”时,我的程序总是停止。

关于我的环境:STM_CUBEmx 的基本源文件,板:ST32F767 Nucleo,基于 STM_Cube 的 Makefile 编译

先感谢您

0 投票
0 回答
733 浏览

sockets - 无法通过 LwIP 在 STM32F746 UDP 套接字上接收数据

我一直在尝试让 LwIP 堆栈在我的 STM32F746 Discovery 板上工作,但在接收数据方面到目前为止还没有运气。发送工作正常,但由于某种原因,我无法接收任何数据包。Wireshark 确认数据包已发送,但董事会似乎忽略了它们。我的假设是 stm32f7xx_hal_conf.h 中的一些配置做错了,但是我在这方面的经验非常有限,所以我一直无法弄清楚。

这是我初始化套接字的方法:

打印倒数第二行,然后线程无限期地阻塞等待数据包。正如我所说,如果我发送数据而不是接收数据,那么一切正常。我也尝试了回调的方法来监听,但无济于事。

我直接从 ST 的 LwIP 示例应用程序中获取了网络初始化程序和配置文件。

这是我的 stm32f7xx_hal_conf.h,我感觉这里可能有一些错误配置,因为如果我弄乱了其中一些值,通过套接字发送也会停止工作。

非常感谢您的帮助,我已经坚持了好几天了!

0 投票
0 回答
469 浏览

c - 从 uint64_t 转换为 double

对于包含双浮点指令的 STM32F7,我想uint64_tdouble.

为了测试这一点,我使用了以下代码:

默认情况下(如果DO_NOT_USE_UL2D未定义)编译器(gcc 或 clang)正在调用函数:__aeabi_ul2d()这在执行指令的数量上有点复杂。在此处查看汇编代码:https ://github.com/gcc-mirror/gcc/blob/master/libgcc/config/arm/ieee754-df.S#L537

对于我的特定示例,它需要 20 条指令而无需进入大多数分支

如果 DO_NOT_USE_UL2D定义了,编译器会生成以下汇编代码:

代码比较简单,只有10条指令。

所以这里的问题(如果DO_NOT_USE_UL2D已定义):

  • 我的代码(在 C 中)是否正确?
  • 我的代码比__aeabi_ul2d()函数慢吗(不是很重要,但有点好奇)?

我必须这样做,因为我不允许使用 libgcc 中的函数(有很好的理由......)

请注意,这个问题的主要目的不是关于性能,我真的很好奇 libgcc 中的实现,我真的很想知道我的代码是否有问题。

0 投票
0 回答
374 浏览

c - 相同的库文件适用于 stm32f7 但不适用于 stm32f4

在使用飞行时间传感器VL53L0x - 200 cmVL6180x - 60 cm. 我有两个板,STM32F446 NucleoSTM32F767 Nucleo。我已经为两个飞行时间传感器编写了库 STM32F767 Nucleo。但是,当我试图在它上面实现相同的库时,STM32F446 Nucleo它不起作用。

在寻找解决方案时,我发现 I2C 存在问题。在 F7 中一切正常,它返回 HAL_OK。但在 F4 中它返回“HAL_ERROR”。 的意思是这个功能。

库文件的 Pastebin 链接

https://pastebin.com/z15btwTD - vl6180.c

https://pastebin.com/62XYxUVx - vl6180.h

当然,在我使用 for 时vl6180.h已更改#include "stm32f7xx.h"为。我在两个板上都使用了 I2C1。但我也尝试过其他 I2C,但它们都遇到了同样的问题。Hal 库是使用 CubeMx 生成的,而 Attolic True Studio 是 IDE。#include "stm32f4xx.h"STM32F446 Nucleo

同样的事情正在发生VL53L0X Sensor

任何建议将不胜感激。

编辑

从函数的这个特定部分HAL_I2C_Master_Transmit()返回HAL_ERROR

问候。