你是对的,MX_MotorControl_Init() 覆盖了 SysTick 优先级,这是一个错误。
如果使用 HAL 生成,则可以替换 MX_MotorControl_Init(void) 中的以下行:
HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/SYS_TICK_FREQUENCY);
通过这个:
HAL_SetTickFreq(HAL_RCC_GetHCLKFreq()/SYS_TICK_FREQUENCY);
这样做将恢复由 HAL_Init() 设置的 SYSTick 中断级别,这就是我们想要的。
感谢您的报告。
请注意,与其他中断相比,systick 的策略是最低优先级。由于默认情况下 MX_MotorControl_INIT() 将其重置为可能的最低值,我们没有捕捉到它。
我们建议想要为自己的应用程序使用另一个中断的用户将其优先级设置为 Systick 之一,由于此错误,这是不可能的。我们计划在下一个版本中修复它。
你是对的,MX_MotorControl_Init() 覆盖了 SysTick 优先级,这是一个错误。
如果使用 HAL 生成,则可以替换 MX_MotorControl_Init(void) 中的以下行:
HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/SYS_TICK_FREQUENCY);
通过这个:
HAL_SetTickFreq(HAL_RCC_GetHCLKFreq()/SYS_TICK_FREQUENCY);
这样做将恢复由 HAL_Init() 设置的 SYSTick 中断级别,这就是我们想要的。
感谢您的报告。
请注意,与其他中断相比,systick 的策略是最低优先级。由于默认情况下 MX_MotorControl_INIT() 将其重置为可能的最低值,我们没有捕捉到它。
我们建议想要为自己的应用程序使用另一个中断的用户将其优先级设置为 Systick 之一,由于此错误,这是不可能的。我们计划在下一个版本中修复它。
举报