问题标签 [stm32h743]
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 - 保留一段FLASH存储器
按照这篇文章的指示,我可以从专门用于校准数据的 FLASH 部分保留和写入(和读回)。
问题:
但是,当我重新编程设备时,IDE 在编程之前会清除整个内存,我们会丢失所有数据。由于我们处于调试周期,我们不断地重新编程,并且每次都必须将校准写回作为第一步。
有没有办法告诉 IDE 只擦除与程序数据对应的某个内存区域?谢谢。
stm32 - STM32H7 在 OBFlash 中更改 boot1 地址
我在更改闪存选项字节中的 boot1 地址时遇到问题
我想更改 boot1 地址,允许我在引导加载程序模式(系统内存)或用户代码模式(闪存)下启动而不使用跳转。
我目前正在 STM32H743 EVAL 板上进行测试
这是更改地址的代码,它似乎没有改变任何东西
谢谢,
加布里埃尔
arduino - Nucleo-H743Zi 上的 SPI 时钟工作不正常
我是使用 STM32 微控制器的新手。当我分析 SPI 通信时,我得到时钟信号,您可以在下面的图 1 中看到。时钟在 1.333 MhZ 和 2 Mhz 的频率之间跳跃。我还将 STM32DUINO 与基本的 Arduino SPI 片段一起使用,并与 Arduino Uno 一起测试它。使用 Uno,时钟可以正常工作。我还将我的 STM32 板的 SPI 通道从 SPI1 更改为 SPI3。两者都不起作用。
我使用了 CubeIDE 拥有的普通配置器(图 2)。这是我的 STM32CubeIDE 代码:
提前谢谢你的帮助!
c++ - SDRAM STM32H7 ALIENTEK BOARD - 读/写错误
上个月我一直在尝试利用这个 SDRAM Ram 芯片https://www.digikey.com/en/products/detail/winbond-electronics/W9825G6KH-6/5001919 来存储嵌入的 STM32H743II 的帧缓冲区Alientek 板。
我一直在尝试将这个提供的示例用于 STM32H743-Eval 板https://github.com/STMicroelectronics/STM32CubeH7/tree/master/Projects/STM32H743I-EVAL/Examples/FMC/FMC_SDRAM_DataMemory作为基本代码,但一直不成功。我可以看到创建了初始 RAM 地址并将其设置为值 0xFFFFFDFF,但任何写入值的尝试都失败了,没有发生硬故障,但地址从未更新。
我在下面包含了我的 main.c 文件以及内存资源管理器的屏幕截图,并且可以提供任何其他所需的代码。
c - 优化加权移动平均线
环境:STM32H7 和 GCC
处理数据流:每 250 我们从 SPI 接收 1 个样本
我用 256 个样本做一个“三角形”加权移动平均,就像这样,但中间样本的权重为 1,它在它周围形成一个三角形
我的样本存储在uint32_t val[256]
循环缓冲区中,它适用于 auint8_t write_index
样本为 24 位,样本的最大值为0x00FFFFFF
我必须在250 us 的时间跨度内进行计算,但我用调试 GPIO 引脚测量“moy”部分需要252 us
代码在这里
模拟有趣的事实:如果我在接近尾声时移除(uint32_t)
演员表,则需要 274 us 252 我们
我怎样才能更快地完成它?
我正在考虑使用uint32
而不是float
for coef
(例如乘以 1000),但我uint32
会溢出
usb - 在 STM32H7 上启用 Icache 损坏 USB FS VCOM 端口数据?
我在 FS 模式下使用带有 USB 的 STM32H743 作为 VCOM 端口“CDC”,
我定期发送一组 1024 个值,每个值都用 4 个字符 + 每个值和下一个值之间的空格表示。
每组以字符串标题开始,以新行结束。
我每秒发送此数据 19 次
当我启用 Icache 时,数据已损坏,某些字符在传输过程中丢失或重复。
此后,您可以找到两个样本,用于在不使用 Icache 时正确接收数据,以及在启用 Icache 时损坏数据。
我的主机应用程序是在 Windows 10 操作系统上运行的 Tera Term
我该如何解决这个问题?
损坏的文件
正确的数据
在这里很难看出差异,但在文本编辑器或比较应用程序中会很清楚
损坏数据的一些示例“37503750”而不是“3750 3750”和“37750”而不是“3750”
stm32 - STM32H723- DMA DAC 仅适用于 const 吗?
在 STM32G4 中,我能够设置 DAC DMA,以便我可以使用常规变量(即uint8_t
数组)。但是,当我尝试将代码移植到 H723 时,DAC DMA 将无法工作,除非它使用const uint8_t
在运行时之前设置的常量变量(即数组)。我的应用程序需要对数组进行运行时更改。数组的指针初始化似乎不起作用。我想知道是否有办法解决这个问题?我是否坚持使用常量变量?谢谢!
EDIT1:DAC DMA 和 TIMER 的当前设置
Timer15 配置:
DMA 配置:
在主函数中:
此设置不起作用,但只需初始化dac_data1
为const uint8_t
并预定义它,DMA 就可以工作。
embedded - 交换闪存库时如何防止STM32H7崩溃
我正在使用具有两个闪存库的 STM32H753。对于我的固件更新,我使用了银行交换功能,因此 mcu 引导到正确的版本。
当我交换银行时,微控制器崩溃。没有硬故障或任何其他异常。调试器告诉我,PC 位于 0x72c269e,SP 位于 0xbf00d7b4,但这些地址之前有所不同,我假设这些地址是随机的。
最终看门狗启动并重置MCU,然后交换银行,所以它确实有效。当我换回银行时,没有崩溃,一切正常。
这是执行此操作的代码:
如果我在 while 循环之前放置一条 bkpt 指令,它会被命中两次(如果我继续,则两次都不会崩溃)。
如果我在 while 循环之后放了一条 bkpt 指令,那么第一次交换时它不会被命中。
参考手册(4.3.13)告诉我们:
- 如果尚未解锁,则解锁 OPTLOCK 位。
- 在 FLASH_OPTSR_PRG 寄存器中设置新的所需 SWAP_BANK_OPT 值。
- 通过设置 FLASH_OPTCR 寄存器中的 OPTSTART 位来启动选项字节更改序列。
- 一旦选项字节更改完成,FLASH_OPTSR_CUR 包含预期的 SWAP_BANK_OPT 值,但 FLASH_OPTCR 中的 SWAP_BANK 位尚未修改,并且存储库交换尚未生效。
- 强制系统重置或 POR。当复位上升时,bank swapping 有效(FLASH_OPTCR 中的 SWAP_BANK 值更新)并执行新固件。
我认为我这样做是正确的。我还检查了勘误表,在带有存储库切换的旧芯片中存在问题,但我使用的是最新V
版本。
我希望有人可以给我一个提示。
stm32 - STM32H743VI在不可闪状态下随机跳
我们在带有 JLink 调试器的定制板上使用 STM32H743VIT6。处理器突然跳到无法再刷新ECU的状态。开发板正在运行,但 JMem 和我们的 IDE(uVision)都无法访问或检测控制器。到目前为止,还有其他人遇到过这种行为吗?谷歌也没有帮助。
stm32h743 - 无法擦除 STM32H753 芯片
我们正在为盲人构建盲文显示器,对于该设备,我们正试图通过我们板上的 SD 卡提供 IAP。
我的问题是,每当我们尝试擦除或编程 STM32H753 芯片时,程序会在 HAL_FLASHEx_Erase 函数中第一次出现 FLASH_WaitForLastOperation 时从调试器中出来。Keil 报错
无法访问目标。关闭调试会话
我尝试评论 Erase 函数,然后运行代码。但是它在编程功能中给出了同样的错误。
我没有使用我的代码,而是尝试了您的评估板(STM32Cube_FW_H7_V1.5.0)附带的代码,但同样的事情发生了。
我已经更换了两次芯片,但在静脉中。