使用 C 的 Beaglebone 黑色 PWM

2023-12-14

我用 C 语言为 beaglebone black 编写了一个示例 pwm 函数。每当我在其他模块或 main() 中进行函数调用时,我都会遇到分段错误。请帮助我在哪里犯了错误以及如何处理这个问题。 下面是代码。

int trigger_pwm_output(unsigned input_no )
{
    FILE *pwm,*duty,*period,*run;``
    uint16_t input=0;
    uint8_t input_no=0,input_state=0;
    unsigned int duty_cycle =500000;
    pwm = fopen("/sys/devices/bone_capemgr.9/slots", "w");
    fseek(pwm,0,SEEK_SET);
    fprintf(pwm,"am33xx_pwm");
    fflush(pwm);



    switch(input_no)
    {
        case 0:

            fprintf(pwm,"bone_pwm_P8_13");
            fflush(pwm);
            period = fopen("/sys/devices/ocp.3/pwm_test_P8_13.15/period", "w");
            fseek(period,0,SEEK_SET);
            fprintf(period,"%d",500000);
            fflush(period);

            duty = fopen("/sys/devices/ocp.3/pwm_test_P8_13.15/duty", "w");
            fseek(duty,0,SEEK_SET);
            run = fopen("/sys/devices/ocp.3/pwm_test_P8_13.15/run", "w");
            fseek(run,0,SEEK_SET);
            fprintf(run,"%d",0);
            fflush(run);

            fseek(run,0,SEEK_SET);
            count++;
                do 
                {
                    duty_cycle += 10;
                    fprintf(duty,"%d",duty_cycle);
                }while(count > 0) || (count < 10));
                fflush(duty);
                fprintf(run,"%d",1);
                fflush(run);

            fclose(pwm);
            fclose(duty);
            fclose(period);
            fclose(run);
            break;
        case 1:
            fprintf(pwm,"bone_pwm_P8_19");
            fflush(pwm);
            period = fopen("/sys/devices/ocp.3/pwm_test_P8_19.16/period", "w");
            fseek(period,0,SEEK_SET);
            fprintf(period,"%d",500000);
            fflush(period);

            duty = fopen("/sys/devices/ocp.3/pwm_test_P8_19.16/duty", "w");
            fseek(duty,0,SEEK_SET);
            run = fopen("/sys/devices/ocp.3/pwm_test_P8_19.16/run", "w");
            fseek(run,0,SEEK_SET);
            fprintf(run,"%d",0);
            fflush(run);

            fseek(run,0,SEEK_SET);
            --count;
            do 
            {
                duty_cycle += 10;
                fprintf(duty,"%d",duty_cycle);
            }while(count <10);
            fflush(duty);
            fprintf(run,"%d",1);
            fflush(run);



            fclose(pwm);
            fclose(duty);
            fclose(period);
            fclose(run);
            break;



    }
    return 0;
}

`


我刚刚使用 C 在 BeagleBone Black 上成功启用了 4 个 PWM 输出,因此我希望能给您一些合理的建议。

使用下的文件/sys/devices/ocp.3/PWM 目录(称为设备树覆盖)并不是一个好主意,原因有两个:

  • PWM 引脚目录名称的最后两位数字是任意的,例如pwm_test_P8_13.xx,一个潜在的原因分段故障因为您不检查 fopen 状态。但是,fopen 不允许在指定路径中使用通配符。我的解决方法根本不干净,是调用echo /sys/devices/ocp.3/pwm_test_P8_13.*/ with popen检索 PWM 引脚目录的正确完整路径。
  • There are only two PWM modules on BeagleBone Black, and the DTO prevents you from using more than one PWM pin per module. Consequently, if you try to modify the period of a pin from command line, a write error may return. If you then type dmesg | tail, you may see the following message:

    [1406.652632] erpwm 48304200.erpwm:周期值与通道1冲突
    [1406.660047]pwm_test pwm_test_P8_19.11:pwm_config()失败

因此,我使用了下面的文件/sys/class/pwm/反而。你还需要写am33xx_pwm以及您计划使用的 PWM 引脚到该文件/sys/devices/bone_capemgr.9/slots。然后,你进入目录/sys/class/pwm/,将数字(0-7)写入文件export,然后修改生成目录下的文件pwm?, where ?是写入的数字export。 下表显示了每个数字及其对应的引脚:

enter image description here

Here是我提到的教程。

希望这可以帮助!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 C 的 Beaglebone 黑色 PWM 的相关文章

随机推荐

  • 制作 FPS 淋浴? [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我正在尝试制作一个显示 FPS 的字符串 但是 我如何真正获得我的程序 FPS 我想用 g drawString getFPS 10 10 我如何获得我的 FPS 这段代码适合我
  • void 方法不能返回值

    我正在网上关注 CS106A 讲座 我正在查看第 12 讲中的代码 但它在 Eclipse 中给了我错误 这是我的代码 看来错误是因为我的中的 void 这个词main方法 我尝试删除main方法 但是Java当然不能没有它运行 我是新手
  • 如何使 HandleErrorAttribute 与 Ajax 一起使用?

    在我的 ASP NET MVC 2 应用程序中 我使用 HandleErrorAttribute 在出现未处理异常的情况下显示自定义错误页面 并且除非异常发生在 Ajax ActionLink 调用的操作中 否则它可以正常工作 在这种情况下
  • 是否可以使用Javascript关闭Android浏览器?

    我想在网页中放置一个 关闭 按钮 我们的客户想要这样做 当我单击此按钮时 我想关闭浏览器 不是当前选项卡 而是 Android 浏览器 IE Firefox Chrome 等中的 浏览器 我查了一下 找到了一个方法 window close
  • 有没有办法用 Pillow 绘制渐变颜色的文本?

    我即将创建一个带有文字的图像 到目前为止一切正常 现在 为了进行微调 我认为使用渐变颜色的文本会很好 这就是我的重点现在 at 这就是我want具有 我已经成功生成了以下图像 使用该脚本 from PIL import Image Imag
  • Java中易失性和同步的区别

    我想知道将变量声明为volatile并且总是访问 a 中的变量synchronized this Java 中的块 根据这篇文章http www javamex com tutorials synchronization volatile
  • 表格行折叠/展开 css

    我正在使用以下示例Demo由 PSL 在网站上的帖子中提供 我有一个大表 当页面仅加载标题时 我不希望显示所有行 我应该改变border collapse collapse CSS 中的属性 在 dom 准备好后 你可以隐藏非 header
  • SQL java获取分配给自动增量主键的值[重复]

    这个问题在这里已经有答案了 我的表中有一个主键自动增量属性 我想知道为使用 statements executeUpdate 插入的行分配给它的值 如何以最好的方式实现这一目标 Use Statement getGeneratedKeys
  • Java 中的 Math.pow 错误

    我 显然 只是在学习编程 我似乎不知道该怎么做才能摆脱这个错误 错误位于倒数第二行 之前的行 System out print windChill 这里 写在下面 是 Java 生成的针对我遇到的错误的 可能提示 列表 expected m
  • 如何访问 iframe 复选框元素

    我有一个由复选框 父级 组成的网页 在同一个网页上 我还有一个来自另一个页面的 iframe 该页面显示许多记录 该页面还针对每条记录都有一个复选框 子级 如果我勾选父复选框 我想将其级联到 iframe 中的所有子复选框 并禁用这些子复选
  • 如何将参数从 Swift 本机代码“放入”Flutter

    我正在尝试将参数从 Swift 中的回调方法传递到 Flutter 这是我想要在我的本机 Java 代码中实现的示例 Override public void onRewardRequest final TJPlacement tjPlac
  • 阻止 Adob​​e Edge preload.js 文件加载 jquery

    首先我必须说 我不是一个专业的程序员 而是一个从实践中学习的设计师 因此 如果可能的话 恐怕我需要简单的解释 我在特定脚本的帮助下使用 Edge animate 作为网站的一部分 由 Andrew Trice 编写 请参见此处 http w
  • AngularJS:重用具有不同父级的组件

    假设我有 A 和 B 可重用组件 我希望 B 调用 A 上的方法 当然只有当 B 是 A 的子级时 此外 我希望 B 用作独立组件 没有 A 作为父级 在这种情况下 不应调用不存在的 A 中的方法 我的第一次尝试是在链接功能中获取控制器 与
  • Flask-Admin针对不同角色的不同表单和column_list

    跟进这个问题Flask Admin Role Based Access 根据角色修改访问权限我不明白如何实现基于角色的视图 特别是关于表单和列列表 说我想要MyModelView如果用户是普通用户或超级用户 则显示不同的列 覆盖is acc
  • Spring security AntMatcher 不工作

    这是我配置 spring security 的方式 在控制器中我获得 ROLE ANONYMOUS 作为权限 看起来安全性并没有拦截请求并检查 JWT 如何配置antmatcher Configuration EnableResourceS
  • 如何添加、编辑和删除数据库的逗号分隔值。?

    我创建了一个名为角色的表 字段类似于 角色ID 角色 禁止进程 禁止端口 这里角色ID是唯一的 我有一个逗号分隔的 prohibitedprocess 字段值 例如 prohibitedprocess gt skype teamviwer
  • Foundation 中的 Google 地图 API 显示模式无法正确显示 [重复]

    这个问题在这里已经有答案了 可能的重复 Reveal Modal 内的 Google Map API 未完全显示 我有一个位于 Reveal Modal 中的 Google Map API 对于那些不知道那是什么的人来说 它基本上是一个隐藏
  • spring-boot 基本 JSP 404 未找到

    无法使用 spring boot 加载非常简单的 JSP 页面 出现 404 Not Found src main java SampleWebJspApplication java Configuration EnableAutoConf
  • 在类中实现 Spinner 类型对象作为子进程

    我是一个完全的初学者 今天才开始上课 我试图制作一种 旋转器 对象 我可以称之为这样的东西 我感到困惑的一件事是是否使用 线程 线程 或 过程 我刚刚在某处读到 一个线程实例的成本为 8meg 因为这是一个简单的文本旋转器 它不保证使用大量
  • 使用 C 的 Beaglebone 黑色 PWM

    我用 C 语言为 beaglebone black 编写了一个示例 pwm 函数 每当我在其他模块或 main 中进行函数调用时 我都会遇到分段错误 请帮助我在哪里犯了错误以及如何处理这个问题 下面是代码 int trigger pwm o