您尚未登录。

楼主 # 2023-08-07 12:39:33

tangloong
会员
注册时间: 2023-04-11
已发帖子: 212
积分: 191

求助 RTThread 的 PWM 功能不起作用

系统  RTThread
芯片  F1C100S
使用 drv_pwm 驱动

代码如下

    //gpio_set_func(BKPWM,IO_FUN_3);    // PE6 pwm1 设置为PWM 模式
    //gpio_set_func(PWM0,IO_FUN_3);      // PA2设置为PWM 模式

    /************************* 设置 pwm1 通道  开始  ************************** /
    rt_uint32_t period, pulse;
    period = 500000;    // 周期为0.5ms,单位为纳秒ns
    pulse =  5000;    // PWM脉冲宽度值,单位为纳秒ns
    // 查找设备
    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); //PWM_DEV_CHANNEL 1  period 500000 pulse 5000
    // 使能设备
    rt_pwm_enable(pwm_dev, PWM_DEV_CHANNEL);
    rt_kprintf("%s  run success! \n", PWM_DEV_NAME);
    /************************* 设置 pwm1 通道  结束  **************************/

烧录后 pwm 初始化是成功的 也能找到这个设备 但是IO没有反应 一直是高电平


后来使用 直接写寄存器的方式 也不行  这个代码摘自 https://github.com/nminaylov/F1C100s_projects/tree/master 的逻辑程序

     gpio_set_func(BKPWM,IO_FUN_3);
     gpio_set_pull_mode(BKPWM,PULL_DISABLE);
     pwm_init(PWM1, PWM_MODE_CONTINUOUS, 1, PWM_PSC_120); // 24M / 120 = 200kHz
     pwm_set_period(PWM1, LED_PWM_PERIOD); // 200k / 200 = 1kHz
     pwm_set_pulse_len(PWM1, 30);
     pwm_enable(PWM1);

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn