zoukankan      html  css  js  c++  java
  • led GPIO设置pwm 呼吸灯(效果并不好,耗电)

    GPIO管脚设置为高电位,那么它一直都是高电位

    然后调试的时候,用全局变量调试速度杠杠的啊

    一个局部传参给全局,然后直接从全局那边取值····· 这样比较快,尤其是驱动调试功能的时候

    ==代码写的太少啦,还有对硬件驱动这块的了解也还太少啦,其实就是GPIO管教配置,那么问题来了

    为什么我往/sys/class/leds/brightness下输入255  然后/dev/就可以收到数值?

    中间有 PC -->adb.exe -->  终端 --> dev --> led_GPIO  好像也没有那么复杂哈

    基本设计流程如下:

    1.先把对应需要设置的GPIO管脚设置成只有你可以操作

    2.创建一个led_dev设备

    3.在led_dev设备里注册一个定时器根据yaffs来设定时间频率,

      1s一个周期设置

      0.5s 灯从灭到亮

      0.5s灯从亮到灭

    4.创建一个线程在对应的定时器设置时间之后,不段的进行相同数据的写入

    5.当然很重要的还是不断调试了。

    6.代码设计(要清楚定时器调用频率,以及线程调用最短延迟)

     定时器不断设定时间,然后创建一个线程,不段根据这个时间来进行数据的写入

    1s

    0.1 - 0.2  线程不断写入 00000

    0.2 - 0.3       10000

    0.3 - 0.4       11000

    0.4 -0.5         11100

    0.5 - 0.6          11110

    0.6-0.7            11111

    0.7-0.8          11110

    0.8-0.9          11100

    0.9-1.0         11000

    1.0-1.1         10000

    5.已知问题,线程延时函数使用的是mdelay() 这种函数会一直占着cpu,往往导致cpu占用率高达50%

    但是发现,用msleep()效果又会很渣,在实验的时候发现用usleep()可以达到很好的效果

    即使发现msleep(1) 与usleep(1000)的效果也完全不一样。

    由于是用软件仿真pwm,而且是用单位时间内的频闪来改变光强,所以肯定没有pwm通过电压改变的来的效果好

    可以学到的知识,

    led设备驱动的添加

    驱动线程的使用,kthread  关键是看别人怎么用的

    GPIO 模拟pwm设计

    内核定时器的使用,(msleep usleep udelay mdelay 这几个函数的区别)

    内核延迟函数与sleep函数的区别(一个忙等待,耗cpu   一个不是,但是浪费资源)

    内核模块调试技巧,全局变量调试方法

    =====================

    再补充一点软件代码设计的知识

    代码设计架构也是,先从其他地方获取数据,然后统一保存到一个大全局结构体里。(业务需求模型,与服务器数据交互保存)

    恩 这是一个普遍设计,像高通的nv,统一参数存储位置

    然而知道这些又真的很有用吗? 我怀疑,结合生活使用。这都是哲学,都是生活管理吧

  • 相关阅读:
    SSL证书安装指引
    腾讯云中ssL证书的配置安装
    微信小程序:微信登陆(ThinkPHP作后台)
    TPshop学习(8)微信支付
    LNMP安装Let’s Encrypt 免费SSL证书方法:自动安装与手动配置Nginx
    ruby文档
    tesseract-ocr图片识别开源工具
    Python读写文件
    百度贴吧的网络爬虫(v0.4)源码及解析
    中文分词库
  • 原文地址:https://www.cnblogs.com/asreg/p/6649579.html
Copyright © 2011-2022 走看看