STM32F1 TIM1 输出PWM 时有时无的输出问题

最近有一个项目,需要使用到PWM输出电机速度,开发过程中遇到一个PWM输出时有时无的现象,明明已经配置TIM1输出PWM输出,单独测试也有PWM输出了,但项目大了之后,突然发现明明应该启动的电机不启动,莫名其妙的问题, 然后我查找代码,分析,逻辑上应该是没问题,使用仿真+示波器检测,发现本应该输出的,却没有输出PWM,仿真看寄存器值,确实已经赋值了.

        搜索网上的经验,发现是我的初始化有问题,TIM1是高级定时器,功能多样,初始时没有正确初始,就会出现莫名其妙的问题

正确的PWM初始化有如下变量:

    TIM_OCInitTypeDef                 TIM_OCInitStruct;
    TIM_OCInitStruct.TIM_OCMode       = TIM_OCMode_PWM2;           //脉冲宽度调制模式1
    //输出极性
    TIM_OCInitStruct.TIM_OCPolarity   = TIM_OCPolarity_High;       //输出极性
    TIM_OCInitStruct.TIM_OCIdleState  = TIM_OCIdleState_Set;       //在空闲时输出
    TIM_OCInitStruct.TIM_OutputState  = TIM_OutputState_Enable;    //PWM输出使能(正向通道)
    TIM_OCInitStruct.TIM_OutputNState = TIM_OutputNState_Disable;  //PWM输出失能(互补通道)
    TIM_OCInitStruct.TIM_OCNPolarity  = TIM_OCNPolarity_High;   //必须
    TIM_OCInitStruct.TIM_OCNIdleState = TIM_OCIdleState_Reset;  //必须
    TIM_OCInitStruct.TIM_Pulse        = 0;                         //捕获比较的脉冲值
    TIM_OC1Init(TIM1,&TIM_OCInitStruct);

感谢ViolentEagle博客​​​​​​​

你可能感兴趣的:(经验,stm32,单片机,嵌入式硬件)