问题标签 [stm32f4discovery]
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.
stm32 - stm32 DMA 无法发送数据到 SPI1 DR (Cannot use DMA to send data to SPI)
我正在尝试使用 DMA 将数据发送到 SPI1。然后 SPI1 将控制 DAC 进行电压更新。
使用的芯片是STM32F407。因此对应的channel/stream为:channel3/stream5,如参考手册所示。但是,当 DMA 使能时,SPI1->DR 中没有数据显示,示波器中也没有显示结果。
当 SPI1->DR 由软件写入时,SPI 工作正常。谁能帮忙看看发生了什么?代码如下:
这是 SPI1 的初始化方式
我尝试使用这些命令来启动 DMA:
如果它可能有帮助,这里是 DMA2 的寄存器值,流 5
arm - ARM CM3 STM32F207 SRAM (RAM) 空间随 SRAM2 增加?BKPSRAM?
增加STM32F207上的SRAM空间
你好,
我使用 STM32F207ZFT,但 SRAM1 中没有足够的 RAM 空间供我的应用使用:
问题 1:如果我不将 SRAM2 区域用于 DMA(SRAM2 / 16KB:0x2001 C000 - 0x2001 FFFF),我可以将此内存区域用于普通 RAM 用途(用于扩展 BSS 区域)以便与SRAM1(增加未初始化变量的整体 RAM 大小,初始化为 0)?
问题2:我可以使用备份SRAM(BKPSRAM / 4KB:0x4002 4000 - 0x4002 4FFF)来存储一些数据缓冲区或一些数据数组,就像我们可以使用BSS RAM区域一样吗?独立于它的低消耗(在Vbat 引脚上),这个BKPSRAM 的特性是否可以与SRAM1 区域(访问时间......)相媲美?
此致,
c - STM32 DMA(并发流,FIFO,突发模式,双缓冲)
stm32F4 系列的 DMA 有一些高级功能,我可以在这里问一下吗?
并发流:两个流可以同时传输数据吗?由于允许传输一个字节。如果总线宽度为 32bit,则可以进行 4 次并发传输。顺便说一句,STM32的AHB总线宽度是多少?
FIFO模式:如果不能并发传输,我猜这里可以使用FIFO。FIFO 有助于在不占用 AHB 总线的情况下等待从低速外设到 DMA 的数据准备就绪。当一定数量的数据准备好后,这块数据会一起被发送到内存中。我的理解正确吗?
每个流的四字深度 32 个先进先出内存缓冲区 (FIFO)
这意味着什么?FIFO中可以存储多少数据?4 还是 4*32?
突发模式:突发模式的实际作用是什么?它在数据表中说可以传输65535个数据。65535和burst模式有什么关系?
双缓冲模式:
双缓冲区类型事务:使用
内存的两个内存指针进行双缓冲区传输(当 DMA
从/向缓冲区读取/写入时,应用程序可以向/从另一个
缓冲区写入/读取)。-----来自STM32F4的参考手册
我的问题是:在 DMA 传输期间,Cortex M4 无法使用 AHB 总线,应用程序如何从另一个缓冲区读取?
arm - 对 __aeabi_idivmod 的 ABI 调用未按预期运行
我正在尝试在裸机架构(带有 ARM cortex-m4f 处理器的 stm32f4 板)上开发程序。我在使用 ABI 调用 __aebi_idivmod 时遇到了一个奇怪的问题。调用是由编译器生成的,因为在代码中多次使用 % 操作数。奇怪的是,如果我查看使用 objdump 编译生成的 .elf 的转储,我得到的是:
另一方面,当我在板上运行程序时,如果我使用 gdb 查看实际的 ABI 调用代码,我会得到:
代码的位置对应,但完全错误:有两条指令甚至不被gdb识别,第二条指令:
正在跳出以 0x866c 结束的进程的 .text 部分:
关于我做错的任何线索?任何帮助,将不胜感激。
编辑:我正在使用这个编译器:https ://launchpad.net/gcc-arm-embedded/+download
EDIT2(在 Notlikethat 的响应之后):我用来链接我的程序的命令是这样的:
memmap 是链接器脚本,vectors.o 包含启动代码,$(OBJS2) 包含必须链接在一起的所有目标文件,$(LIBGCC) 是引用包含我们正在讨论的 ABI 调用的库的变量。根据我从 Notlike 的评论中了解到的情况,我应该在这里添加一些选项,以强制将 libgcc 编译为拇指代码而不是普通的 ARM 代码。我试图将这些选项添加到链接器中,但在这两种情况下我都会遇到相同的错误:
EDIT3:我只是在这一刻才意识到我的主板处理器是 cortex-m4f 而不是 cortex-m3。我认为这不应该有太大的不同。
floating-point - 如何在 STM32F4 探索板的 Flash 中写入浮点数据
我正在尝试通过 VCP 接收浮点数,并使用 Keil IDE 将其写入 STM32F4 发现板的闪存中。用于写入 Flash 存储器的函数:
接受一个无符号整数值作为数据输入,但我已经设法使用以下代码在闪存中写入一个有符号整数:
不过,我仍然没有设法编写浮点数据。如果我将“int”更改为“float”(它们都应该是 4 字节数据,在 keil 编译器指南中有说明),我会得到类似 1.7345673 e-42 的数字。
也许这是一个愚蠢的问题,但如果你能给我一个线索,我真的很感激。
c - STM32F4 挂在 I2C_CheckEvent()
我一直发现我的 STM32F4 和 IMU 设备之间的 I2C 通信随机挂起。STM32F4 是主机,总线上唯一的其他设备是 IMU6050 6 轴加速度/陀螺仪。程序最终因陷入 I2C_CheckEvent() 函数内的循环而挂起。
初始化如下:
IMU 的初始化已经完成,我确信在我获得有效数据一段时间后一切正常。应用程序在运行几秒钟后随机崩溃。
读取功能:
每次,应用程序似乎都会通过其中一个 while 检查事件崩溃,每次都不同。
可能不相关,但是在编译时,我收到警告:
我不确定这是否与它有关。
正如我所说,代码可以正常工作一段时间,有时甚至几分钟。我已经将陀螺仪和加速度值与某些电机相关联,并且在它工作期间,一切运行良好。不知道为什么会卡住
stm32 - STM32F4 UART HAL 驱动程序
我试图弄清楚如何使用这个新的 HAL 驱动程序。我想使用HAL_UART_Receive_IT()
设置设备以在接收到数据时运行中断功能来接收数据。
问题是您必须在中断触发之前指定要读取的数据长度。我计划发送控制台之类的不同长度的命令,因此不能有固定的长度。我认为这样做的唯一方法是一次读取单个字符并建立一个单独的字符串。
HAL 驱动程序似乎有一个问题,如果您设置HAL_UART_Receive_IT()
接收x
字符数,然后尝试发送多个x
字符,则会出现错误。
目前我不知道我是否以正确的方式去做,有什么想法吗?
stm32 - NVIC_SystemReset () 不适用于 STM32F4
我在STM32F4
船上工作。我的 IDE 是 IAR Embedded Work bench。我正在尝试从代码中进行软件重置。为此,我使用了标题中NVIC_SystemReset();
定义的 API ''
。core_cm4.h
但是系统重置没有发生。
我在 STM32F3,相同的 IDE 中尝试了同样的事情。我使用了 NVIC_SystemReset();
标题core_sc300.h
中的功能。正在使用该软件重置。我发现两个文件中的函数定义相同,并且两个控制器都是 Cortex M4。STM32F4 板有什么问题?任何人都可以帮助我解决这个问题,或者任何人都可以建议在STM32F4中进行系统重置的替代方法。
请帮忙。提前致谢
embedded - STM32F4 I2C从接收器
我使用STM32F4板作为从接收器,北欧板作为主发射器。我能够发送从机地址为 0x30,这是从机确认的,我将设备寄存器地址发送为 0x10,然后我使用发送一些数据
我能够在我的中断服务程序中获取事件。我收到了“I2C_EVENT_SLAVE_RECEIVER_ADDRESS_MATCHED”的 0x00020002。然后我收到 0x00020044 事件并且时钟停止运行。谁能帮我解决这个问题。通过范围界定,我在示波器上看到了从地址、设备寄存器地址和我的第一个带有时钟的数据。但在那之后时钟停止了。
我可以将 STM32F4 用作主发射器并读取一些传感器,但我发现很难将 STM32F4 用作从接收器,将北欧板用作主发射器
cpu-registers - STM32F429 发现 SPI 寄存器
我正在尝试使用STM32F429 探索板,以便通过 SPI 以仅传输模式与 LCD 通信。但是,每次我写入数据寄存器以输出时,我的调试视图 ( CrossStudio ) 中都没有加载任何内容。
引脚 4 是我的芯片选择引脚,我的示波器显示它工作得很好。我只是无法从 SPI 引脚中得到任何东西。