打印
[其他]

cc2640r2f的project_zero增加pwm输出给外围电路驱动小电机

[复制链接]
25506|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
elephant00|  楼主 | 2020-12-7 15:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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);}
    }
}

使用特权

评论回复

相关帖子

沙发
aoyi| | 2021-1-4 09:35 | 只看该作者
要是能有详细注解就更好了

使用特权

评论回复
板凳
drer| | 2021-1-4 09:36 | 只看该作者
可以驱动的电机的功率能达到多大啊

使用特权

评论回复
地板
随风而去吧| | 2021-4-3 11:19 | 只看该作者
很棒棒哦,学习学习

使用特权

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

本版积分规则

914

主题

2366

帖子

4

粉丝