关于RTthread使用PWM的总结经验(基于STM32F4系列)

目录

硬件资源介绍:

前期准备:

代码编写:

总结:


硬件资源介绍:

笔者使用的是STM32F407VET6是魔女开发板,因为RT不支持CMSIS-DAP烧录,所以我又准备了一个ST-link,一个红色的LED。我所使用的是TIM2-CH3通道,在我这个板子上对应的是PA2口。原理图如下所示。

可以看到PA2上对应的有TIM2_3。

前期准备:

首先是创建RTT项目

第一步:打开RT的Settings

第二步:接着打开项目中的baord.h进行如下几步修改

第三步:打开CubeMX生成代码将其中的有用代码贴到board.c后

第四步:打开stm32xxxx_hal_config.h进行修改

第五步:添加一句代码到drv_pwm.c

笔者也是找了很久bug才知道要加这句话,之前的时候一直都没解决,现在将他分享出来。

第六步:检查是否有所用定时器(TIM2是有的,一般通用定时器的有,高级定时器比如TIM1就没有,不过也可以模仿着TIM2的格式复制写一个TIM1)

代码编写:

在main.c中编写代码

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

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

#define PWM_DEV "pwm2"
#define PWM_DEV_CHAN 3

struct rt_device_pwm *pwm_dev;
rt_uint32_t period = 500000;   //周期值 500000ns 频率 2kHz
rt_uint32_t pulse = 0;         //脉宽变量

rt_uint8_t dir = 0;            //方向值


int main(void)
{

    //查找设备
    pwm_dev = (struct rt_device_pwm*)rt_device_find(PWM_DEV);
    if(pwm_dev == RT_NULL)
    {
        rt_kprintf("not find!");
        return RT_ERROR;
    }

    //设置参数
    //rt_pwm_set(pwm_dev, PWM_DEV_CHAN, period, pulse);
    rt_pwm_set(pwm_dev,PWM_DEV_CHAN, period, pulse);
    //启动设备
    rt_pwm_enable(pwm_dev, PWM_DEV_CHAN);

    while(1)
    {

        if(dir == 0)
        {
            pulse += 5000;
            if(pulse >= period)
            {
                dir = 1;
            }
        }

        if(dir == 1)
        {
            pulse -= 5000;
            if(pulse <= 0)
            {
                dir = 0;
            }
        }

        rt_pwm_set(pwm_dev, PWM_DEV_CHAN, period, pulse);
        rt_thread_mdelay(50);
    }


    return RT_EOK;
}

总结:

RT中的PWM还是比较方便的,就是遇到了一个Bug,导致这个F4系列的STM32连呼吸灯都实现不了,找到后也是立马总结一下,希望可以帮助到广大朋友们。


 

  • 15
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
嵌入式系统是一种集成了软件和硬件的特殊计算机系统,它通常用于控制、监控、通信和计算等方面。STM32F4系列是一种常用的嵌入式微控制器,具有高性能、低功耗和丰富的外设接口,广泛应用于各种领域。 在控制器考试样卷中,可以通过嵌入式系统原理应用基于STM32F4系列的控制器来实现一些常见的功能,比如控制LED灯的亮灭、读取温度传感器的数值、驱动步进电机等。通过这些功能的实现,考生可以了解嵌入式系统的基本原理和应用。 首先,可以利用STM32F4系列的GPIO接口来控制LED灯的亮灭,通过编写相应的程序来实现LED的闪烁、呼吸灯等效果,考生需要了解GPIO的基本配置和控制方法。 其次,可以通过外部的温度传感器模块将温度数据输入到STM32F4系列的ADC(模数转换)接口,再通过编写程序将采集到的数据进行处理和显示,考生需要了解ADC的基本原理和操作方法。 此外,还可以利用STM32F4系列的定时器和PWM(脉冲宽度调制)接口来驱动步进电机,实现简单的转动控制,考生需要了解定时器的配置和PWM的输出控制方法。 通过这些实际的应用,考生可以加深对嵌入式系统原理的理解,掌握嵌入式系统在控制领域的基本应用。同时,也能够培养考生的动手能力和解决问题的能力。因此,基于STM32F4系列的控制器考试样卷是一种有效的教学方式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值