找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2829|回复: 1
打印 上一主题 下一主题
收起左侧

关于可变式PWM输出问题。

[复制链接]
跳转到指定楼层
楼主
20黑币
我要用STM32作svpwm,所以先写了一个小程序输出每个PWM波形都不一样的PWM波形。软件仿真结果如图:
         但是烧到片子里后用示波器现实的波形却是这样的,就像图片PWM1-PWM5一样的波形连续动态刷新。
         
   
         代码如下:
void TIM_Configuration(void)
{
    TIM_TimeBaseInitTypeDef TTypeDef;
  TIM_OCInitTypeDef TIM_OCInitStructure;   
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1,ENABLE);               
  TIM_DeInit(TIM1);
  TTypeDef.TIM_Period=60000;                                                  
  TTypeDef.TIM_Prescaler=0;                                       
  TTypeDef.TIM_ClockDivision=TIM_CKD_DIV1;                                               
  TTypeDef.TIM_CounterMode=TIM_CounterMode_CenterAligned2;                              
  TIM_TimeBaseInit(TIM1 , &TTypeDef);
  TIM_ARRPreloadConfig(TIM1 , ENABLE);

   TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2;
   TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
   TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Enable;
   TIM_OCInitStructure.TIM_Pulse = 0;
   TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;//TIM1_OCPolarity_High;
   TIM_OCInitStructure.TIM_OCNPolarity = TIM_OCPolarity_High;
   TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Reset;//TIM1_OCIdleState_Set;
   TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCIdleState_Reset;
   TIM_OC1Init(TIM1 , &TIM_OCInitStructure);  
   TIM_OC1PreloadConfig(TIM1 , TIM_OCPreload_Enable);
   TIM_Cmd(TIM1 , ENABLE);     
   TIM_CtrlPWMOutputs(TIM1 , ENABLE);
  TIM1->DIER=0x0001;
}

void TIM1_UP_IRQHandler(void)
{
    int x;
    if (TIM_GetITStatus(TIM1, TIM_IT_Update)!= RESET)
    {
      //TIM_ClearITPendingBit(TIM3, TIM_IT_CC1);
            TIM1->SR=0x0000;
      if (ClkCount==17)
            {
                ClkCount=0;
            }
            else
            {
                ClkCount++;
            }
            if (ClkCount%2!=0)
            {
            x=3000*ClkCount;
            TIM_SetCompare1(TIM1 , x);
            }               
    }
}
   

PWM.png (38.88 KB, 下载次数: 86)

软件仿真PWM

软件仿真PWM

PWM1.jpg (81.02 KB, 下载次数: 95)

PWM1

PWM1

PWM2.jpg (79.67 KB, 下载次数: 74)

PWM2

PWM2

PWM3.jpg (80.14 KB, 下载次数: 76)

PWM3

PWM3

PWM4.jpg (79.84 KB, 下载次数: 76)

PWM4

PWM4

PWM5.jpg (78.83 KB, 下载次数: 75)

PWM5

PWM5
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:96682 发表于 2016-4-29 23:14 | 只看该作者
单片机输出的 PWM 都是方波。只能调频率及占空比,要达到正弦波只能通过整形电路来实现。

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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