[STM32F1] STM32F103 通过HAL库配置ADC DMA传输,出现hardfault

[复制链接]
1997|20
 楼主| classroom 发表于 2024-8-27 10:40 | 显示全部楼层 |阅读模式
STM32F103 通过HAL库配置ADC DMA传输,出现hardfault
duo点 发表于 2024-8-27 13:28 | 显示全部楼层
时钟配置错误或未启用
两只袜子 发表于 2024-8-27 13:29 | 显示全部楼层
ADC和DMA的初始化配置有误吧
cr315 发表于 2024-8-27 13:30 | 显示全部楼层
堆栈溢出
elephant00 发表于 2024-8-27 13:31 | 显示全部楼层
检查HAL库函数的使用是否正确,包括参数和返回值。
onlycook 发表于 2024-8-27 13:31 | 显示全部楼层
硬件故障或短路?
七毛钱 发表于 2024-8-27 13:32 | 显示全部楼层
更新HAL库和固件
jcky001 发表于 2024-8-27 14:00 | 显示全部楼层
检查DMA的配置是否会导致内存越界访问。
烟雨蒙蒙520 发表于 2024-8-28 12:17 | 显示全部楼层
缓冲区必须按照数据总线的对齐要求对齐。通常是 4 字节对齐。
szt1993 发表于 2024-8-28 16:19 | 显示全部楼层
肯定是配置错误
azhangxingweia 发表于 2024-8-29 09:06 | 显示全部楼层
DMA配置错误,导致地址越界错误。我以前遇到过。
公羊子丹 发表于 2025-3-16 07:50 | 显示全部楼层
这个问题我也遇到过,通常是DMA地址设置错误导致的,你检查过DMA的目标地址是否正确吗?
周半梅 发表于 2025-3-16 07:51 | 显示全部楼层
STM32F1的DMA对数据对齐要求比较严格,看看你的ADC缓冲区是不是对齐了?
帛灿灿 发表于 2025-3-16 07:54 | 显示全部楼层
确保你的DMA和ADC时钟已经打开,缺少 __HAL_RCC_DMA1_CLK_ENABLE(); 可能会导致hardfault。
童雨竹 发表于 2025-3-16 07:55 | 显示全部楼层
你用的是什么模式?单次转换还是循环模式?有时候配置不同,DMA的设置也要调整。
万图 发表于 2025-3-16 07:56 | 显示全部楼层
试试看在 HAL_ADC_Start_DMA() 之前手动清除一下 DMA_FLAG_TC,有时候DMA状态没清理干净会出问题。
Wordsworth 发表于 2025-3-16 07:57 | 显示全部楼层
如果是多通道ADC,你的数组大小是否匹配转换的通道数量?数组大小不对可能会导致访问越界。
Bblythe 发表于 2025-3-16 07:58 | 显示全部楼层
Debug模式下可以查看 HardFault 发生时的 CFSR 寄存器,看看是访问无效地址还是其他错误。
Pulitzer 发表于 2025-3-16 07:59 | 显示全部楼层
STM32F103的DMA使用时最好关闭 Data Cache,否则可能会导致数据不同步甚至HardFault。
Uriah 发表于 2025-3-16 08:00 | 显示全部楼层
你用的HAL库版本是多少?有些旧版本的HAL库在DMA部分可能存在bug,试试看更新到最新版本。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

541

主题

3413

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部