STM32
直播中

h1654155275.5661

7年用户 993经验值
私信 关注
[问答]

请问中断向量重复定义怎么处理?

在MC中准备使用位置控制,配置了一个编码器 和HALL位置检测分别使用tiM4 和TIM3
在生成的工程文件中
/**  AUXILIARY HALL TIMER MOTOR 1 *****/
define M1_HALL_TIM_PERIOD 65535

define M1_HALL_IC_FILTER  14

define SPD_TIM_M1_IRQHandler TIM4_IRQHandler

/**  AUXILIARY ENCODER TIMER MOTOR 1 *****/
define M1_PULSE_NBR ( (4 * (M1_ENCODER_PPR)) - 1 )

define M1_ENC_IC_FILTER  12

define SPD_TIM_M1_IRQHandler TIM3_IRQHandler

这个SPD_TIM_M1_IRQHandler重复定义了。可以编译通过,但因为中断向量表有错,程序在SystemClock_Config();后 就跑飞了。
如果去除其中一个定义,则程序不会跑飞。请问遇到这种情况怎么处理?



回帖(2)

王玮

2024-3-29 10:39:43
修改一下对应的宏定义,修改为两个不同,或者直接用TIM3_IRQHandler来表示。
举报

贾伟刚

2024-3-29 14:29:42
SPD_TIM_M1_IRQHandler是中断处理函数的名称,定义了中断处理函数的名称会在编译时生成对应的中断向量表项。如果同一个中断向量被重复定义,会导致编译错误。

要解决这个问题,可以将一个中断向量的定义注释掉或者更改为其他不重复的名称。在上述代码中,TIM4_IRQHandler和TIM3_IRQHandler是两个不同的中断处理函数,所以可以根据具体需求选择一个保留,另一个注释掉或者更改为其他名称。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分