2024年1月1日发(作者:)

53545556575859666768697677787986878889969798995116117118 TIM3per = Cycle/10; //Ô¤·ÖƵΪ720 ,10us ¼¼ÊõÒ»´Î TIM_SetAutoreload(TIM2, Time-1); //ÉèÖÃTIM2µÄÖØ×°ÔØÖµ TIM_SetAutoreload(TIM3, TIM3per-1); //ÉèÖÃTIM3µÄÖØ×°ÔØÖµ TIM_SetCompare1(TIM3,TIM3per/2); //ÉèÖÃTIM3Õ¼¿Õ±ÈΪ50% TIM_SetAutoreload(TIM4, TIM3per-1); //ÉèÖÃTIM3µÄÖØ×°ÔØÖµ TIM_SetCompare1(TIM4,TIM3per/2); //ÉèÖÃTIM3Õ¼¿Õ±ÈΪ50% TIM_Cmd(TIM2,ENABLE);}

void TIM3_init(void){ TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct; TIM_OCInitTypeDef TIM_OCInitStruct; GPIO_InitTypeDef GPIO_InitStruct; RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2|RCC_APB1Periph_TIM3,ENABLE); // RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENAB RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO,ENABLE); // RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENAB GPIO__Mode = GPIO_Mode_AF_PP; //TIM2_ch1_ETR£ºA0 £¬ TIM3_ch1 £ºA6 GPIO__Pin = GPIO_Pin_1|GPIO_Pin_7|GPIO_Pin_6;

GPIO__Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA,&GPIO_InitStruct);

/**************TIM2¹¤×÷ÔÚµ¥Âö³åģʽÏÂ********************/ TIM__ClockDivision = TIM_CKD_DIV1; TIM__CounterMode = TIM_CounterMode_Up; TIM__Prescaler = 7199; //Ô¤·ÖÅäÖµ£¬Ã¿100u¼ÆÊýÒ»´Î TIM__Period = 400; //ÖØÔØÖµ TIM_TimeBaseInit(TIM2,&TIM_TimeBaseInitStruct); TIM_SelectOnePulseMode(TIM2,TIM_OPMode_Single);//ÉèÖÃTIM2ÔÚµ¥Âö³åģʽÏ £¬ µ¥´Î´¥·¢ TIM_OC2PreloadConfig(TIM2,TIM_OCPreload_Enable);// ʹÄÜTIM2µÄͨµÀ2Ô¤×°ÔØ¼Ä´æÆ÷ TIM_SelectOutputTrigger(TIM2,TIM_TRGOSource_OC2Ref); //Âö³åÊä³öͨµÀ2 TIM__OCMode = TIM_OCMode_PWM2;//

TIM__OutputState = TIM_OutputState_Enable; TIM__OCPolarity = TIM_OCPolarity_High; TIM__Pulse = 200;//±È½Ï²¶»ñ1µÄÔ¤×°ÔØÖµ Õ¼¿Õ±È50% TIM_OC2Init(TIM2,&TIM_OCInitStruct); TIM_Cmd(TIM2,DISABLE);//ÏȲ»Ê¹ÄÜTIM2/****************TIM3ÔÙ´ÓģʽµÄÃÅ¿ØÄ£Ê½ÏµÄPWMÊä³öģʽ**************/ TIM__ClockDivision = TIM_CKD_DIV1; TIM__CounterMode = TIM_CounterMode_Down; TIM__Prescaler = 719;//Ô¤·ÖƵֵ£¬10us¼¼ÊõÒ»´Î TIM__Period = 200;//ÖØÔØÖµ TIM_TimeBaseInit(TIM3,&TIM_TimeBaseInitStruct);

TIM_SelectSlaveMode(TIM3, TIM_SlaveMode_Gated);//TIM3ΪÃÅ¿ØÄ£Ê½ TIM_SelectMasterSlaveMode(TIM3,TIM_MasterSlaveMode_Enable); TIM_SelectInputTrigger(TIM3,TIM_TS_ITR1);//ÄÚ²¿´ÓTIM2´¥·¢

TIM__OCMode = TIM_OCMode_PWM2;

TIM__OutputState = TIM_OutputState_Enable; TIM__OCPolarity = TIM_OCPolarity_High; TIM__Pulse = 100; //±È½Ï²¶»ñ1µÄÔ¤×°ÔØÖµ Õ¼¿Õ±È50% TIM_OC2Init(TIM3,&TIM_OCInitStruct); TIM_OC1Init(TIM3,&TIM_OCInitStruct);

59759759717817918 TIM_OC1Init(TIM3,&TIM_OCInitStruct); TIM_Cmd(TIM3,ENABLE);}void dir_init(void){ GPIO_InitTypeDef GPIO_InitStruct; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//ʹÄÜGPIOBµÄʱÖÓ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE,ENABLE);//ʹÄÜGPIOEµÄʱÖÓ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);//ʹÄÜGPIOCµÄʱÖÓ

GPIO__Mode=GPIO_Mode_Out_PP; //ÍÆÍìÊä³ö GPIO__Pin=GPIO_Pin_10; //PB10¶Ë¿ÚÅäÖà GPIO__Speed=GPIO_Speed_50MHz;//ËÙ¶È50MHz GPIO_Init(GPIOB,&GPIO_InitStruct); //³õʼ»¯GPIOB.10 GPIO_SetBits(GPIOB,GPIO_Pin_10); //ÉèÖÃPB10Êä³ö¸ß

GPIO__Mode=GPIO_Mode_Out_PP; //ÍÆÍìÊä³ö GPIO__Pin=GPIO_Pin_15; //PE15¶Ë¿ÚÅäÖà GPIO__Speed=GPIO_Speed_50MHz;//ËÙ¶È50MHz GPIO_Init(GPIOE,&GPIO_InitStruct); //³õʼ»¯GPIOE.15 GPIO_SetBits(GPIOE,GPIO_Pin_15); //ÉèÖÃPE15Êä³ö¸ß

GPIO__Mode=GPIO_Mode_Out_PP; //ÍÆÍìÊä³ö GPIO__Pin=GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8; //PC678¶Ë¿ÚÅäÖà GPIO__Speed=GPIO_Speed_50MHz;//ËÙ¶È50MHz GPIO_Init(GPIOC,&GPIO_InitStruct); //³õʼ»¯GPIOC.678 GPIO_SetBits(GPIOB,GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8); //ÉèÖÃPC678Êä³ö¸ß}void MOTOR_MODE(MOTOR_InitTypeDef* MOTOR_InitStruct){ DIR1 =MOTOR_InitStruct ->DIRL ; DIR2 =MOTOR_InitStruct ->DIRR ; MS1 =MOTOR_InitStruct ->MODE >> 2; MS2 =MOTOR_InitStruct ->MODE >> 1 & 0x01; MS3 =MOTOR_InitStruct ->MODE & 0x01;}/*Ò»Ã붨ʱ*/void TIM4_Config(void){ TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4,ENABLE); TIM_ClearITPendingBit(TIM4,TIM_IT_Update); TIM__Period = 1999; TIM__Prescaler = 35999; TIM__ClockDivision = TIM_CKD_DIV1; TIM__CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInit(TIM4,&TIM_TimeBaseStructure); TIM_ITConfig(TIM4,TIM_IT_Update,ENABLE); TIM_Cmd(TIM4,ENABLE);}void NVIC_Configa(void){ NVIC_InitTypeDef NVIC_InitStructure; NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0); NVIC__IRQChannel = TIM4_IRQn; NVIC__IRQChannelPreemptionPriority = 0; NVIC__IRQChannelSubPriority = 3; NVIC__IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure);