1、#define V_Up_On GPIOB-BSRR = GPIO_Pin_14#define V_Up_Off GPIOB-BRR = GPIO_Pin_14#define V_Dn_On GPIOA-BSRR = GPIO_Pin_9#define V_Dn_Off GPIOA-BRR = GPIO_Pin_9#define W_Up_On GPIOB-BSRR = GPIO_Pin_15#define W_Up_Off GPIOB-BRR = GPIO_Pin_15#define W_Dn_On GPIOA-BSRR = GPIO_Pin_10#define W_Dn_Off GPIOA
2、-BRR = GPIO_Pin_10#define SU_HOR GPIOA-IDR & GPIO_Pin_15#define SV_HOR GPIOA- GPIO_Pin_12#define SW_HOR GPIOA- GPIO_Pin_11/u8 Motor_Dir=0;/u8 Motor_EN=0;/u8 Hor_Value=7;/u16 TIM2_Conter=0;u16 Hall_Conter=0;MotorStruct Motor=CLOCK,40,STOP;/* 函数:void IO_Init* 描述:IO* 参数:* 返回:* 其它:*/ GPIO_InitTypeDef GP
3、IO_InitStruct; EXTI_InitTypeDef EXTI_InitStructure; /GPIO_PinRemapConfig; /*使能SWD 禁用JTAG*/ /*LED Light*/ GPIO_InitStruct.GPIO_Pin=GPIO_Pin_12; GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP; GPIO_InitStruct.GPIO_Speed=GPIO_Speed_2MHz; GPIO_Init /*霍尔传感器中断*/ GPIO_InitStruct.GPIO_Pin=GPIO_Pin_11|GPIO_Pin_1
4、2|GPIO_Pin_15; GPIO_InitStruct.GPIO_Mode=GPIO_Mode_IN_FLOATING;GPIOA, &/Harl GPIO_EXTILineConfigGPIO_EXTILineConfigGPIO_PortSourceGPIOA, GPIO_PinSource15 EXTI_InitStructure.EXTI_Line = EXTI_Line11 | EXTI_Line12|EXTI_Line15;EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;EXTI_InitStructure.EXTI_Tr
5、igger = EXTI_Trigger_Rising_Falling;EXTI_InitStructure.EXTI_LineCmd = ENABLE; EXTI_Init/*函数:void PWM_Init描述:配置PWM定时器TIM1参数:返回:无*/ GPIO_InitTypeDef GPIO_InitStructure; TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct; TIM_OCInitTypeDef TIM_OCInitStructure;/TIM_BDTRInitTypeDef TIM_BDTRInitStructure; TIM
6、_Cmd TIM_CtrlPWMOutputs/禁止OC输出 /IO口设置 GPIO_SetBits /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_InitStructureGPIOB, GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15/普通IO口GPIO_Init
7、Structure.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;T
8、IM_TimeBaseInitStruct.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInitStruct.TIM_RepetitionCounter = 0; TIM_TimeBaseInit /TIM_ClearITPendingBit /TIM_ARRPreloadConfig /TIM_ITConfig /配置PWM输出 TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_E
9、nable; 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_OCInitStructur
10、e.TIM_OCNIdleState = TIM_OCNIdleState_Set; TIM_OC1Init TIM_OC2Init TIM_OC3Init TIM_OC1PreloadConfig TIM_OC2PreloadConfig TIM_OC3PreloadConfig TIM_ARRPreloadConfig /使能TIMx在ARR上的预装载寄存器 TIM_Cmd/*void Motor_Init*/ IO_Init PWM_Initvoid Flash_Led u8 i=0; fori=0;i Led_On; DelayMs Led_Off; void SetPWMduty设置
11、pwm波占空比 switch case 1 : TIM1-CCR1=pulse; break; case 2 :CCR2=pulse; case 3 :CCR3=pulse; default :PWM_T_Output设置相应的PWM梯形波输出pName上桥臂名称,nName下桥臂名称*/void PWM_T_OutputpName case 1:GPIOB, GPIO_Pin_15 | GPIO_Pin_14 GPIO_ResetBits case 2:GPIOB, GPIO_Pin_13 | GPIO_Pin_15 GPIOB , GPIO_Pin_14 case 3:GPIOB, GPI
12、O_Pin_13 | GPIO_Pin_14 GPIOB , GPIO_Pin_15 default:nName TIM_SetCompare2 TIM_SetCompare3 TIM_SetCompare1TIM1, TIM_SetAutoreloadPWM_T_Calculation梯形波计算HallValue霍尔值,mRate调制百分比,direction方向void PWM_T_Calculation ifhallValue case 5: PWM_T_Output1 , 2 , mRate3 , 2 , mRate3 , 1 , mRate case 6:2 , 1 , mRate
13、case 4:2 , 3 , mRate4 , 4 , 0 elsePWM_T_Int定时器中断程序,根据霍尔位置设置输出梯形波direction=顺时针/逆时针,mRate调制率void PWM_T_Int u8 hallValueTemp; u8 hallValue; hallValueTemp = GPIO_ReadInputDataBit + GPIO_ReadInputDataBit GPIOA, GPIO_Pin_15 2 hallValue = hallValueTemp; PWM_T_Calculation/*PWM_StopPWM控制信号使能输出,禁止TIM1中断,使能TIM
14、1中断pwmflag=DISABLE,PWM信号使能输出,pwmflag=ENABLE,禁止 PWM输出*/void PWM_Stop NVIC_InitTypeDef NVIC_InitStructure;pwmflag = ENABLE/禁止 PWM输出 /TIM_Cmd 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 GPIO_InitStructure.G
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1