OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2300|回复: 4

pwm程序问题

[复制链接]

25

主题

101

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
224
金钱
224
注册时间
2015-9-5
在线时间
48 小时
发表于 2016-3-16 21:15:51 | 显示全部楼层 |阅读模式
1金钱
最近在做一个需要pwm输出的电机,代码如下,使用外部中断设置PE.2和PE.3分别是输入的加速减速信号,用TIM2的CH3通道输出pwm信号,但是为什么没有输出信号?小弟新手,是在找不出问题在哪了。。。求大神助攻。
代码如下:
#include <stm32f10x.h>
#include <delay.h> //&#206;&#170;&#202;&#178;&#195;&#180;&#210;&#170;°ü&#186;&#172;&#205;·&#206;&#196;&#188;&#254;&#196;&#216;&#163;&#191;&#210;ò&#206;&#170;&#192;&#239;&#195;&#230;&#211;&#208;&#210;&#170;&#211;&#195;&#181;&#196;&#186;&#175;&#202;&#253;&#201;ê&#195;÷&#163;&#172;&#186;&#175;&#202;&#253;&#206;&#170;&#202;&#178;&#195;&#180;&#210;&#170;&#201;ê&#195;÷&#196;&#216;&#163;&#191;&#210;ò&#206;&#170;&#210;&#170;·&#214;&#197;&#228;&#196;&#218;&#180;&#230;&#181;&#165;&#212;&#170;°&#161;&#161;&#163;&#161;&#163;
#include <sys.h>   //PB&#210;&#170;&#211;&#195;&#161;&#162Bout(x)&#161;&#162Bin(x)&#161;&#162;&#211;&#195;&#198;&#240;&#192;&#180;&#187;á·&#199;&#179;&#163;·&#189;±&#227;
#include <stdio.h>

void RCC_Configuration(void);
void Pwm_Configuration(void);
void NVIC_Configuration(void);
void HellIo_Configuration(void);
void USART1_Configuration(void);
s16 speed=2;//speed&#181;&#181;&#181;&#196;&#214;&#181;&#163;&#172;speed=(0,1,2,3,4,5)&#179;&#245;&#202;&#188;&#214;&#181;&#206;&#170;2
s16 com=720;
s16 comnow=900;

int main()
{
    s16 num=0;//&#178;&#238;&#214;&#181;
    while(1){
        switch(speed){
            case 0:com=900;
            break;
            case 1:com=720;
            break;
            case 2:com=540;
            break;
            case 3:com=360;
            break;
            case 4:com=180;
            break;
            case 5:com=0;
            break;
        }
        num = com-comnow;
        if(num==0){
            comnow = comnow;
        }else if(num>0){
            comnow = comnow + 45;
        }else {
            comnow = comnow - 45;
        }
    TIM_SetCompare3(TIM2,comnow);   
   
    }
   
   
   
}




void RCC_Configuration(void)
{
    /* SYSCLK, HCLK, PCLK2 and PCLK1 configuration -----------------------------*/   
    RCC_DeInit();
    //RCC_HSEConfig(RCC_HSE_ON);
    //HSEStartUpStatus = RCC_WaitForHSEStartUp();

    /* Enable Prefetch Buffer */
    FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);//&#202;&#185;&#196;&#220;&#187;&#186;&#179;&#229;
    /* Flash 2 wait state */
    FLASH_SetLatency(FLASH_Latency_2);//cup&#181;&#196;&#212;&#203;&#208;&#208;&#198;&#181;&#194;&#202;&#184;&#223;&#163;&#172;&#182;&#248;&#196;&#218;&#178;&#191;flash&#181;&#196;&#212;&#203;&#208;&#208;&#198;&#181;&#194;&#202;&#181;&#205;&#163;&#172;&#203;ù&#210;&#212;cpu&#210;&#170;&#180;&#211;flash&#214;&#208;&#200;&#161;&#214;&#184;&#193;&#238;&#181;±&#200;&#187;&#210;&#170;&#211;&#208;&#184;&#246;&#181;&#200;&#180;&#253;&#181;&#196;&#202;±&#188;&#228;&#193;&#203;&#161;&#163;
      

    /* HCLK = SYSCLK */
    RCC_HCLKConfig(RCC_SYSCLK_Div1);
  
    /* PCLK2 = HCLK */
    RCC_PCLK2Config(RCC_HCLK_Div1);

    /* PCLK1 = HCLK/2 */
    RCC_PCLK1Config(RCC_HCLK_Div2);
   
    /* PLLCLK = 8MHz * 9 = 72 MHz */
    RCC_PLLConfig(RCC_PLLSource_HSI_Div2, RCC_PLLMul_16);

    /* Enable PLL */
    RCC_PLLCmd(ENABLE);//±&#182;&#198;&#181;&#202;&#185;&#196;&#220;
    while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)
    {
    }
    RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
    while(RCC_GetSYSCLKSource() != 0x08)
    {
    }

    /*else&#213;&#226;&#182;&#206;&#180;ú&#194;&#235;×&#246;&#181;&#195;&#186;&#220;&#214;&#220;&#181;&#189;&#163;&#172;&#191;&#201;&#210;&#212;&#188;&#211;&#184;&#246;·&#228;&#195;ù&#198;÷&#204;á&#202;&#190;&#202;&#178;&#195;&#180;&#181;&#196;*/
   
    //&#210;&#212;&#186;ó&#191;&#170;&#198;&#244;&#205;&#226;&#201;è&#202;±&#214;&#211;&#190;&#205;&#212;&#218;&#213;&#226;&#191;é&#191;&#170;&#163;&#161;&#163;&#161;&#163;&#161;
    //&#191;&#170;&#198;&#244;GPIO&#202;±&#214;&#211;
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);
   
    //RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
   
}







void NVIC_Configuration(void)
{
    EXTI_InitTypeDef EXTI_InitStructure;
    NVIC_InitTypeDef NVIC_InitStructure;

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);//&#205;&#226;&#178;&#191;&#214;&#208;&#182;&#207;&#163;&#172;&#208;è&#210;&#170;&#202;&#185;&#196;&#220;AFIO&#202;±&#214;&#211;

    //GPIOE.2 &#214;&#208;&#182;&#207;&#207;&#223;&#210;&#212;&#188;°&#214;&#208;&#182;&#207;&#179;&#245;&#202;&#188;&#187;&#175;&#197;&#228;&#214;&#195;
      GPIO_EXTILineConfig(GPIO_PortSourceGPIOE,GPIO_PinSource2);

      EXTI_InitStructure.EXTI_Line=EXTI_Line2;
      EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;   
      EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;//&#201;&#207;&#201;&#253;&#209;&#216;&#180;&#165;·&#162;
      EXTI_InitStructure.EXTI_LineCmd = ENABLE;
      EXTI_Init(&EXTI_InitStructure);         //&#184;ù&#190;&#221;EXTI_InitStruct&#214;&#208;&#214;&#184;&#182;¨&#181;&#196;&#178;&#206;&#202;&#253;&#179;&#245;&#202;&#188;&#187;&#175;&#205;&#226;&#201;èEXTI&#188;&#196;&#180;&#230;&#198;÷
   
    //GPIOE.3 &#214;&#208;&#182;&#207;&#207;&#223;&#210;&#212;&#188;°&#214;&#208;&#182;&#207;&#179;&#245;&#202;&#188;&#187;&#175;&#197;&#228;&#214;&#195;
      GPIO_EXTILineConfig(GPIO_PortSourceGPIOE,GPIO_PinSource3);

      EXTI_InitStructure.EXTI_Line=EXTI_Line3;
      EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;   
      EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;//&#201;&#207;&#201;&#253;&#209;&#216;&#180;&#165;·&#162;
      EXTI_InitStructure.EXTI_LineCmd = ENABLE;
      EXTI_Init(&EXTI_InitStructure);         //&#184;ù&#190;&#221;EXTI_InitStruct&#214;&#208;&#214;&#184;&#182;¨&#181;&#196;&#178;&#206;&#202;&#253;&#179;&#245;&#202;&#188;&#187;&#175;&#205;&#226;&#201;èEXTI&#188;&#196;&#180;&#230;&#198;÷
   
   
      NVIC_InitStructure.NVIC_IRQChannel = EXTI2_IRQn;            //&#202;&#185;&#196;&#220;°&#180;&#188;ü&#203;ù&#212;&#218;&#181;&#196;&#205;&#226;&#178;&#191;&#214;&#208;&#182;&#207;&#205;¨&#181;&#192;
      NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x02;    //&#199;&#192;&#213;&#188;&#211;&#197;&#207;&#200;&#188;&#182;2
      NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x01;                    //×&#211;&#211;&#197;&#207;&#200;&#188;&#182;1
      NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;                                //&#202;&#185;&#196;&#220;&#205;&#226;&#178;&#191;&#214;&#208;&#182;&#207;&#205;¨&#181;&#192;
      NVIC_Init(&NVIC_InitStructure);        //&#184;ù&#190;&#221;NVIC_InitStruct&#214;&#208;&#214;&#184;&#182;¨&#181;&#196;&#178;&#206;&#202;&#253;&#179;&#245;&#202;&#188;&#187;&#175;&#205;&#226;&#201;èNVIC&#188;&#196;&#180;&#230;&#198;÷

        NVIC_InitStructure.NVIC_IRQChannel = EXTI3_IRQn;            //&#202;&#185;&#196;&#220;°&#180;&#188;ü&#203;ù&#212;&#218;&#181;&#196;&#205;&#226;&#178;&#191;&#214;&#208;&#182;&#207;&#205;¨&#181;&#192;
      NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x02;    //&#199;&#192;&#213;&#188;&#211;&#197;&#207;&#200;&#188;&#182;2
      NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x01;                    //×&#211;&#211;&#197;&#207;&#200;&#188;&#182;1
      NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;                                //&#202;&#185;&#196;&#220;&#205;&#226;&#178;&#191;&#214;&#208;&#182;&#207;&#205;¨&#181;&#192;
      NVIC_Init(&NVIC_InitStructure);        //&#184;ù&#190;&#221;NVIC_InitStruct&#214;&#208;&#214;&#184;&#182;¨&#181;&#196;&#178;&#206;&#202;&#253;&#179;&#245;&#202;&#188;&#187;&#175;&#205;&#226;&#201;èNVIC&#188;&#196;&#180;&#230;&#198;÷

}

void EXTI2_IRQHandler(void)//&#202;&#213;&#181;&#189;&#188;&#211;&#203;&#217;&#208;&#197;&#186;&#197;&#186;ó&#163;&#172;&#189;&#248;&#208;&#208;&#180;&#166;&#192;í&#163;&#172;&#206;&#180;&#208;&#180;
{
    delay_ms(10);    //&#207;&#251;&#182;&#182;
    if(1<=speed<=5){
            speed++;
    }

   
}
void EXTI3_IRQHandler(void) //&#202;&#213;&#181;&#189;&#188;&#245;&#203;&#217;&#208;&#197;&#186;&#197;&#186;ó&#163;&#172;&#189;&#248;&#208;&#208;&#180;&#166;&#192;í&#163;&#172;&#206;&#180;&#208;&#180;
{
    delay_ms(10);    //&#207;&#251;&#182;&#182;
        if(1<=speed<=5){
            speed--;
    }
}






void HellIo_Configuration(void)
{
    GPIO_InitTypeDef GPIO_InitStructure;

     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//&#202;&#185;&#196;&#220ORTB&#202;±&#214;&#211;

    GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);//&#185;&#216;±&#213;jtag&#163;&#172;&#202;&#185;&#196;&#220;SWD&#163;&#172;&#191;&#201;&#210;&#212;&#211;&#195;SWD&#196;&#163;&#202;&#189;&#181;÷&#202;&#212;
   
    GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_2;//PA15
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; //&#201;è&#214;&#195;&#179;&#201;&#201;&#207;&#192;&#173;&#202;&#228;&#200;&#235;
     GPIO_Init(GPIOE, &GPIO_InitStructure);//&#179;&#245;&#202;&#188;&#187;&#175;GPIOE2
   
    GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_3;//PA15
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; //&#201;è&#214;&#195;&#179;&#201;&#201;&#207;&#192;&#173;&#202;&#228;&#200;&#235;
     GPIO_Init(GPIOE, &GPIO_InitStructure);//&#179;&#245;&#202;&#188;&#187;&#175;GPIOE3
}


//num:&#212;¤×°&#212;&#216;&#214;&#181;&#163;&#172;fpz&#163;&#186;TIMx·&#214;&#198;&#181;&#214;&#181;1~65535
void Pwm_Configuration(void)
{
     GPIO_InitTypeDef GPIO_InitStructure;

      RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//&#202;&#185;&#196;&#220ORTA,PORTC&#202;±&#214;&#211;

   
   
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOA, &GPIO_InitStructure);
//PIO_SetBits(GPIOA,GPIO_Pin_8); //PA.0 &#202;&#228;&#179;&#246;&#184;&#223;
   
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
    GPIO_Init(GPIOA, &GPIO_InitStructure);
//GPIO_SetBits(GPIOA,GPIO_Pin_8); //PA.1 &#202;&#228;&#179;&#246;&#184;&#223;   
   
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
    GPIO_Init(GPIOA, &GPIO_InitStructure);
//    GPIO_SetBits(GPIOA,GPIO_Pin_8); //PA.2 &#202;&#228;&#179;&#246;&#184;&#223;
   
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
    GPIO_Init(GPIOA, &GPIO_InitStructure);
//    GPIO_SetBits(GPIOA,GPIO_Pin_8); //PA.3 &#202;&#228;&#179;&#246;&#184;&#223;
   
    //GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
    //GPIO_Init(GPIOA, &GPIO_InitStructure);
//    GPIO_SetBits(GPIOA,GPIO_Pin_8); //PA.4 &#202;&#228;&#179;&#246;&#184;&#223;
   
    //GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
    //GPIO_Init(GPIOA, &GPIO_InitStructure);
//    GPIO_SetBits(GPIOA,GPIO_Pin_8); //PA.5 &#202;&#228;&#179;&#246;&#184;&#223;
   
    //GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
    //GPIO_Init(GPIOA, &GPIO_InitStructure);
//    GPIO_SetBits(GPIOA,GPIO_Pin_8); //PA.6 &#202;&#228;&#179;&#246;&#184;&#223;
   
    //GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
    //GPIO_Init(GPIOA, &GPIO_InitStructure);
//    GPIO_SetBits(GPIOA,GPIO_Pin_8); //PA.7 &#202;&#228;&#179;&#246;&#184;&#223;


  TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
    TIM_OCInitTypeDef  TIM_OCInitStructure;
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);

    TIM_TimeBaseStructure.TIM_Period = 900; //&#201;è&#214;&#195;&#212;&#218;&#207;&#194;&#210;&#187;&#184;&#246;&#184;ü&#208;&#194;&#202;&#194;&#188;&#254;×°&#200;&#235;&#187;&#238;&#182;&#175;&#181;&#196;×&#212;&#182;&#175;&#214;&#216;×°&#212;&#216;&#188;&#196;&#180;&#230;&#198;÷&#214;&#220;&#198;&#218;&#181;&#196;&#214;&#181;    //&#178;&#206;&#202;&#253;±&#216;&#208;&#235;&#202;&#199;0x0000 and 0xFFFF&#163;&#172;&#161;&#190;&#188;&#198;&#202;&#253;&#198;÷&#210;&#187;&#184;&#246;&#214;&#220;&#198;&#218;&#181;&#196;&#188;&#198;&#202;&#253;×&#220;&#202;&#253;&#161;&#191;
    TIM_TimeBaseStructure.TIM_Prescaler =0; //&#201;è&#214;&#195;&#211;&#195;&#192;&#180;×÷&#206;&#170;TIMx&#202;±&#214;&#211;&#198;&#181;&#194;&#202;&#179;&#253;&#202;&#253;&#181;&#196;&#212;¤·&#214;&#198;&#181;&#214;&#181;  &#178;&#187;·&#214;&#198;&#181;&#161;&#190;&#213;&#226;&#208;&#169;&#181;&#196;&#181;÷&#189;&#218;&#182;&#188;&#187;á&#211;°&#207;ì&#181;&#189;×&#238;&#186;ó&#181;&#196;pwm&#178;¨&#208;&#206;&#163;&#161;&#163;&#161;&#163;&#161;&#161;&#191;&#161;&#190;·&#214;&#198;&#181;&#214;&#220;&#198;&#218;±&#228;&#179;¤&#161;&#162;±&#182;&#198;&#181;&#214;&#220;&#198;&#218;±&#228;&#182;&#204;&#161;&#191;
    TIM_TimeBaseStructure.TIM_ClockDivision = 0; //&#201;è&#214;&#195;&#202;±&#214;&#211;·&#214;&#184;&#238;:TDTS = Tck_tim        &#161;&#190;&#191;&#180;&#198;&#240;&#192;&#180;&#178;&#162;&#195;&#187;&#202;&#178;&#195;&#180;&#196;&#241;&#211;&#195;&#163;&#161;&#163;&#161;&#161;&#191;
    TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //TIM&#207;ò&#201;&#207;&#188;&#198;&#202;&#253;&#196;&#163;&#202;&#189;  

    TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure); //&#184;ù&#190;&#221;TIM_TimeBaseInitStruct&#214;&#208;&#214;&#184;&#182;¨&#181;&#196;&#178;&#206;&#202;&#253;&#179;&#245;&#202;&#188;&#187;&#175;TIMx&#181;&#196;&#202;±&#188;&#228;&#187;ù&#202;&#253;&#181;&#165;&#206;&#187;&#161;&#190;&#213;&#230;&#213;&#253;&#198;&#240;×÷&#211;&#195;&#181;&#196;&#179;&#245;&#202;&#188;&#187;&#175;&#163;&#161;&#163;&#161;&#202;±&#187;ù&#181;&#165;&#212;&#170;&#163;&#161;&#163;&#161;&#163;&#161;&#161;&#191;

  /* Output Compare Active Mode configuration: Channel1 */
    TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2; //&#209;&#161;&#212;&#241;&#182;¨&#202;±&#198;÷&#196;&#163;&#202;&#189;:TIM&#194;&#246;&#179;&#229;&#191;í&#182;&#200;&#181;÷&#214;&#198;&#196;&#163;&#202;&#189;2
    TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //±&#200;&#189;&#207;&#202;&#228;&#179;&#246;&#202;&#185;&#196;&#220;
    TIM_OCInitStructure.TIM_Pulse = 0; //&#201;è&#214;&#195;&#180;&#253;×°&#200;&#235;&#178;&#182;&#187;&#241;±&#200;&#189;&#207;&#188;&#196;&#180;&#230;&#198;÷&#181;&#196;&#194;&#246;&#179;&#229;&#214;&#181;
    TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low; //&#202;&#228;&#179;&#246;&#188;&#171;&#208;&#212;:TIM&#202;&#228;&#179;&#246;±&#200;&#189;&#207;&#188;&#171;&#208;&#212;&#181;&#205;
   
    TIM_OC1Init(TIM2, &TIM_OCInitStructure);  //&#184;ù&#190;&#221;TIM_OCInitStruct&#214;&#208;&#214;&#184;&#182;¨&#181;&#196;&#178;&#206;&#202;&#253;&#179;&#245;&#202;&#188;&#187;&#175;&#205;&#226;&#201;èTIMx    &#161;&#190;TIM_OC3Init&#203;&#181;&#195;÷&#209;&#161;&#212;&#241;&#181;&#196;&#202;&#199;channel3&#161;&#191;&#205;¨&#181;&#192;1
  TIM_OC2Init(TIM2, &TIM_OCInitStructure);  //&#184;ù&#190;&#221;TIM_OCInitStruct&#214;&#208;&#214;&#184;&#182;¨&#181;&#196;&#178;&#206;&#202;&#253;&#179;&#245;&#202;&#188;&#187;&#175;&#205;&#226;&#201;èTIMx    &#161;&#190;TIM_OC3Init&#203;&#181;&#195;÷&#209;&#161;&#212;&#241;&#181;&#196;&#202;&#199;channel3&#161;&#191;&#205;¨&#181;&#192;2
  TIM_OC3Init(TIM2, &TIM_OCInitStructure);  //&#184;ù&#190;&#221;TIM_OCInitStruct&#214;&#208;&#214;&#184;&#182;¨&#181;&#196;&#178;&#206;&#202;&#253;&#179;&#245;&#202;&#188;&#187;&#175;&#205;&#226;&#201;èTIMx    &#161;&#190;TIM_OC3Init&#203;&#181;&#195;÷&#209;&#161;&#212;&#241;&#181;&#196;&#202;&#199;channel3&#161;&#191;&#205;¨&#181;&#192;3
  TIM_OC4Init(TIM2, &TIM_OCInitStructure);  //&#184;ù&#190;&#221;TIM_OCInitStruct&#214;&#208;&#214;&#184;&#182;¨&#181;&#196;&#178;&#206;&#202;&#253;&#179;&#245;&#202;&#188;&#187;&#175;&#205;&#226;&#201;èTIMx    &#161;&#190;TIM_OC3Init&#203;&#181;&#195;÷&#209;&#161;&#212;&#241;&#181;&#196;&#202;&#199;channel3&#161;&#191;&#205;¨&#181;&#192;4

  TIM_OC1PreloadConfig(TIM2, TIM_OCPreload_Enable);  //&#202;&#185;&#196;&#220;TIMx&#212;&#218;CCR3&#201;&#207;&#181;&#196;&#212;¤×°&#212;&#216;&#188;&#196;&#180;&#230;&#198;÷&#161;&#190;&#212;¤×°&#212;&#216;&#163;&#161;&#163;&#161;&#161;&#191;
    TIM_OC2PreloadConfig(TIM2, TIM_OCPreload_Enable);//
    TIM_OC3PreloadConfig(TIM2, TIM_OCPreload_Enable);   
    TIM_OC4PreloadConfig(TIM2, TIM_OCPreload_Enable);   

    TIM_ARRPreloadConfig(TIM2, ENABLE); //&#202;&#185;&#196;&#220;TIMx&#212;&#218;ARR&#201;&#207;&#181;&#196;&#212;¤×°&#212;&#216;&#188;&#196;&#180;&#230;&#198;÷&#161;&#190;&#212;¤×°&#212;&#216;&#188;&#196;&#180;&#230;&#198;÷&#186;&#205;&#211;°×&#211;&#188;&#196;&#180;&#230;&#198;÷&#207;&#235;&#207;à&#205;¨&#191;
   
    TIM_Cmd(TIM2, ENABLE);  //&#202;&#185;&#196;&#220;TIM1


}






正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

9

帖子

0

精华

新手上路

积分
28
金钱
28
注册时间
2016-1-19
在线时间
9 小时
发表于 2016-3-16 21:54:31 | 显示全部楼层
作为输出比较通道的GPIO要配置为复用推挽输出
回复

使用道具 举报

25

主题

101

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
224
金钱
224
注册时间
2015-9-5
在线时间
48 小时
 楼主| 发表于 2016-3-16 22:09:50 | 显示全部楼层
旗威 发表于 2016-3-16 21:54
作为输出比较通道的GPIO要配置为复用推挽输出

那大神你看看还有其他的问题么?
回复

使用道具 举报

0

主题

9

帖子

0

精华

新手上路

积分
28
金钱
28
注册时间
2016-1-19
在线时间
9 小时
发表于 2016-3-16 22:14:07 | 显示全部楼层
Qlm 发表于 2016-3-16 22:09
那大神你看看还有其他的问题么?

你把定时器时基的结构体定义在了可执行函数语句之后,编译的时候没有报错?
回复

使用道具 举报

25

主题

101

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
224
金钱
224
注册时间
2015-9-5
在线时间
48 小时
 楼主| 发表于 2016-3-16 22:29:44 | 显示全部楼层
旗威 发表于 2016-3-16 22:14
你把定时器时基的结构体定义在了可执行函数语句之后,编译的时候没有报错?

这个代码里改了,这个copy的忘了改了。。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-19 23:39

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表