| #include "pwm.h" 
 /*******************************************************************************
 * º¯ Êý Ãû         : pwm_init
 * º¯Êý¹¦ÄÜ                   : IO¶Ë¿Ú¼°TIM3³õʼ»¯º¯Êý
 * Êä    Èë         : ÎÞ
 * Êä    ³ö         : ÎÞ
 *******************************************************************************/
 void pwm_init()
 {
 GPIO_InitTypeDef GPIO_InitStructure;   //ÉùÃ÷Ò»¸ö½á¹¹Ìå±äÁ¿£¬ÓÃÀ´³õʼ»¯GPIO
 
 TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;//ÉùÃ÷Ò»¸ö½á¹¹Ìå±äÁ¿£¬ÓÃÀ´³õʼ»¯¶¨Ê±Æ÷
 
 TIM_OCInitTypeDef TIM_OCInitStructure;//¸ù¾ÝTIM_OCInitStructÖÐÖ¸¶¨µÄ²ÎÊý³õʼ»¯ÍâÉèTIMx
 
 /* ¿ªÆôʱÖÓ */
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);//ledʱÖÓ
 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);//¶¨Ê±Æ÷3ʱÖÓ
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);//pwm¹Ü½Å¸´ÓÃʱÖÓ
 
 /*  ÅäÖÃGPIOµÄģʽºÍIO¿Ú */
 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_7;
 GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
 GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;//¸´ÓÃÍÆÍìÊä³ö£¨Êä³öpwmÒª²ÉÓø´ÓÃÍÆÍ죩
 GPIO_Init(GPIOC,&GPIO_InitStructure);
 
 
 //TIM3¶¨Ê±Æ÷³õʼ»¯
 TIM_TimeBaseInitStructure.TIM_Period = 900;           //²»·ÖƵ,PWM ƵÂÊ=72000/900=8Khz//ÉèÖÃ×Ô¶¯ÖØ×°ÔؼĴæÆ÷ÖÜÆÚµÄÖµ
 TIM_TimeBaseInitStructure.TIM_Prescaler = 0;//ÉèÖÃÓÃÀ´×÷ΪTIMxʱÖÓÆµÂÊÔ¤·ÖƵֵ£¬100Khz¼ÆÊýƵÂÊ
 TIM_TimeBaseInitStructure.TIM_ClockDivision = 0;//ÉèÖÃʱÖÓ·Ö¸î:TDTS = Tck_tim
 TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;        //TIMÏòÉϼÆÊýģʽ
 TIM_TimeBaseInit(TIM3, & TIM_TimeBaseInitStructure);
 
 GPIO_PinRemapConfig(GPIO_FullRemap_TIM3,ENABLE);//¸Ä±äÖ¸¶¨¹Ü½ÅµÄÓ³Éä        //pC7
 
 //PWM³õʼ»¯          //¸ù¾ÝTIM_OCInitStructÖÐÖ¸¶¨µÄ²ÎÊý³õʼ»¯ÍâÉèTIMx
 TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM1;//pwmģʽ
 TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable;//PWMÊä³öʹÄÜ
 TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_High;//Êä³ö¼«ÐÔ
 TIM_OC2Init(TIM3,&TIM_OCInitStructure);
 //×¢Òâ´Ë´¦³õʼ»¯Ê±TIM_OC2Init¶ø²»ÊÇTIM_OCInit£¬·ñÔò»á³ö´í¡£ÒòΪ¹Ì¼þ¿âµÄ°æ±¾²»Ò»Ñù¡£
 
 TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable);//ʹÄÜ»òÕßʧÄÜTIMxÔÚCCR2ÉϵÄÔ¤×°ÔØ¼Ä´æÆ÷
 
 TIM_Cmd(TIM3,ENABLE);//ʹÄÜ»òÕßʧÄÜTIMxÍâÉè
 }
 int main()
 {
 u32 ti=400;
 pwm_init();         //PWM³õʼ»¯
 
 
 TIM_SetCompare2(TIM3,ti);//½«tiÖµ·ÅÈëTIM_CCRxÀï
 while(1)
 {
 
 
 
 }
 
 
 
 }
 |