打印
[STM32F1]

写了一个输出pwm控制电机,但电机只转一次就没反应了

[复制链接]
784|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
请教大神,我模仿网上的程序写了一个输出一路pwm,示波器显示pwm输出正常。但控制电机时,电机只在程序刚烧进去的时候工作了一个周期吧。后面就没反应了。。
#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)
        {
       
       
       
        }



}
沙发
ghost2| | 2016-5-16 00:47 | 只看该作者
PWM正常说明软件问题不大,是电机干扰让MCU死机吧?上电路图

使用特权

评论回复
板凳
范寿铭| | 2016-5-16 10:32 | 只看该作者
做隔离了没?

使用特权

评论回复
地板
zyhsuzhouphc| | 2018-9-5 11:53 | 只看该作者
你好,能给我一个stm32F103系统带霍尔的方波控制代码吗?6步法即可。非常感谢。QQ:19952332

使用特权

评论回复
5
电子星辰| | 2018-9-5 14:53 | 只看该作者
你这是什么电机呢

使用特权

评论回复
6
598330983| | 2018-9-5 19:14 | 只看该作者
找到原因了吗

使用特权

评论回复
7
zhuomuniao110| | 2018-9-6 15:22 | 只看该作者
一堆乱码啊。输出神马波形吗

使用特权

评论回复
8
chenqiang10| | 2018-9-6 16:10 | 只看该作者
看下波形啊?是不是代码问题

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

27

主题

108

帖子

4

粉丝