| 
  
 这个舵机应该是180度的来回转动,为什么只一次性转到底呢?  下面附上代码   #include "timer.h"#include"led.h"#include "delay.h" 
//STM32F103ZE核心板 
//定时器 驱动代码  
 
////////////////////////////////////////////////////////////////////////////////////通用定时器3中断初始化 
//这里时钟选择为APB1的2倍,而APB1为36M 
//arr:自动重装值。 
//psc:时钟预分频数 
//这里使用的是定时器3! 
void TIM3_PWM_Init(u16 arr,u16 psc) 
{ 
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; 
GPIO_InitTypeDef GPIO_InitStructure; 
TIM_OCInitTypeDef TIM_OCInitStruct; 
 
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_AFIO,ENABLE); 
RCC_APB2PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE); 
 
 
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; 
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; 
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; 
 
GPIO_Init(GPIOB,&GPIO_InitStructure); 
//RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE); 
GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3, ENABLE);  
 
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; 
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; 
TIM_TimeBaseStructure.TIM_Period = arr; 
TIM_TimeBaseStructure.TIM_Prescaler = psc; 
// TIM_TimeBaseStructure.TIM_RepetitionCounter = ; 
 
TIM_TimeBaseInit(TIM3,&TIM_TimeBaseStructure); 
 
// TIM_OCInitStruct.TIM_OCIdleState = ; 
TIM_OCInitStruct.TIM_OCMode = TIM_OCMode_PWM2; 
// TIM_OCInitStruct.TIM_OCNIdleState = ; 
// TIM_OCInitStruct.TIM_OCNPolarity = ; 
TIM_OCInitStruct.TIM_OCPolarity = TIM_OCPolarity_High; 
// TIM_OCInitStruct.TIM_OutputNState = ; 
TIM_OCInitStruct.TIM_OutputState = TIM_OutputState_Enable; 
// TIM_OCInitStruct.TIM_Pulse = ; 
 
TIM_OC2Init(TIM3,&TIM_OCInitStruct); 
 
TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable); 
TIM_Cmd(TIM3,ENABLE); 
} 
//定时器3中断服务程序 
void TIM3_IRQHandler(void) //TIM3中断 
{ 
if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET) //检查TIM3更新中断发生与否 
{ 
TIM_ClearITPendingBit(TIM3, TIM_IT_Update ); //清除TIMx更新中断标志  
LED1=!LED1; 
LED0 = !LED0; 
 
} 
}  
 |