[STM32F1] 程序刚烧进去的时候工作了一个周期

[复制链接]
583|11
 楼主| pengf 发表于 2020-5-19 22:04 | 显示全部楼层 |阅读模式
模仿网上的程序写了一个输出一路pwm,示波器显示pwm输出正常。但控制电机时,电机只在程序刚烧进去的时候工作了一个周期吧。后面就没反应了
liuzaiy 发表于 2020-5-19 22:07 | 显示全部楼层

楼主程序可以公开吗?贴程序看下吧,这么说看不出什么原因
 楼主| pengf 发表于 2020-5-19 22:10 | 显示全部楼层
#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)
        {
        
        
        
        }



}
yufe 发表于 2020-5-19 22:13 | 显示全部楼层
PWM正常说明软件问题不大,是电机干扰让MCU死机吧?上电路图
langgq 发表于 2020-5-19 22:18 | 显示全部楼层
做隔离了没?
zhanglli 发表于 2020-5-19 22:23 | 显示全部楼层
能给我一个stm32F103系统带霍尔的方波控制代码吗?6步法即可
huwr 发表于 2020-5-19 22:25 | 显示全部楼层
你这是什么电机呢
happy_10 发表于 2020-5-19 22:29 | 显示全部楼层
找到原因了吗
songqian17 发表于 2020-5-19 22:35 | 显示全部楼层
一堆乱码啊。输出神马波形吗
houcs 发表于 2020-5-19 22:38 | 显示全部楼层

看下波形啊?是不是代码问题
 楼主| pengf 发表于 2020-5-19 22:41 | 显示全部楼层

其实还是不大明白,我再琢磨琢磨吧,多谢了哈先
kcfoo1 发表于 2020-5-21 10:01 来自手机 | 显示全部楼层
只有一路pwm,难道是有刷电机?还是无刷用一路pwm控制?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

718

主题

10129

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部