ST开发的时候,初始化是有顺序的吗?

[复制链接]
5784|14
 楼主| Estelle1999 发表于 2025-3-29 14:09 | 显示全部楼层 |阅读模式
在ST开发的时候,初始化是有顺序的吗?我最近发现ADC和定时器,如果定时器先初始化没问题,ADC先初始化,定时器后初始化,就程序失效,这是为什么?
yangjiaxu 发表于 2025-3-29 14:10 | 显示全部楼层

ST开发的时候,初始化是有顺序的吗?

我知道这个问题,这是因为你的ADC包含了定时器的一些操作,导致你要是先初始化ADC,定时器没初始化,但是你都用到了其应用,就会导致芯片运行失败,所以,你初始化的时候也是要有顺序的,最开始用的一定要放最前面初始化
jobszheng 发表于 2025-3-31 09:55 | 显示全部楼层
先初始化软件参数,再初始化硬件参数。
梅花香自123 发表于 2025-3-31 22:55 | 显示全部楼层
如果 先初始化 ADC,但没有正确配置定时器,ADC 可能没有等待合适的触发信号来启动转换,或者 ADC 的工作模式未正确配置为通过定时器触发。
公羊子丹 发表于 2025-4-1 07:34 | 显示全部楼层
是的,初始化顺序很重要,尤其是涉及到外设时钟、DMA 和中断优先级的情况。你 ADC 是用的哪个时钟源?
周半梅 发表于 2025-4-1 07:35 | 显示全部楼层
可能是 ADC 依赖于定时器的触发信号,如果先初始化 ADC,没有正确的触发源,它可能进入错误状态。
帛灿灿 发表于 2025-4-1 07:36 | 显示全部楼层
你用的是什么模式?如果是 ADC + 定时器触发,看看 ADC_Trigger 选项是否正确,比如 TIM_TRGO 触发 ADC 转换。
童雨竹 发表于 2025-4-1 07:37 | 显示全部楼层
试试在 ADC 初始化后,手动复位一下 ADC,然后再启动看看,可能 ADC 进入了某种异常状态。
万图 发表于 2025-4-1 07:38 | 显示全部楼层
你的定时器有使用 DMA 吗?如果 ADC 先初始化,DMA 通道可能会被占用,导致定时器初始化时 DMA 资源冲突。
Wordsworth 发表于 2025-4-1 07:39 | 显示全部楼层
如果是 HAL 库,检查 HAL_ADC_MspInit() 里有没有 HAL_TIM_Base_MspInit() 相关的代码,有些 HAL 代码可能会影响时钟配置。
Bblythe 发表于 2025-4-1 07:39 | 显示全部楼层
试试在 main.c 里手动 HAL_ADC_DeInit() 再 HAL_ADC_Init(),看看是否和初始化顺序有关。
Pulitzer 发表于 2025-4-1 07:40 | 显示全部楼层
你用的是什么 MCU?不同 STM32 系列的 ADC 时钟来源不同,比如 AHB、APB、PLL,可能影响初始化顺序。
Uriah 发表于 2025-4-1 07:41 | 显示全部楼层
试试在 ADC 初始化后,加个 HAL_Delay(10);,有时候 ADC 时钟还没稳定,导致后面外设异常。
Clyde011 发表于 2025-4-1 07:42 | 显示全部楼层
你可以试试 CubeMX 生成的初始化代码,看看它的默认顺序是什么,然后对比你的代码找出问题。
stormwind123 发表于 2025-4-1 12:36 | 显示全部楼层
时钟配置冲突,如果在初始化ADC时配置了时钟,然后在初始化定时器时又进行了更改,可能会导致ADC的时钟设置被覆盖或不稳定,从而影响ADC的正常工作。
laocuo1142 发表于 2025-4-1 18:00 | 显示全部楼层
GPIO引脚冲突。
flycamelaaa 发表于 2025-4-1 20:00 | 显示全部楼层
如果ADC或定时器配置了中断或DMA,那么初始化顺序可能会影响中断和DMA的触发和工作。
powerantone 发表于 2025-4-1 21:20 | 显示全部楼层
软件错误或配置不当。
stormwind123 发表于 2025-4-1 22:00 | 显示全部楼层
在初始化任何外设之前,先配置好系统时钟和外设时钟。
probedog 发表于 2025-4-1 23:00 | 显示全部楼层
检查并避免GPIO引脚的冲突。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

95

主题

1589

帖子

2

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