在STM32开发中,遇到 TIMx not defined错误的原因分析
1.芯片型号不支持该定时器(如低端STM32L0没有TIM22)。2.HAL库头文件未正确包含。
3.编译器未正确配置芯片型号宏。
4.定时器未在代码中声明(如手动编写代码时遗漏)。 我之前用 L051 的时候就遇到过 TIM22 not defined,当时还找了半天才发现型号根本没带这个定时器。 有时候选型没选对,CubeMX 生成的代码里就带了 TIM21/22,编译直接炸。 楼主这个总结挺实用的,特别是芯片型号宏那点,很多人用模板代码容易忽略。 我一般遇到这类错误都先看 stm32l0xx_hal_conf.h 里是不是把对应模块开了。 如果是纯寄存器写,头文件一定要选对,有时候搞混了 L0 和 L1 也会出错。 有人遇到用旧版本 HAL 库,新增定时器没支持也会提示 not defined。 之前还遇到过芯片是 L073,结果工程选成 L071,直接找不到 TIM2。 TIMx not defined 有时是大小写也坑,宏名得跟 ST 给的一致才行。 楼主要是有其他易错点也可以再补充,我觉得这帖子能帮不少新手。 不行就用 CubeMX 重新生成一遍,把勾选的外设看一眼,省得漏掉。 主要还是程序过程
页:
[1]