chap3.c

来自「用凌阳16位单片机SPMC75F2413A来控制无刷直流电动机的详细程序包」· C语言 代码 · 共 495 行 · 第 1/2 页

C
495
字号
			P_TMR3_OutputCtrl->W = CW_TMR3_POLP_Active_High	|	\
								   CW_TMR3_UPWM_Out_HL  | CW_TMR3_UOC_Mode0 |\
								   CW_TMR3_VPWM_Out_PWM | CW_TMR3_VOC_Mode1 |\
								   CW_TMR3_WPWM_Out_HL  | CW_TMR3_WOC_Mode2;
			break;
					
		case(5):	//V6,V1
			P_TMR3_OutputCtrl->W = CW_TMR3_POLP_Active_High	|	\
								   CW_TMR3_UPWM_Out_HL  | CW_TMR3_UOC_Mode2 |\
								   CW_TMR3_VPWM_Out_PWM | CW_TMR3_VOC_Mode1 |\
								   CW_TMR3_WPWM_Out_HL  | CW_TMR3_WOC_Mode0;
			break;

		default:
			IPM_Trigger_Off();
			break;
	}
}

//=============================================//
//120 Degree Wave Trigger For BLDC etc.
//BLDC正转时,120度前半PWM方波信号产生
//6,4,5,1,3,2
//=============================================//
void IPM_Trigger_PF120HalfPWM(unsigned int position)
{
	switch(position&0x07)
	{
		case(6):	//V1,V2
			P_TMR3_OutputCtrl->W = CW_TMR3_POLP_Active_High	|	\
								   CW_TMR3_UPWM_Out_PWM | CW_TMR3_UOC_Mode2 |\
								   CW_TMR3_VPWM_Out_HL  | CW_TMR3_VOC_Mode0 |\
								   CW_TMR3_WPWM_Out_HL  | CW_TMR3_WOC_Mode1;
			break;
					
		case(4):	//V2,V3
			P_TMR3_OutputCtrl->W = CW_TMR3_POLP_Active_High	|	\
								   CW_TMR3_UPWM_Out_HL  | CW_TMR3_UOC_Mode0 |\
								   CW_TMR3_VPWM_Out_HL  | CW_TMR3_VOC_Mode2 |\
								   CW_TMR3_WPWM_Out_PWM | CW_TMR3_WOC_Mode1;
			break;
				
		case(5):	//V3,V4
			P_TMR3_OutputCtrl->W = CW_TMR3_POLP_Active_High	|	\
								   CW_TMR3_UPWM_Out_HL  | CW_TMR3_UOC_Mode1 |\
								   CW_TMR3_VPWM_Out_PWM | CW_TMR3_VOC_Mode2 |\
								   CW_TMR3_WPWM_Out_HL  | CW_TMR3_WOC_Mode0;
			break;
				
		case(1):	//V4,V5
			P_TMR3_OutputCtrl->W = CW_TMR3_POLP_Active_High	|	\
								   CW_TMR3_UPWM_Out_PWM | CW_TMR3_UOC_Mode1 |\
								   CW_TMR3_VPWM_Out_HL  | CW_TMR3_VOC_Mode0 |\
								   CW_TMR3_WPWM_Out_HL  | CW_TMR3_WOC_Mode2;
			break;
			
		case(3):	//V5,V6
			P_TMR3_OutputCtrl->W = CW_TMR3_POLP_Active_High	|	\
								   CW_TMR3_UPWM_Out_HL  | CW_TMR3_UOC_Mode0 |\
								   CW_TMR3_VPWM_Out_HL  | CW_TMR3_VOC_Mode1 |\
								   CW_TMR3_WPWM_Out_PWM | CW_TMR3_WOC_Mode2;
			break;
					
		case(2):	//V6,V1
			P_TMR3_OutputCtrl->W = CW_TMR3_POLP_Active_High	|	\
								   CW_TMR3_UPWM_Out_HL  | CW_TMR3_UOC_Mode2 |\
								   CW_TMR3_VPWM_Out_PWM | CW_TMR3_VOC_Mode1 |\
								   CW_TMR3_WPWM_Out_HL  | CW_TMR3_WOC_Mode0;
			break;

		default:
			IPM_Trigger_Off();
			break;
	}
}
//=============================================//
//120 Degree Wave Trigger For BLDC etc.
//BLDC反转时,120度前半PWM方波信号产生
//1,3,2,6,4,5
//=============================================//
void IPM_Trigger_NF120HalfPWM(unsigned int position)
{
	switch(position&0x07)
	{
		case(1):	//V1,V2
			P_TMR3_OutputCtrl->W = CW_TMR3_POLP_Active_High	|	\
								   CW_TMR3_UPWM_Out_HL  | CW_TMR3_UOC_Mode2 |\
								   CW_TMR3_VPWM_Out_HL  | CW_TMR3_VOC_Mode0 |\
								   CW_TMR3_WPWM_Out_PWM | CW_TMR3_WOC_Mode1;
			break;
					
		case(3):	//V2,V3
			P_TMR3_OutputCtrl->W = CW_TMR3_POLP_Active_High	|	\
								   CW_TMR3_UPWM_Out_HL  | CW_TMR3_UOC_Mode0 |\
								   CW_TMR3_VPWM_Out_PWM | CW_TMR3_VOC_Mode2 |\
								   CW_TMR3_WPWM_Out_HL  | CW_TMR3_WOC_Mode1;
			break;
				
		case(2):	//V3,V4
			P_TMR3_OutputCtrl->W = CW_TMR3_POLP_Active_High	|	\
								   CW_TMR3_UPWM_Out_PWM | CW_TMR3_UOC_Mode1 |\
								   CW_TMR3_VPWM_Out_HL  | CW_TMR3_VOC_Mode2 |\
								   CW_TMR3_WPWM_Out_HL  | CW_TMR3_WOC_Mode0;
			break;
				
		case(6):	//V4,V5
			P_TMR3_OutputCtrl->W = CW_TMR3_POLP_Active_High	|	\
								   CW_TMR3_UPWM_Out_HL  | CW_TMR3_UOC_Mode1 |\
								   CW_TMR3_VPWM_Out_HL  | CW_TMR3_VOC_Mode0 |\
								   CW_TMR3_WPWM_Out_PWM | CW_TMR3_WOC_Mode2;
			break;
			
		case(4):	//V5,V6
			P_TMR3_OutputCtrl->W = CW_TMR3_POLP_Active_High	|	\
								   CW_TMR3_UPWM_Out_HL  | CW_TMR3_UOC_Mode0 |\
								   CW_TMR3_VPWM_Out_PWM | CW_TMR3_VOC_Mode1 |\
								   CW_TMR3_WPWM_Out_HL  | CW_TMR3_WOC_Mode2;
			break;
					
		case(5):	//V6,V1
			P_TMR3_OutputCtrl->W = CW_TMR3_POLP_Active_High	|	\
								   CW_TMR3_UPWM_Out_PWM | CW_TMR3_UOC_Mode2 |\
								   CW_TMR3_VPWM_Out_HL  | CW_TMR3_VOC_Mode1 |\
								   CW_TMR3_WPWM_Out_HL  | CW_TMR3_WOC_Mode0;
			break;

		default:
			IPM_Trigger_Off();
			break;
	}
}
//=============================================//
//120 Degree Wave Trigger For BLDC etc.
//BLDC正转时,120度后半PWM方波信号产生
//6,4,5,1,3,2
//=============================================//
void IPM_Trigger_PB120HalfPWM(unsigned int position)
{
	switch(position&0x07)
	{
		case(6):	//V1,V2
			P_TMR3_OutputCtrl->W = CW_TMR3_POLP_Active_High	|	\
								   CW_TMR3_UPWM_Out_HL  | CW_TMR3_UOC_Mode2 |\
								   CW_TMR3_VPWM_Out_HL  | CW_TMR3_VOC_Mode0 |\
								   CW_TMR3_WPWM_Out_PWM | CW_TMR3_WOC_Mode1;
			break;
					
		case(4):	//V2,V3
			P_TMR3_OutputCtrl->W = CW_TMR3_POLP_Active_High	|	\
								   CW_TMR3_UPWM_Out_HL  | CW_TMR3_UOC_Mode0 |\
								   CW_TMR3_VPWM_Out_PWM | CW_TMR3_VOC_Mode2 |\
								   CW_TMR3_WPWM_Out_HL  | CW_TMR3_WOC_Mode1;
			break;
				
		case(5):	//V3,V4
			P_TMR3_OutputCtrl->W = CW_TMR3_POLP_Active_High	|	\
								   CW_TMR3_UPWM_Out_PWM | CW_TMR3_UOC_Mode1 |\
								   CW_TMR3_VPWM_Out_HL  | CW_TMR3_VOC_Mode2 |\
								   CW_TMR3_WPWM_Out_HL  | CW_TMR3_WOC_Mode0;
			break;
				
		case(1):	//V4,V5
			P_TMR3_OutputCtrl->W = CW_TMR3_POLP_Active_High	|	\
								   CW_TMR3_UPWM_Out_HL  | CW_TMR3_UOC_Mode1 |\
								   CW_TMR3_VPWM_Out_HL  | CW_TMR3_VOC_Mode0 |\
								   CW_TMR3_WPWM_Out_PWM | CW_TMR3_WOC_Mode2;
			break;
			
		case(3):	//V5,V6
			P_TMR3_OutputCtrl->W = CW_TMR3_POLP_Active_High	|	\
								   CW_TMR3_UPWM_Out_HL  | CW_TMR3_UOC_Mode0 |\
								   CW_TMR3_VPWM_Out_PWM | CW_TMR3_VOC_Mode1 |\
								   CW_TMR3_WPWM_Out_HL  | CW_TMR3_WOC_Mode2;
			break;
					
		case(2):	//V6,V1
			P_TMR3_OutputCtrl->W = CW_TMR3_POLP_Active_High	|	\
								   CW_TMR3_UPWM_Out_PWM | CW_TMR3_UOC_Mode2 |\
								   CW_TMR3_VPWM_Out_HL  | CW_TMR3_VOC_Mode1 |\
								   CW_TMR3_WPWM_Out_HL  | CW_TMR3_WOC_Mode0;
			break;

		default:
			IPM_Trigger_Off();
			break;
	}
}
//=============================================//
//120 Degree Wave Trigger For BLDC etc.
//BLDC反转时,120度后半PWM方波信号产生
//1,3,2,6,4,5
//=============================================//
void IPM_Trigger_NB120HalfPWM(unsigned int position)
{
	switch(position&0x07)
	{
		case(1):	//V1,V2
			P_TMR3_OutputCtrl->W = CW_TMR3_POLP_Active_High	|	\
								   CW_TMR3_UPWM_Out_PWM | CW_TMR3_UOC_Mode2 |\
								   CW_TMR3_VPWM_Out_HL  | CW_TMR3_VOC_Mode0 |\
								   CW_TMR3_WPWM_Out_HL  | CW_TMR3_WOC_Mode1;
			break;
					
		case(3):	//V2,V3
			P_TMR3_OutputCtrl->W = CW_TMR3_POLP_Active_High	|	\
								   CW_TMR3_UPWM_Out_HL  | CW_TMR3_UOC_Mode0 |\
								   CW_TMR3_VPWM_Out_HL  | CW_TMR3_VOC_Mode2 |\
								   CW_TMR3_WPWM_Out_PWM | CW_TMR3_WOC_Mode1;
			break;
				
		case(2):	//V3,V4
			P_TMR3_OutputCtrl->W = CW_TMR3_POLP_Active_High	|	\
								   CW_TMR3_UPWM_Out_HL  | CW_TMR3_UOC_Mode1 |\
								   CW_TMR3_VPWM_Out_PWM | CW_TMR3_VOC_Mode2 |\
								   CW_TMR3_WPWM_Out_HL  | CW_TMR3_WOC_Mode0;
			break;
				
		case(6):	//V4,V5
			P_TMR3_OutputCtrl->W = CW_TMR3_POLP_Active_High	|	\
								   CW_TMR3_UPWM_Out_PWM | CW_TMR3_UOC_Mode1 |\
								   CW_TMR3_VPWM_Out_HL  | CW_TMR3_VOC_Mode0 |\
								   CW_TMR3_WPWM_Out_HL  | CW_TMR3_WOC_Mode2;
			break;
			
		case(4):	//V5,V6
			P_TMR3_OutputCtrl->W = CW_TMR3_POLP_Active_High	|	\
								   CW_TMR3_UPWM_Out_HL  | CW_TMR3_UOC_Mode0 |\
								   CW_TMR3_VPWM_Out_HL  | CW_TMR3_VOC_Mode1 |\
								   CW_TMR3_WPWM_Out_PWM | CW_TMR3_WOC_Mode2;
			break;
					
		case(5):	//V6,V1
			P_TMR3_OutputCtrl->W = CW_TMR3_POLP_Active_High	|	\
								   CW_TMR3_UPWM_Out_HL  | CW_TMR3_UOC_Mode2 |\
								   CW_TMR3_VPWM_Out_PWM | CW_TMR3_VOC_Mode1 |\
								   CW_TMR3_WPWM_Out_HL  | CW_TMR3_WOC_Mode0;
			break;

		default:
			IPM_Trigger_Off();
			break;
	}
}

//=============================================//
//	*END*
//=============================================//

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?