快捷搜索: 王者荣耀 脱发

基于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
");
    }
    else
    {
          
   
        rt_kprintf("find pwm3 success
");

        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;
}

感谢以下开源资源的支持

经验分享 程序员 微信小程序 职场和发展