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

HAL_TIM_OC_SetConfigChannel 因 override_state 参数触发断言报错

[复制链接]
patch1582 提问时间:2026-7-10 11:27 / 未解决

我想要配置 TIM5 通道 1 在对应引脚输出波形,代码由 STM32CubeMX 生成,但初始化过程中触发断言失败。 mx_system_init() 调用 mx_tim5_init(),内部执行 HAL_TIM_OC_SetConfigChannel(): oc_config.polarity = HAL_TIM_OC_HIGH; oc_config.idle_state = HAL_TIM_OC_IDLE_STATE_RESET; if (HAL_TIM_OC_SetConfigChannel(&hTIM5, HAL_TIM_CHANNEL_1, &oc_config) != HAL_OK) { return NULL; } 进入 HAL_TIM_OC_SetConfigChannel 函数后,程序在下面这行断言处报错: ASSERT_DBG_PARAM(IS_TIM_OC_OVERRIDE_STATE(p_config->override_state)); ASSERT_DBG_PARAM(IS_TIM_OC_BREAK_MODE(p_config->break_mode)); 调试器查看 override_state 的值为: (HAL_TIM_OC_OVERRIDE_SET | unknown: 0xfa)。 如果注释掉这一行断言,程序会在下一行 break_mode 的断言处报错;若两行断言全部注释,代码就能正常在引脚输出波形。

收藏 评论1 发布时间:2026-7-10 11:27

举报

1个回答
xmshao 回答时间:昨天 17:47

什么STM32系列?什么版本的固件库?

为什么不直接使用cubeMx进行配置,并基于库来组织代码,一般不会遇到这些断言错误的。

往往是那种部分用库、部分代码自行组织时可能出现类似问题。

即使遇到也没啥,如果是自定义的跟库预定义的不一致,就无视这些参数的资格检查或合法性检查,自己保证参数合法即可。

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