3869|0

5305

帖子

453

TA的资源

五彩晶圆(高级)

楼主
 

cc2640r2f的project_zero增加pwm输出给外围电路驱动小电机 [复制链接]

cc2640r2f的project_zero增加pwm输出给外围电路驱动小电机功能:cc2640r2f输出4路可控PWM,2路信号可以驱动一个小电机正反转的信号

1、端口初始化
CC2640R2_PWMPIN0  | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
    CC2640R2_PWMPIN1 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
    CC2640R2_PWMPIN2 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
    CC2640R2_PWMPIN3 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
2PWM初始化
PWM_Params params;

  /* Call driver init functions. */
  PWM_init();

  PWM_Params_init(¶ms);
  params.dutyUnits = PWM_DUTY_US;
  params.dutyValue = 0;
  params.periodUnits = PWM_PERIOD_US;
  params.periodValue = 3000;
  params.idleLevel=PWM_IDLE_LOW;
//***********************************************
  pwm1 = PWM_open(Board_PWM0, ¶ms);
    if (pwm1 == NULL) {
        /* Board_PWM0 did not open */
        while (1);
    }

    PWM_start(pwm1);

    if (Board_PWM1 != Board_PWM0) {
        pwm2 = PWM_open(Board_PWM1, ¶ms);

        if (pwm2 == NULL) {
            /* Board_PWM0 did not open */
            while (1);
        }

        PWM_start(pwm2);
    }
//**********************************************
    pwm3 = PWM_open(Board_PWM2, ¶ms);
      if (pwm3 == NULL) {
          /* Board_PWM3 did not open */
          while (1);
      }

      PWM_start(pwm3);

      if (Board_PWM3 != Board_PWM2) {
          pwm4 = PWM_open(Board_PWM3, ¶ms);

          if (pwm4 == NULL) {
              /* Board_PWM0 did not open */
              while (1);
          }

          PWM_start(pwm4);
      }

3、改变占空比输出
void set_Lmotors(signed int m1)
{
    if(m1>=0)
    {
        PWM_setDuty(pwm1, m1);
        if (pwm2)
        {PWM_setDuty(pwm2, 0);}
    }
    else
    {
        m1= -m1;
        PWM_setDuty(pwm1, 0);
        if (pwm2)
        {PWM_setDuty(pwm2, m1);}
    }
}

void set_Rmotors(signed int m2)
{
    if(m2>=0)
    {
        PWM_setDuty(pwm3, m2);
        if (pwm4)
        {PWM_setDuty(pwm4, 0);}
    }
    else
    {
        m2= -m2;
        PWM_setDuty(pwm3, 0);
        if (pwm4)
        {PWM_setDuty(pwm4, m2);}
    }
}



此内容由EEWORLD论坛网友蓝雨夜原创,如需转载或用于商业用途需征得作者同意并注明出处


此帖出自无线连接论坛
点赞 关注
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表