jammy1982 发表于 2018-5-26 11:43:33

ST MC SDK 5.0 生成工程文件中定时器Deadtime BUG

         以前用的4.2的库,更新5.0后发现电机运行时驱动管发热严重,调试发现定时器deadtime设置为0,从而发现自动生成的代码中有bug.         我使用的硬件平台是Nucleo F446RE,编译用的TRUESTDUIOK。

         main.c 文件MX_TIM1_Init()函数中关于Deadtime代码如下:

sBreakDeadTimeConfig.OffStateRunMode = TIM_OSSR_ENABLE;
sBreakDeadTimeConfig.OffStateIDLEMode = TIM_OSSI_ENABLE;
sBreakDeadTimeConfig.LockLevel = TIM_LOCKLEVEL_1;
sBreakDeadTimeConfig.DeadTime =0;
sBreakDeadTimeConfig.BreakState = TIM_BREAK_DISABLE;
sBreakDeadTimeConfig.BreakPolarity = TIM_BREAKPOLARITY_LOW;
sBreakDeadTimeConfig.AutomaticOutput = TIM_AUTOMATICOUTPUT_DISABLE;
if (HAL_TIMEx_ConfigBreakDeadTime(&htim1, &sBreakDeadTimeConfig) != HAL_OK)
{
    _Error_Handler(__FILE__, __LINE__);
}


   我的修改方法是main.c中包含头文件parameters_conversion.h
sBreakDeadTimeConfig.DeadTime =0; 改为 sBreakDeadTimeConfig.DeadTime =DEAD_TIME_COUNTS;

   更改后可以正常运行,但每次通过ST MC workbench生成代码都要从新修改一次,希望ST能尽快修正BUG。

jammy1982 发表于 2018-5-26 12:41:29

应该改为sBreakDeadTimeConfig.DeadTime =DEAD_TIME_COUNTS/2;

ersha4877 发表于 2018-5-27 10:38:36

这个软件生成的程序从哪里开始学习比较好,谢谢
页: [1]
查看完整版本: ST MC SDK 5.0 生成工程文件中定时器Deadtime BUG