三相直流无刷电机驱动程序Word格式文档下载.docx

上传人:b****8 文档编号:22514992 上传时间:2023-02-04 格式:DOCX 页数:17 大小:18KB
下载 相关 举报
三相直流无刷电机驱动程序Word格式文档下载.docx_第1页
第1页 / 共17页
三相直流无刷电机驱动程序Word格式文档下载.docx_第2页
第2页 / 共17页
三相直流无刷电机驱动程序Word格式文档下载.docx_第3页
第3页 / 共17页
三相直流无刷电机驱动程序Word格式文档下载.docx_第4页
第4页 / 共17页
三相直流无刷电机驱动程序Word格式文档下载.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

三相直流无刷电机驱动程序Word格式文档下载.docx

《三相直流无刷电机驱动程序Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《三相直流无刷电机驱动程序Word格式文档下载.docx(17页珍藏版)》请在冰豆网上搜索。

三相直流无刷电机驱动程序Word格式文档下载.docx

#defineV_Up_OnGPIOB->

BSRR=GPIO_Pin_14

#defineV_Up_OffGPIOB->

BRR=GPIO_Pin_14

#defineV_Dn_OnGPIOA->

BSRR=GPIO_Pin_9

#defineV_Dn_OffGPIOA->

BRR=GPIO_Pin_9

#defineW_Up_OnGPIOB->

BSRR=GPIO_Pin_15

#defineW_Up_OffGPIOB->

BRR=GPIO_Pin_15

#defineW_Dn_OnGPIOA->

BSRR=GPIO_Pin_10

#defineW_Dn_OffGPIOA->

BRR=GPIO_Pin_10

#defineSU_HORGPIOA->

IDR&

GPIO_Pin_15

#defineSV_HORGPIOA->

GPIO_Pin_12

#defineSW_HORGPIOA->

GPIO_Pin_11

//u8Motor_Dir=0;

//u8Motor_EN=0;

//u8Hor_Value=7;

//u16TIM2_Conter=0;

u16Hall_Conter=0;

MotorStructMotor={CLOCK,40,STOP};

/*******************************************************************************

*函数:

voidIO_Init<

void>

*描述:

IO

*参数:

*返回:

*其它:

*******************************************************************************/

{

GPIO_InitTypeDefGPIO_InitStruct;

EXTI_InitTypeDefEXTI_InitStructure;

//GPIO_PinRemapConfig<

GPIO_Remap_SWJ_JTAGDisable,ENABLE>

;

/*使能SWD禁用JTAG*/

/**********************LEDLight***********/

GPIO_InitStruct.GPIO_Pin=GPIO_Pin_12;

GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP;

GPIO_InitStruct.GPIO_Speed=GPIO_Speed_2MHz;

GPIO_Init<

GPIOB,&

GPIO_InitStruct>

/***********************霍尔传感器中断**********/

GPIO_InitStruct.GPIO_Pin=GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_15;

GPIO_InitStruct.GPIO_Mode=GPIO_Mode_IN_FLOATING;

GPIOA,&

//Harl

GPIO_EXTILineConfig<

GPIO_PortSourceGPIOA,GPIO_PinSource11>

GPIO_EXTILineConfig<

GPIO_PortSourceGPIOA,GPIO_PinSource12>

GPIO_PortSourceGPIOA,GPIO_PinSource15>

EXTI_InitStructure.EXTI_Line=EXTI_Line11|EXTI_Line12|EXTI_Line15;

EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;

EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Rising_Falling;

EXTI_InitStructure.EXTI_LineCmd=ENABLE;

EXTI_Init<

&

EXTI_InitStructure>

}

/***************************************************************************

函数:

voidPWM_Init<

描述:

配置PWM定时器TIM1

参数:

返回:

***************************************************************************/

GPIO_InitTypeDefGPIO_InitStructure;

TIM_TimeBaseInitTypeDefTIM_TimeBaseInitStruct;

TIM_OCInitTypeDefTIM_OCInitStructure;

//TIM_BDTRInitTypeDefTIM_BDTRInitStructure;

TIM_Cmd<

TIM1,DISABLE>

TIM_CtrlPWMOutputs<

TIM1,DISABLE>

//禁止OC输出

//IO口设置

GPIO_SetBits<

GPIOA,GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10>

//PWM口

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10;

GPIO_InitStructure.GPIO_Speed=GPIO_Speed_10MHz;

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;

GPIO_InitStructure>

GPIOB,GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15>

//普通IO口

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15;

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;

//定时器设置

TIM_TimeBaseInitStruct.TIM_Period=PWM_PERIOD_T;

//5极电机,3000RPM,每个Step有10个脉冲,载波15KHZ

TIM_TimeBaseInitStruct.TIM_Prescaler=2;

TIM_TimeBaseInitStruct.TIM_ClockDivision=TIM_CKD_DIV1;

TIM_TimeBaseInitStruct.TIM_CounterMode=TIM_CounterMode_Up;

TIM_TimeBaseInitStruct.TIM_RepetitionCounter=0;

TIM_TimeBaseInit<

TIM1,&

TIM_TimeBaseInitStruct>

//TIM_ClearITPendingBit<

TIM1,TIM_IT_Update>

//TIM_ARRPreloadConfig<

TIM1,ENABLE>

//TIM_ITConfig<

TIM1,TIM_IT_Update,ENABLE>

//配置PWM输出

TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM1;

TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable;

TIM_OCInitStructure.TIM_OutputNState=TIM_OutputNState_Disable;

TIM_OCInitStructure.TIM_Pulse=1;

TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_Low;

TIM_OCInitStructure.TIM_OCNPolarity=TIM_OCNPolarity_Low;

TIM_OCInitStructure.TIM_OCIdleState=TIM_OCIdleState_Set;

TIM_OCInitStructure.TIM_OCNIdleState=TIM_OCNIdleState_Set;

TIM_OC1Init<

TIM1,&

TIM_OCInitStructure>

TIM_OC2Init<

TIM_OC3Init<

TIM_OC1PreloadConfig<

TIM1,TIM_OCPreload_Enable>

TIM_OC2PreloadConfig<

TIM_OC3PreloadConfig<

TIM_ARRPreloadConfig<

//使能TIMx在ARR上的预装载寄存器TIM_Cmd<

TIM1,ENABLE>

/*****************************************************************************************

voidMotor_Init<

*****************************************************************************************/

IO_Init<

>

PWM_Init<

voidFlash_Led<

u8n>

u8i=0;

for<

i=0;

i<

n;

i++>

{

Led_On;

DelayMs<

100*n>

Led_Off;

}

voidSetPWMduty<

u8PWMChanel,u16pulse>

设置pwm波占空比

switch<

PWMChanel>

case1:

TIM1->

CCR1=pulse;

break;

case2:

CCR2=pulse;

case3:

CCR3=pulse;

default:

PWM_T_Output

设置相应的PWM梯形波输出

pName上桥臂名称,nName下桥臂名称

********************************************************************************/

voidPWM_T_Output<

u8pName,u8nName,u8mRate>

pName>

case1:

GPIOB,GPIO_Pin_15|GPIO_Pin_14>

GPIO_ResetBits<

GPIOB,GPIO_Pin_13>

case2:

GPIOB,GPIO_Pin_13|GPIO_Pin_15>

GPIOB,GPIO_Pin_14>

case3:

GPIOB,GPIO_Pin_13|GPIO_Pin_14>

GPIOB,GPIO_Pin_15>

default:

nName>

TIM_SetCompare2<

TIM1,0>

TIM_SetCompare3<

TIM_SetCompare1<

TIM1,<

u16>

<

PWM_PERIOD_T*mRate/100>

TIM_SetAutoreload<

TIM1,PWM_PERIOD_T>

PWM_T_Calculation

梯形波计算

HallValue霍尔值,mRate调制百分比,direction方向

voidPWM_T_Calculation<

u8hallValue,u8mRate,u8direction>

if<

direction==1>

hallValue>

{

case5:

PWM_T_Output<

1,3,mRate>

1,2,mRate>

3,2,mRate>

3,1,mRate>

case6:

2,1,mRate>

case4:

2,3,mRate>

4,4,0>

else

PWM_T_Int

定时器中断程序,根据霍尔位置设置输出梯形波

direction=顺时针/逆时针,mRate调制率

voidPWM_T_Int<

u8direction,u8mRate>

u8hallValueTemp;

u8hallValue;

hallValueTemp=GPIO_ReadInputDataBit<

GPIOA,GPIO_Pin_11>

+<

GPIO_ReadInputDataBit<

GPIOA,GPIO_Pin_12>

<

1>

GPIOA,GPIO_Pin_15>

2>

hallValue=hallValueTemp;

PWM_T_Calculation<

hallValue,mRate,direction>

/************************************************************************

PWM_Stop

PWM控制信号使能输出,禁止TIM1中断,使能TIM1中断

pwmflag=DISABLE,PWM信号使能输出,pwmflag=ENABLE,禁止PWM输出

*************************************************************************/

voidPWM_Stop<

u8pwmflag>

NVIC_InitTypeDefNVIC_InitStructure;

pwmflag==ENABLE>

//禁止PWM输出

//TIM_Cmd<

TIM2,DISABLE>

NVIC_InitStructure.NVIC_IRQChannel=TIM1_UP_TIM16_IRQn;

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=2;

NVIC_InitStructure.NVIC_IRQChannelSubPriority=1;

NVIC_InitStructure.NVIC_IRQChannelCmd=DISABLE;

NVIC_Init<

NVIC_InitStructure>

GPIO_InitStructure.G

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1