RT-Thread(RTT)使用PWM设备驱动2212电机

前言

基于RTT的PWM设备框架下,输出PWM波,利用Simonk电调驱动2212电机
在这里插入图片描述

一、新建工程

在这里插入图片描述

二、打开CubeMX

在这里插入图片描述

三、配置外部高速晶振为时钟输入

在这里插入图片描述

四、配置调试下载接口

在这里插入图片描述

五、打开pwm输出通道,我这里用到的是定时器三的CH1

在这里插入图片描述

六、创建工程的时候默认使用了串口一,所以串口一也打开。

在这里插入图片描述

七、配置时钟,一般直接拉满

在这里插入图片描述

八、生成代码

在这里插入图片描述

九、打开定时器和PWM设备驱动程序

s

十、打开定时器三PWM通道1宏定义

在这里插入图片描述

十一、打开定时器三宏定义

在这里插入图片描述

十二、打开定时器模块宏定义

在这里插入图片描述

十三、复制cubemx文件夹下的main.c中生成的这段代码,粘贴到board.c末尾

在这里插入图片描述
在这里插入图片描述

十四、复制cubemx生成的这两段代码,粘贴到board.c的末尾

在这里插入图片描述
在这里插入图片描述

十五、编译报错

在这里插入图片描述

十六、在board.c文件前面写入如下代码,外部定义htim3

在这里插入图片描述

十七、再编译,如下报错

在这里插入图片描述

十八、重定义了,将这两段代码进行注释

在这里插入图片描述

十九、再编译,报错解决

在这里插入图片描述

二十、在主函数写入如下代码

/*
 * Copyright (c) 2006-2024, RT-Thread Development Team
 *
 * SPDX-License-Identifier: Apache-2.0
 *
 * Change Logs:
 * Date           Author       Notes
 * 2024-01-25     RT-Thread    first version
 */

#include <rtthread.h>

#include <rtdbg.h>
#include <board.h>
#include <rtdevice.h>

#define PWM_DEV_NAME "pwm3"
#define PWM_DEV_CHANNEL 1


struct rt_device_pwm *pwm_dev;  //pwm设备句柄
rt_uint32_t period = 20000000;    //单位us   向左6位,变毫秒      20ms
rt_uint32_t pulse = 1000000;

rt_err_t ret = RT_EOK; //返回值校验

int main(void)
{

    /* 查找pwm设备 */
    pwm_dev = (struct rt_device_pwm *)rt_device_find(PWM_DEV_NAME);
    if (pwm_dev == RT_NULL)
    {
        rt_kprintf("pwm sample run failed! can't find %s device!\n", PWM_DEV_NAME);
        return RT_ERROR;
    }
    /* 设置PWM周期和脉冲宽度默认值 */
    rt_pwm_set(pwm_dev, PWM_DEV_CHANNEL, period, pulse);

    /* 使能设备 */
    rt_pwm_enable(pwm_dev, PWM_DEV_CHANNEL);


    return RT_EOK;
}

二十一、下载程序,周期20ms,占空比1ms,波形正确

在这里插入图片描述

二十二、修改一下占空比,下载程序

在这里插入图片描述

二十三、电机起转,波形正确

在这里插入图片描述
在这里插入图片描述

  • 16
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

先睡个好觉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值