2943|2

7047

帖子

11

TA的资源

版主

楼主
 

【国民技术N32G457评测】rt_thread studio PWM配置 [复制链接]

 

RT_Thread Studio 默认给出了TIM3的配置,但是我需要用板载的LED灯实现呼吸灯的效果,所以要自己配置PWM1。LED3灯为PA8,从手册中查到它为TIM1——CH1.

1、在RT_Thread Settings中设置开启PWM。保存生成rt_drivers下面有drv_pwm.c与drv_pwm.h.

2、修改rtconfig.h,添加在TIM1的配置:即添加

#define BSP_USING_TIM1
#define BSP_USING_TIM1_CH1

3、修改drv_pwm.h,增加编译条件:

  4、在drv_pmw.c中增加对tim1的结构体的条件编译配置:

 

 5、书写测试程序:直接抄写官方例程,但是要注意修改几处地方。

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

#define LED_PIN_NUM         67     /* PA8 LED PIN脚编号,查看驱动文件drv_gpio.c确定 */
#define PWM_DEV_NAME        "tim1pwm1"  /* PWM设备名称 */
#define PWM_DEV_CHANNEL     1       /* PWM通道 */

struct rt_device_pwm *pwm_dev;      /* PWM设备句柄 */

static int lu_pwm_led_sample(int argc, char *argv[])
{
    rt_uint32_t period, pulse, dir;

    period = 5000;
    dir = 1;            /* PWM脉冲宽度值的增减方向 */
    pulse = 0;          /* PWM脉冲宽度值 */

    /* 设置LED引脚脚模式为输出 */
    rt_pin_mode(LED_PIN_NUM, PIN_MODE_OUTPUT);
    /* 拉高LED引脚 */
    rt_pin_write(LED_PIN_NUM, PIN_HIGH);

    /* 查找设备 */
    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);

    while (1)
    {
        rt_thread_mdelay(20);
        if (dir)
        {
            pulse += 50;      /* 从0值开始每次增加100 */
        }
        else
        {
            pulse -= 50;      /* 从最大值开始每次减少100 */
        }
        if (pulse >= period)
        {
            dir = 0;
        }
        if (0 == pulse)
        {
            dir = 1;
        }

        /* 设置PWM周期和脉冲宽度 */
        rt_pwm_set(pwm_dev, PWM_DEV_CHANNEL, period, pulse);
    }
}
/* 导出到 msh 命令列表中 */
MSH_CMD_EXPORT(lu_pwm_led_sample, pwm sample);

 下载到开发板后实现呼吸灯的效果。

经验:1、RT_Thread Studio大部分可以由IDE实现大部分代码,但是国民技术与RT的配合还有待加强。这里只能自己配置TIM3。

2、对于基础知识还得加强学习,如果没有扎实的基础,遇到IDE不能配置好的时候,感觉无从下手。

最新回复

抄写官方例程,修改的几个地方是那几行代码   详情 回复 发表于 2022-2-11 07:26
点赞 关注
 
 

回复
举报

6828

帖子

0

TA的资源

五彩晶圆(高级)

沙发
 

抄写官方例程,修改的几个地方是那几行代码

点评

#define LED_PIN_NUM 67 /* PA8 LED PIN脚编号,查看驱动文件drv_gpio.c确定 */ #define PWM_DEV_NAME "tim1pwm1" /* PWM设备名称 */ #define PWM_DEV_CHANNEL 1 /* PWM通道 */ period = 5000; dir =  详情 回复 发表于 2022-2-11 08:58
 
 
 

回复

7047

帖子

11

TA的资源

版主

板凳
 
Jacktang 发表于 2022-2-11 07:26 抄写官方例程,修改的几个地方是那几行代码
  • #define LED_PIN_NUM 67 /* PA8 LED PIN脚编号,查看驱动文件drv_gpio.c确定 */
  • #define PWM_DEV_NAME "tim1pwm1" /* PWM设备名称 */
  • #define PWM_DEV_CHANNEL 1 /* PWM通道 */
  • period = 5000;
  • dir = 1; /* PWM脉冲宽度值的增减方向 */
  • pulse = 0; /* PWM脉冲宽度值 */
  • 还有延时时间,加减脉宽量
  •  
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表