![shequ.stmicroelectronics.cn](./template/st_v1/static/img/logo2.png)
以前用的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。 |
应该改为sBreakDeadTimeConfig.DeadTime = DEAD_TIME_COUNTS/2; |
这个软件生成的程序从哪里开始学习比较好,谢谢 |