
说明:
参考:FOC和SVPWM的C语言代码实现
硬件:STM32F405RGT6
软件:STM32CubeMX、Keil
1、系统配置
2、定时器1配置
(1)选择通道与引脚
(2)自定义用户常量
将以下值依次加入到User Constants
#define CKTIM ((u32)72000000uL) //主频
#define PWM_PRSC ((u8)0) //TIM1分频系数
#define PWM_FREQ ((u16) 15000) //PWM频率(Hz)
#define PWM_PERIOD ((u16) (CKTIM / (u32)(2 * PWM_FREQ *(PWM_PRSC+1))))
#define REP_RATE (1) //该参数可以调整电流环的刷新频率,刷新周期:(REP_RATE + 1)/(2*PWM_FREQ) 秒
//因为电流环的采样是靠TIM1来触发的
#define DEADTIME_NS ((u16)1000) //死区时间(ns),范围:0-3500
#define DEADTIME (u16)((unsigned long long)CKTIM/2 * (unsigned long long)DEADTIME_NS/1000000000uL)
————————————————
版权声明:本文为CSDN博主「qlexcel」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qlexcel/article/details/95227991
(3)配置定时器1
3、生成工程
2、硬件测试在主函数中加入下列代码测试PA8、PB13的互补PWM与死区时间。
HAL_TIM_PWM_Start(&htim1,TIM_CHANNEL_1); HAL_TIMEx_PWMN_Start(&htim1,TIM_CHANNEL_1); __HAL_TIM_SET_COMPARE(&htim1, TIM_CHANNEL_1,2800);
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)