با سلام خدمت تمامي مهندسين
من ميخواستم با استفاده از کتابخانه CMSIS و توسط ميکرو کنترلر STM32F107RCT6(64PIN) و با کامپايلر KEIL يه سروو موتورو درايور کنم
مجبور هستم که يه موج با فرکانس 1khz و با عرض پالس متقيير بين 2ms , 1ms توليد کنم .
ممنون ميشم اگر کسي کار کرده راهنماييم کنه .

TIM_OCInitTypeDef TIM_OCInitStructure;
TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
TIM_BDTRInitTypeDef TIM_BDTRInitStructure;
TIM_DeInit(TIM1);

TIM_TimeBaseInitStructure.TIM_Period = 0x0000;
TIM_TimeBaseInitStructure.TIM_Prescaler =0x0001;
TIM_TimeBaseInitStructure.TIM_ClockDivision=TIM_CK D_DIV4;
TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInitStructure.TIM_RepetitionCounter=EN ABLE;
TIM_TimeBaseInit(TIM1, &TIM_TimeBaseInitStructure);


TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM1;
TIM_OCInitStructure.TIM_OutputState=TIM_OutputStat e_Enable;
TIM_OCInitStructure.TIM_OutputNState=TIM_OutputNSt ate_Enable;
TIM_OCInitStructure.TIM_Pulse=0x0000;
TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_ Low;
TIM_OCInitStructure.TIM_OCNPolarity=TIM_OCNPolarit y_Low;
TIM_OCInitStructure.TIM_OCIdleState=TIM_OCIdleStat e_Set;
TIM_OCInitStructure.TIM_OCNIdleState=TIM_OCNIdleSt ate_Reset;
TIM_OC1Init(TIM1,&TIM_OCInitStructure);



TIM_BDTRInitStructure.TIM_OSSRState=TIM_OSSRState_ Enable;
TIM_BDTRInitStructure.TIM_OSSIState=TIM_OSSIState_ Enable;
TIM_BDTRInitStructure.TIM_LOCKLevel=TIM_LOCKLevel_ 1;
TIM_BDTRInitStructure.TIM_DeadTime=0x0001;
TIM_BDTRInitStructure.TIM_Break=TIM_Break_Disable;
TIM_BDTRInitStructure.TIM_BreakPolarity=TIM_BreakP olarity_High;
TIM_BDTRInitStructure.TIM_AutomaticOutput=TIM_Auto maticOutput_Enable;
TIM_BDTRConfig(TIM1,&TIM_BDTRInitStructure);

TIM_Cmd(TIM1 ,ENABLE);
TIM_CtrlPWMOutputs(TIM1,ENABLE);


مهندسين محترم اينارو هم نوشتم اما خوب خيلي کم ازش سر در ميارم