你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

用mcsdk6.4工具使用ElectronicSpeedControl_ESC-G4生成的代码编译没错误但是开机就卡死怎么解决?

[复制链接]
是伍六七不是刺客柒 提问时间:2025-12-14 12:23 / 未解决

添加printf以后发现 就在这一部分卡住的

/ TIM1_BRK_TIM15_IRQn interrupt configuration / HAL_NVIC_SetPriority(TIM1_BRK_TIM15_IRQn, 4, 1); HAL_NVIC_EnableIRQ(TIM1_BRK_TIM15_IRQn); / TIM1_UP_TIM16_IRQn interrupt configuration / HAL_NVIC_SetPriority(TIM1_UP_TIM16_IRQn, 0, 0); HAL_NVIC_EnableIRQ(TIM1_UP_TIM16_IRQn);

什么原因啊大佬们,求教求教

收藏 评论1 发布时间:2025-12-14 12:23

举报

1个回答
cm32 回答时间:7 分钟前
可能是优先级的问题,下面是GPT的回答

可能导致该问题的原因:

  • IM1 更新中断在 EnableIRQ 后立即触发

    • TIM1 是高级定时器
    • 上电后计数器/更新标志很可能已经置位
  • NVIC 立刻跳进 TIM1_UP_TIM16_IRQHandler

  • 该中断:

    • 优先级是 0(最高)
    • 抢占 SysTick / RTOS 内核中断

解决办法

1.把 TIM1_UP_TIM16_IRQn 的优先级改低

例如:

HAL_NVIC_SetPriority(TIM1_UP_TIM16_IRQn, 5, 0); HAL_NVIC_EnableIRQ(TIM1_UP_TIM16_IRQn);

2.在中断 Enable 之前,没有清 Pending 位

TIM1 更新中断经常“上电即 Pending”。

修复方式

EnableIRQ 前加:

__HAL_TIM_CLEAR_FLAG(&htim1, TIM_FLAG_UPDATE); NVIC_ClearPendingIRQ(TIM1_UP_TIM16_IRQn);

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版