RT-Thread的STM32系列外设驱动添加 ---- 以PWM外设为例

一、准备

官方教程:STM32系列外设驱动添加指南.md

PWM驱动官方文档:RT-Thread设备和驱动 之 PWM设备

本博客基于的BSP为stm32f103-dofly-lyc8,可到官网下载,BSP制作教程:RT-Thread ---- STM32系列BSP的制作教程总结

二、个人总结

1、按照教程步骤,按PWM设备驱动的需求更改。

2、STMCubeMx配置如下:

3、在Kconfig中添加pwm驱动。代码如下

4、menuconfig 中勾选

5、scons --target=mdk5  生成新工程。

6、代码示例,是一盏LED灯亮度渐变。

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

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

static void tid_ledflash_entry(void *parameter)
{
    rt_uint32_t period, pulse;

    period = 50000;    /* 周期为0.5ms,单位为纳秒ns */
    
    pulse = 0;          /* PWM脉冲宽度值,单位为纳秒ns */

    /* 查找设备 */
    pwm_dev = (struct rt_device_pwm *)rt_device_find(PWM_DEV_NAME);
    if (pwm_dev == RT_NULL)
    {
        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(10);                                                                                                                                                                                                                                                       
        pulse += 100;      /* 从0值开始每次增加5000ns */

        if (pulse >= period)
        {
            pulse = 0;
        }

        /* 设置PWM周期和脉冲宽度 */
        rt_pwm_set(pwm_dev, PWM_DEV_CHANNEL, period, pulse);
    }
}

 

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值