打印

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

[复制链接]
418|19
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Estelle1999|  楼主 | 2025-3-29 14:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在ST开发的时候,初始化是有顺序的吗?我最近发现ADC和定时器,如果定时器先初始化没问题,ADC先初始化,定时器后初始化,就程序失效,这是为什么?

使用特权

评论回复
沙发
yangjiaxu| | 2025-3-29 14:10 | 只看该作者

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

我知道这个问题,这是因为你的ADC包含了定时器的一些操作,导致你要是先初始化ADC,定时器没初始化,但是你都用到了其应用,就会导致芯片运行失败,所以,你初始化的时候也是要有顺序的,最开始用的一定要放最前面初始化

使用特权

评论回复
板凳
jobszheng| | 2025-3-31 09:55 | 只看该作者
先初始化软件参数,再初始化硬件参数。

使用特权

评论回复
地板
公羊子丹| | 2025-4-1 07:34 | 只看该作者
是的,初始化顺序很重要,尤其是涉及到外设时钟、DMA 和中断优先级的情况。你 ADC 是用的哪个时钟源?

使用特权

评论回复
5
周半梅| | 2025-4-1 07:35 | 只看该作者
可能是 ADC 依赖于定时器的触发信号,如果先初始化 ADC,没有正确的触发源,它可能进入错误状态。

使用特权

评论回复
6
帛灿灿| | 2025-4-1 07:36 | 只看该作者
你用的是什么模式?如果是 ADC + 定时器触发,看看 ADC_Trigger 选项是否正确,比如 TIM_TRGO 触发 ADC 转换。

使用特权

评论回复
7
童雨竹| | 2025-4-1 07:37 | 只看该作者
试试在 ADC 初始化后,手动复位一下 ADC,然后再启动看看,可能 ADC 进入了某种异常状态。

使用特权

评论回复
8
万图| | 2025-4-1 07:38 | 只看该作者
你的定时器有使用 DMA 吗?如果 ADC 先初始化,DMA 通道可能会被占用,导致定时器初始化时 DMA 资源冲突。

使用特权

评论回复
9
Wordsworth| | 2025-4-1 07:39 | 只看该作者
如果是 HAL 库,检查 HAL_ADC_MspInit() 里有没有 HAL_TIM_Base_MspInit() 相关的代码,有些 HAL 代码可能会影响时钟配置。

使用特权

评论回复
10
Bblythe| | 2025-4-1 07:39 | 只看该作者
试试在 main.c 里手动 HAL_ADC_DeInit() 再 HAL_ADC_Init(),看看是否和初始化顺序有关。

使用特权

评论回复
11
Pulitzer| | 2025-4-1 07:40 | 只看该作者
你用的是什么 MCU?不同 STM32 系列的 ADC 时钟来源不同,比如 AHB、APB、PLL,可能影响初始化顺序。

使用特权

评论回复
12
Uriah| | 2025-4-1 07:41 | 只看该作者
试试在 ADC 初始化后,加个 HAL_Delay(10);,有时候 ADC 时钟还没稳定,导致后面外设异常。

使用特权

评论回复
13
Clyde011| | 2025-4-1 07:42 | 只看该作者
你可以试试 CubeMX 生成的初始化代码,看看它的默认顺序是什么,然后对比你的代码找出问题。

使用特权

评论回复
14
stormwind123| | 2025-4-1 12:36 | 只看该作者
时钟配置冲突,如果在初始化ADC时配置了时钟,然后在初始化定时器时又进行了更改,可能会导致ADC的时钟设置被覆盖或不稳定,从而影响ADC的正常工作。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

81

主题

1505

帖子

2

粉丝