|
我想要配置 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 的断言处报错;若两行断言全部注释,代码就能正常在引脚输出波形。 |
在 STM32Cube 中配置正交编码器模式
stm32H723 tim23和tim24 中间对齐模式无效
stm32H723 tim23和tim24是不是不支持中间对齐模式?
用电位器调节 PWM 频率
stm32H723 tim1和tim23 tim24同步的问题
stm32n657的TIM8定时器
向 “HAL_RTC_GetTime” 函数传递的第一个参数出现指针类型不兼容警告
无法从编码器模式下的 TIM1 获取计数值
定时器输出PWM控制电机的问题
STM32U575的LPTIM中断问题
微信公众号
手机版
什么STM32系列?什么版本的固件库?
为什么不直接使用cubeMx进行配置,并基于库来组织代码,一般不会遇到这些断言错误的。
往往是那种部分用库、部分代码自行组织时可能出现类似问题。
即使遇到也没啥,如果是自定义的跟库预定义的不一致,就无视这些参数的资格检查或合法性检查,自己保证参数合法即可。