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(, duty, , 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

12-ESP8266 SDK开发基础入门篇--PWM,呼吸灯的更多相关文章

  1. 1-ESP8266 SDK开发基础入门篇--开发环境搭建

    因为今天终于做好了自己的另一块工控板,所以我就开始写基础公开篇的内容,希望自己小小的努力能够帮到大家 自己做的另一块板子 https://www.cnblogs.com/yangfengwu/cate ...

  2. 25-ESP8266 SDK开发基础入门篇--控制WIFI连接路由器

    https://www.cnblogs.com/yangfengwu/p/11324411.html 说个事情,现在SDK的版本已经出到3.0了,但是我还是使用2.0 如果只是为了学习研究   选择3 ...

  3. 16-ESP8266 SDK开发基础入门篇--TCP 服务器 非RTOS运行版,串口透传(串口回调函数处理版)

    https://www.cnblogs.com/yangfengwu/p/11105466.html 其实官方给的RTOS的版本就是在原先非RTOS版本上增加的 https://www.cnblogs ...

  4. 24-ESP8266 SDK开发基础入门篇--Android TCP客户端.控制 Wi-Fi输出PWM的占空比,调节LED亮度

    https://www.cnblogs.com/yangfengwu/p/11204436.html 刚才有人说需要点鸡汤.... 我想想哈;我还没问关于哪方面的鸡汤呢!!! 我所一直走的路线 第一: ...

  5. 13-ESP8266 SDK开发基础入门篇--上位机串口控制 Wi-Fi输出PWM的占空比,IEEE754规约

    https://www.cnblogs.com/yangfengwu/p/11100552.html 这节做个上位机控制Wi-Fi引脚输出的PWM占空比信号,灯的亮度就可以用上位机控制了 大家可以自己 ...

  6. 15-ESP8266 SDK开发基础入门篇--上位机串口控制 Wi-Fi输出PWM的占空比,调节LED亮度,上位机程序编写

    https://www.cnblogs.com/yangfengwu/p/11104167.html 先说一下整体思路哈.. 咱滑动的时候 会进入这个,然后咱呢不直接从这个里面写发送 因为这样的话太快 ...

  7. 14-ESP8266 SDK开发基础入门篇--上位机串口控制 Wi-Fi输出PWM的占空比,调节LED亮度,8266程序编写

    https://www.cnblogs.com/yangfengwu/p/11102026.html 首先规定下协议  ,CRC16就不加了哈,最后我会附上CRC16的计算程序,大家有兴趣自己加上 上 ...

  8. 10-ESP8266 SDK开发基础入门篇--上位机通过串口控制ESP8266灯亮灭

    https://www.cnblogs.com/yangfengwu/p/11087618.html 其实这一节就是对上三节的综合测试 https://www.cnblogs.com/yangfeng ...

  9. 26-ESP8266 SDK开发基础入门篇--编写WIFI模块 SmartConfig/Airkiss 一键配网

    https://www.cnblogs.com/yangfengwu/p/11427504.html SmartConfig/Airkiss 配网需要APP/微信公众号,这节大家先使用我做好的APP/ ...

随机推荐

  1. 阿里巴巴 Java 开发手册 (七) 控制语句

    1. [强制]在一个 switch 块内,每个 case 要么通过 break/return 等来终止,要么注释说明程 序将继续执行到哪一个 case 为止:在一个 switch 块内,都必须包含一个 ...

  2. 最全的 pip 使用指南,50% 你可能没用过

    所有的 Python 开发者都清楚,Python 之所以如此受欢迎,能够在众多高级语言中,脱颖而出,除了语法简单,上手容易之外,更多还要归功于 Python 生态的完备,有数以万计的 Python 爱 ...

  3. 必须掌握的Linux用户组

    在 Linux 系统中用户组起着重要作用.用户组提供了一种简单方法供一组用户互相共享文件.用户组也允许系统管理员更加有效地管理用户权限,因为管理员可以将权限分配给用户组而不是逐一分配给单个用户. 尽管 ...

  4. linux查看log软件

    可以使用LNAV软件查看log,还是比较方便的 安装步骤 $ sudo apt install lnav 获取帮助信息 $ lnav -h 查看日志 $ lnav 查看指定日志(后面加上绝对路径) $ ...

  5. 在Linux系统上安装Spring boot应用

    Unix/Linux 服务 systemd 服务 操作过程 1. 安装了JDK的centOS7虚拟机 注意下载linux版本JDK的时候不能直接通过wget这种直接链接下载,否则会解压不成功,应该打开 ...

  6. MySQL-CentOS7上安装Mysql5.7

    #安装 wget http://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm .noarch.rpm yum instal ...

  7. k8s namespace权限问题无法读取configmap

    报错信息: Message: Forbidden!Configured service account doesn't have access. Service account may have be ...

  8. idea中新增package总是嵌套的解决方法

    在idea中创建package,为了方便会将com.xx.xx作为一个package,下面添加对应的子package.比如service,config等.但是当我创建是总是会嵌套在下面变成了com.x ...

  9. Pyspark中遇到的 java.io.IOException: Not a file 和 pyspark.sql.utils.AnalysisException: 'Table or view not found

    最近执行pyspark时,直接读取hive里面的数据,经常遇到几个问题: 1.  java.io.IOException: Not a file —— 然而事实上文件是存在的,是 hdfs 的默认路径 ...

  10. Luogu P2280/ACAG 0x03-1 激光炸弹

    Luogu P2280/ACAG 0x03-1 激光炸弹 这道题要用到二维前缀和. 首先读入时,令$a[x][y]=val$: 然后不难递推出$s[i][j]=s[x-1][y]+s[i][j-1]- ...