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

前言

基于RTT的PWM设备框架下,输出PWM波,利用Simonk电调驱动2212电机

一、新建工程

RT-Thread(RTT)使用PWM设备驱动2212电机_第1张图片

二、打开CubeMX

RT-Thread(RTT)使用PWM设备驱动2212电机_第2张图片

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

RT-Thread(RTT)使用PWM设备驱动2212电机_第3张图片

四、配置调试下载接口

RT-Thread(RTT)使用PWM设备驱动2212电机_第4张图片

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

RT-Thread(RTT)使用PWM设备驱动2212电机_第5张图片

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

RT-Thread(RTT)使用PWM设备驱动2212电机_第6张图片

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

RT-Thread(RTT)使用PWM设备驱动2212电机_第7张图片

八、生成代码

RT-Thread(RTT)使用PWM设备驱动2212电机_第8张图片

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

RT-Thread(RTT)使用PWM设备驱动2212电机_第9张图片

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

RT-Thread(RTT)使用PWM设备驱动2212电机_第10张图片

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

RT-Thread(RTT)使用PWM设备驱动2212电机_第11张图片

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

RT-Thread(RTT)使用PWM设备驱动2212电机_第12张图片

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

RT-Thread(RTT)使用PWM设备驱动2212电机_第13张图片
RT-Thread(RTT)使用PWM设备驱动2212电机_第14张图片

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

RT-Thread(RTT)使用PWM设备驱动2212电机_第15张图片
RT-Thread(RTT)使用PWM设备驱动2212电机_第16张图片

十五、编译报错

RT-Thread(RTT)使用PWM设备驱动2212电机_第17张图片

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

RT-Thread(RTT)使用PWM设备驱动2212电机_第18张图片

十七、再编译,如下报错

RT-Thread(RTT)使用PWM设备驱动2212电机_第19张图片

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

RT-Thread(RTT)使用PWM设备驱动2212电机_第20张图片

十九、再编译,报错解决

RT-Thread(RTT)使用PWM设备驱动2212电机_第21张图片

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

/*
 * 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 

#include 
#include 
#include 

#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,波形正确

RT-Thread(RTT)使用PWM设备驱动2212电机_第22张图片

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

RT-Thread(RTT)使用PWM设备驱动2212电机_第23张图片

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

RT-Thread(RTT)使用PWM设备驱动2212电机_第24张图片
RT-Thread(RTT)使用PWM设备驱动2212电机_第25张图片

你可能感兴趣的:(RTT,stm32,c语言,RTT,CubeMX)