你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

st-img
chrome
st-img
firefox
st-img
safari
st-img
ie8及以上
shequ.stmicroelectronics.cn
  • ST意法半导体官网
  • STM32中文官网
  • ST全球论坛
登录/注册
  • 首页
  • 技术问答
  • 技术帖
  • 话题
  • 资源
  • 创客秀
  • 视频
  • 标签
  • 积分商城
  • 每日签到
patch1582

patch1582

 

回答数 0 关注数 0
关注 私信
  • 动态99
  • 提问
  • 回答0
  • 创客秀 0
  • 分享 0
  • 关注0
0 回答

Error[Lp015]: section placement failure内容占用溢出

程序
1 回答

能否查到我向 STM32F407 的 FLASH 存储器写入了多少字节的数据

串行EEPROM 安全
butterflyspring butterflyspring 回答时间: 5 天前

目前所有STM32系列都没有这个智能功能的计数器或寄存器。 这个只能依赖软件自己记录实现了。

赞0
1 回答

能否查到我向 STM32F407 的 FLASH 存储器写入了多少字节的数据

串行EEPROM 安全
CM_STM32 CM_STM32 回答时间: 6 天前

没有该硬件寄存器,你可以通过软件实现

赞0
2 回答

STM32F7由USB FS读写QSPI flash

程序
废鱼 废鱼 回答时间: 4 天前

最简单的就是用虚拟串口。

赞0
3 回答

在keil中仿真程序时,结构体变量出现错乱

程序
butterflyspring butterflyspring 回答时间: 2026-8-31 10:26

可能性有很多种,可以根据实际情况排查: 内存越界写(最常见,踩内存) 数组越界:局部 / 全局数组写超范围,刚好覆盖到这个结构体所在内存。 指针错误:野指针、指针偏移错误、强制类型转换错误,向结构体地址附近写数据。 memcpy/memset长度传错,拷贝长度大于目标缓冲区,覆盖相邻内存。 栈溢出(局部结构体)结构体是局部变量(函数栈上): 结构体很大,栈空间不够; 函数嵌套深、中断栈过小,栈向下 / 向上生长,栈溢出覆盖其它栈变量。 特征:结构体是函数内局部变量,函数运行时乱,退出函数更乱;全局结构体一般不会栈溢出。多访问冲突:主循环+ 中断同时读写同一个结构体(并发竞争)结构体全局 / 静态变量,主函数在读 / 写,中断服务函数也读写,没有保护。 结构体大于 1 字节,一次读写不是原子操作;中断打断半写状态,数据被撕坏。 典型:主循环拷贝结构体,中断里更新这个结构体,出来一半旧一半新。调试器假象(并不是真的内存变了) 优化等级太高 -O1 / -O2,变量被编译器优化到寄存器,不在 RAM,Keil 窗口显示的是无效旧值。 结构体没有加 volatile,编译器优化,调试窗口刷新假象;实际 RAM 值并没有变。 断点打在流水线中间,寄存器和内存不同步,窗口显示错乱。 硬件 / 外设 DMA 直接踩内存DMA 目标地址写错,DMA持续往结构体所在内存写数据。非常隐蔽,运行时随机篡改。现象:结构体随机乱,和外设收发时间强相关。指针指向错误内存 结构体指针指向栈已经销毁的局部变量(函数退出,栈内存回收,被别的代码覆盖) 错误强制转换,把别的内存地址强转为结构体指针。 中断栈过小(Cortex‑M)中断栈栈空间不足,中断运行栈溢出,破坏主栈内存。

赞0
1 回答

未接网线先上电,再接网线也不工作

接口
fafa1 fafa1 回答时间: 2026-8-28 11:13

我是完全从头来过!

赞0
3 回答

什么是 GPIO 事件?如何将事件关联到外设

程序
DazzlingOkami DazzlingOkami 回答时间: 2026-8-27 16:04

如果是STM32F系列的单片机,GPIO无法直接触发DMA传输,但可以通过定时器的输入捕获模式间接实现。 如果是STM32H系列或G系列的单片机,则有DMAMUX功能来通过GPIO触发DMA传输。 将GPIO配置为事件输出模式,GPIO_InitStruct.Mode = GPIO_MODE_EVT_RISING; 最后在配置DMA时将触发源改为DMAMUX hdma.Init.Request = BDMA_REQUEST_GENERATOR0; 然后配置DMAMUX,大概是调用HAL_DMAEx_ConfigMuxRequestGenerator进行配置,可以实现当GPIO触发后,执行一次或多次DMA传输。 整个过程都不会触发中断。 STM32单片机上支持数据传输的外设和定时器基本上都支持触发DMA请求,但是需要进行适当的配置来使得当特定事件执行时触发DMA请求。 DMA传输的速度并不是一个容易量化的参数,抛开那些拖慢传输速度低速外设(如串口),传输速度主要受限与数据搬运的那两条总线,即数据的输入通道和输出通道,可以去看看参考手册的System architecture章节。其中有各个通道的数据宽度。以STM32H7这样的单片机来说DMA传输甚至没有CPU直接传输来的快,但是DMA存在的意义不是快,而是它将CPU从重复的数据搬运工作中解放出来去做更重要的事。只有当外设的速度高于DMA的速度时(UNDER_RUN故障)才考虑DMA传输速度是否需要优化,比如开启FIFO、增加burst、减少总线竞争。

赞0
1 回答

异步传输中的奇偶帧位

串口
butterflyspring butterflyspring 回答时间: 2026-8-31 09:12

最好能进一步描述一下: 用的什么软件或库,做了哪些事情,想要实现什么功能,调用什么代码,遇到了哪些问题或有什么疑问。 最好能上传关键信息截图或上传工程 描述清楚后小伙伴们才知道发生了什么,才有可能给出建议。

赞0
3 回答

中断服务程序抖动

程序
butterflyspring butterflyspring 回答时间: 2026-8-24 10:15

软件执行收到很多因素影响,并不能固定速度。 比如,缓存,中断,DMA搬运周期也非固定... 所以需要高精度只能依靠硬件。MCU的硬件来自于时钟源。如果时钟源的抖动超过了需求,那就实现不了。

赞0
6 回答

自己写驱动深入学习与调用Hal库的取舍

程序
Bowen1028 Bowen1028 回答时间: 2026-8-18 12:01

那你直接用寄存器操作好了,不用绕弯子,最接近底层,MCU执行也非常快。但是开发周期会很慢。 用HAL库不用操作寄存器,层层封装,好理解,开发快。

赞0
1 回答

USB_WritePacket 陷入无限循环

USB
xmshao xmshao 回答时间: 2026-8-18 10:33

可能是发生NAK 后,软件错误地把整个192B 传输重新提交了。这会引出两个现象: 1、HCTSIZ / PKTCNT 被重新写。 这时会看到,本来还剩一部分没发完,结果 PKTCNT 又回到 3。 2、NPTX FIFO 被重复灌数据。 因为同一段 192B 又被重新塞进FIFO,最后可能卡在 USB_WritePacket()。 原因很可能是控制 OUT 的NAK 重试逻辑有问题。 你要确认下,设备回了 NAK 之后,主机是不是把整段192B 又从头提交了一遍。 具体来说,就是观察在出错或被 NAK 后再次发送时,是否简单地再次SubmitRequest(192),并把 xfer_count 清零。 正常情况下,主机只应重试还没成功发送的那一包,而不是不管前面已经发出去多少,又把整段数据重新发一遍。

赞0
1 回答

STM32F407全速USB 回复 STALL 握手包

USB
xmshao xmshao 回答时间: 2026-8-18 11:52

这段发送流程里通常没必要手动 SNAK,SNAK 一般是需要停止传输时才使用的动作。 STALL状态在 F4系列OTG模块 上通常不是硬件操作的,而是软件处理的。 可以重点搜索代码里哪里写了 DIEPCTLx.STALL,再跟踪是谁、因为什么条件触发了这条路径。

赞0
2 回答

在 Flash 内两个固件程序间跳转的地址切换

MCUBoot
wlp向日葵 wlp向日葵 回答时间: 2026-8-13 19:50

先写个bootloard,里面规定一个固定的地址,代表要跳转A区还是B区, 你升级的时候,自己去先读这个地址的数据,是A就改为B,是B就改为A,要注意先进行OTA 升级包校验,校验过来再设这个地址,再重启

赞0
1 回答

STM32G4 ADC 注入通道间断模式异常

ADC
xmshao xmshao 回答时间: 2026-8-20 09:12

殊途同归,呵呵! 谢谢分享~

赞0
1 回答

STM32 官方Bootloader相关咨询

串口 MCUBoot
butterflyspring butterflyspring 回答时间: 2026-8-10 14:11

这个在官方的库例程里面就有呀。 你前一个贴子中的哪些跳转函数和代码写法不就是源自那个例程么。

赞0
5 回答

STM32F1 SPI2 无法通信

SPI
fafa1 fafa1 回答时间: 2026-8-10 10:27

STM32F103C8 本身 SPI2 肯定好用啊 示波器抓一下看看吧

赞0
3 回答

Bootloader升级固件

MCUBoot
butterflyspring butterflyspring 回答时间: 2026-8-10 10:28

参照一下官方的例程吧,注意APP 地址和编译。

赞0
3 回答

使用 HAL_UART_Transmit_IT() 实现 printf

串口
wlp向日葵 wlp向日葵 回答时间: 2026-8-10 10:21

可以试下中断接收,放到DAM里面去处理,中断只接收数据,不做数据处理,处理不放到中断里面

赞0
1 回答

STM32F405RG VCP 报错This device cannot start (code 10)

USB
butterflyspring butterflyspring 回答时间: 2026-8-7 11:36

修复后解决了么? 没有的话,可以参考一下例程 STM32Cube_FW_F4_V1.28.1\Projects\STM324xG_EVAL\Applications%uSB_Device\CDC_Standalone

赞0
3 回答

STM32 上同时跑 LWIP 的 TCP 与 UDP 连接

程序
wlp向日葵 wlp向日葵 回答时间: 2026-8-10 11:23

TCP和UDP先分开测试联通,然后你看下是不是联通的接口一样,正常要联通的序号不一样的,一个是0,一个是1,不能同一个接口序号

赞0
12345678下一页
patch1582 patch1582


阅读作者更多的帖子

所在话题

参与活动

  • 滴滴押注社区团购,明确“投入不设上限,要做市场第一”

    线下 2020-10-16
  • 滴滴押注社区团购,明确“投入不设上限,要做市场第一”

    网络 2020-10-16
  • 滴滴押注社区团购,明确“投入不设上限,要做市场第一”

    网络 2020-10-16
  • 滴滴押注社区团购,明确“投入不设上限,要做市场第一”

    网络 2020-10-16
  • 滴滴押注社区团购,明确“投入不设上限,要做市场第一”

    线下 2020-10-16
  • 滴滴押注社区团购,明确“投入不设上限,要做市场第一”

    线下 2020-10-16