zoukankan      html  css  js  c++  java
  • 12-ESP8266 SDK开发基础入门篇--PWM,呼吸灯

    https://www.cnblogs.com/yangfengwu/p/11094085.html

    PWM其实没有什么,就是看着官方给的API,,,然后就是用呗

    对了,其实对于RTOS SDK版本的开发可以直接去参考非RTOS SDK的API  这个直接有例子

    其实嵌入操作系统也没有什么,底层自带的外设硬件功能该怎么样还是怎么样,操作系统也不能改变什么,,操作系统的存在只是去操作咱定义的函数,让这些函数执行的时候快速的切换执行...

     我直接说第三个参数

    第三个参数是说要定义一个 这样的数组  [n][3]

    其实就是为了可以一次性配置多个引脚.....

    一开始我在想一维的不行吗.........给你多个引脚的寄存器地址不就可以了????

    但是呢官方给的配置PWM输出的函数呢..每个引脚都需要填三个参数....不清楚为什么

    第一个参数填引脚的寄存器地址  寄存器地址好说,咱所有的配置引脚其实都是配置这个引脚的寄存器(如果你看过我的STM32带你入坑系列)

    第二个参数     填写这个管脚的复用值,这个值不一样,这个引脚的功能就不一样

    然后我解释一下,假设是GPIO12管脚,,,说一下哈,记住就行,这是我看了很多资料才知道的....具体官方在哪里写的,,我也没有找到

    记住哈

     

     所以写3就可以  

    还有一点注意这几个

    其实官方给咱们准备好了

    好了可以清空脑子了   所以的到上面的文件去看就可以  想配置GPIO的复用功能

    假设函数的有个参数是填写复用功能,假设配置GPIO12作为普通GPIO 就填 FUNC_GPIO12

    作为SPI就填  FUNC_HSPIQ_MISO

     其实这是我纳闷的...我想实现PWM  难道不就是使用普通的GPIO  官方的API内部直接设置这个GPIO的寄存器的相应位置,让GPIO作为普通的不就完了...不明白...不明白...

    还有第三个参数..

    就是

     

     这个也是我纳闷的......给你了GPIO的寄存器地址了,直接操作寄存器不就可以了........why?????

    假设控制GPIO5输出PWM

    第一需要GPIO5的寄存器地址

    其实最全的是在 

     第二个参数,,咱输出PWM肯定是让GPIO5作为普通输出,所以

     第三个  填5就可以

    uint32 pin_info_list[1][3]={PERIPHS_IO_MUX_GPIO5_U,FUNC_GPIO5,5};

    //引脚寄存器地址  复用功能   引脚标号GOIOXX  没有对应的GPIO5宏定义,所以直接5 如果配置GPIO12  就写12

     

     

    由于第二个参数也是指针类型,所以咱需要定义一个数组,其实是因为最后一个参数

    uint32 pin_info_list[1][3]={PERIPHS_IO_MUX_GPIO5_U,FUNC_GPIO5,5};

    uint32 duty[1]={100};//高电平时间是100us

    我写的是配置一个引脚,,如果配置两个 GPIO5 和 GPIO12

    uint32 pin_info_list[2][3]={{PERIPHS_IO_MUX_GPIO5_U,FUNC_GPIO5,5} ,  {PERIPHS_IO_MUX_MTDI_U,FUNC_GPIO12,12} } ;

    uint32 duty[2]={100,500};//GPIO5 高电平时间是100us    GPIO12高电平时间是500us

    下面初始化

    pwm_init(1000, duty, 1, pin_info_list);  第一个我测试的...1000us的时候最好使,也就是1Khz,,,

    我填10000 100hz 产生的周期是对的10000us  但是duty填什么都有问题......

    然后启动

        pwm_init(1000, duty, 1, pin_info_list);//周期1000us   高电平时间100us   1 --就配置了一个管脚,因为数组是[1][3]   pin_info_list--数组
        pwm_start();

     

     下载测试

    现在灯是微微亮 

     好现在做个呼吸灯

    首先要明白呼吸灯的原理

    其实说白了就是控制灯的PWM周期不变,假设一开始占空比是0  输出高电平时间是 0

    然后慢慢的增加高电平的输出时间直至达到和周期一样   灯就会越来越亮,直至最亮了  因为全部输出高电平了

    然后慢慢的减小高电平的输出时间直至0   灯就会越来越暗,直至灭

    慢慢的那个就用个定时器做

    然后在定时器里面控制输出的占空比从0变到最大  再从最大变到 0  然后循环

    为了程序简洁修改下

     

     

     大家自行测试吧....

    然后注意几个地方

    以前的文档这样说的

     现在的这样说的...我不测试了哈...大家自己测测

     

     好,下一节,咱用上位机控制Wi-Fi的引脚输出PWM的占空比

    https://www.cnblogs.com/yangfengwu/p/11102026.html

  • 相关阅读:
    Linux安装Oralce 11g问题
    Hadoop 2.X 集群安装
    Centos图形界面关闭与开启
    SecureCRT乱码
    Hadoop 1.X 集群安装
    ThinkPad E430c 开机启动
    Node.js运行端口修改
    Node.js代理设置
    Github安装过后删除右键菜单选项
    吴恩达深度学习笔记 第四章作业1
  • 原文地址:https://www.cnblogs.com/yangfengwu/p/11100552.html
Copyright © 2011-2022 走看看