基于Rt Thread的PWM驱动开发

基于RT Thread的PWM驱动开发

由于项目需要,在此记录下基于RTT的PWM驱动开发流程
本期项目将完成基于HAL的PWM驱动开发,实现脉冲个数控制,实现基于RTT框架下的PWM驱动开发

1.CUBEMX配置

TIM3配置如下

在这里插入图片描述

时钟配置如下

在这里插入图片描述

GPIO引脚配置如下

在这里插入图片描述

中断配置如下

在这里插入图片描述

生成工程

在这里插入图片描述

2.基于MDK的工程验证

需在启动时加入如下代码

  HAL_TIM_PWM_Start_IT(&htim3,TIM_CHANNEL_3);

这里的htim3,TIM_CHANNEL_3与CUBEMX对应,需修改为自己对应的管脚
在这里插入图片描述
在这里插入图片描述

实现脉冲个数控制

在这里插入图片描述
定义改回调函数即可实现脉冲个数控制

int count=0;
void HAL_TIM_PWM_PulseFinishedCallback(TIM_HandleTypeDef *htim)
{
	if(htim->Instance==TIM3)
	{
		if(count++>5){
			HAL_TIM_PWM_Stop_IT(&htim3,TIM_CHANNEL_3);
		}
	}
}

在这里插入图片描述

实现改变占空比

  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
	  if(count++<400){
		  __HAL_TIM_SET_COMPARE(&htim3,TIM_CHANNEL_3,count);
	  }else{
		count=0;
	  }
	  HAL_Delay(500);
  }

在这里插入图片描述

RT thread Studio工程配置

1.新建工程

在这里插入图片描述

2.setting 设置

在这里插入图片描述
编译第一把报错正常,接下来,逐个修改
在这里插入图片描述

在Board.h中删除注释定义
在这里插入图片描述
取消stm32f4xx_hal_conf.h中关于TIM的定义
在这里插入图片描述
复制MDK工程关于TIM的初始化函数到board.c中

在这里插入图片描述

在Board.c中添加TIM3的初始化函数

在这里插入图片描述

正式开始RTT PWM框架

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

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

struct rt_device_pwm *pwm_dev; /* PWM设备句柄 */
int pulse = 0;
int main(void)
{
    MX_TIM3_Init();

    pwm_dev = (struct rt_device_pwm *) rt_device_find("pwm3");
    if (pwm_dev == RT_NULL)
    {
        rt_kprintf("find pwm3 failed\n");
    }
    else
    {
        rt_kprintf("find pwm3 success\n");

        rt_pwm_set(pwm_dev, 3, 500000, 0); //PWM设置 通道3 period=500000(ns)  pulse=250000
        rt_pwm_enable(pwm_dev, 3); //启动PWM

    }

    while (1)
    {
        pulse += 15000;
        if (pulse < 500000)
        {

            rt_pwm_set(pwm_dev, 3, 500000, pulse);

        }
        else
        {
            pulse = 0;
        }
        rt_thread_mdelay(1000);
    }

    return RT_EOK;
}

在这里插入图片描述

感谢以下开源资源的支持

rt thread PWM驱动框架

STM32CubeIDE 统计及控制PWM产生个数

RTTHREAD STUDIO PWM 配置

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值