图中可以看到在博通的命名规则中 GPIO 12、13、18、19、40、41、45、52、53 均可以作为PWM输出 。但是只有两路PWM0 PWM1 。根据我之前所学知识,不出意外应该是PWM0 和 PWM1可以输出不一样的占空比,但是频率应该是一样的 。因为没有示波器 , 暂时不好测试 。先找到下面对应图:
根据以上两个图对比可以发现如下规律:
对照上面的表可以看出从 BCM2837 中印出来的能够使用在PWM上的就这几个了 。
为了验证个人猜想是否正确 , 这里先直接使用指令的模式,模拟配置下是否能够正常输出 。
通过上面一系列指令模拟发现,(GPIO1、GPIO26)、(GPIO23、GPIO24)是绑定在一起的,调节任意一个,另外一个也会发生变化 。也即是PWM0、PWM1虽然输出了两路 , 可以理解成两路其实都是连在一个输出口上 。这里由于没有示波器或者逻辑分析仪这类设备(仅有一个LED灯),所以测试很简陋,下一步是使用示波器这类东西对频率以及信号稳定性进行下测试 。
小节:树莓派具有四路硬件输出PWM能力,但是四路中只能输出两个独立(占空比独立)的PWM,同时四路输出的频率均是恒定的 。
上面大概了解清楚了树莓派3B的PWM结构,接下来就是探究如何使用Go语言进行设置 。
因为拿到了手册,这里我想直接操作寄存器的方式进行设置,也是顺便学习下Go语言处理寄存器的过程 。首先需要拿到pwm 系列寄存器的基地址 , 但是翻了一圈手册,发现只有偏移,没有找到基地址 。
经过了一段时间的努力后 , 决定写一个 树莓派3B golang包开源放在github上,只需要写相关程序进行调用就可以了,以下是相关demo(pwm)(在GPIO.12 上输出PWM波,放上LED灯会有呼吸灯的效果,具体多少频率还没有进行测试)
以下是demo(pwm) 源码
极客时间的GO语言进阶训练营怎么样?极客时间的GO语言进阶训练营是很不错 , 知识内容涉及比较全面,从编程语言到中间件、系统设计再到架构都安排了相关课程,老师们在课程中不讲语法和用法,重点传递设计原理和最佳实践,讲课的过程中贴合工作场景,分享真实的干货案例 , 启发学员的思维让其自主进行学习,还帮学员建立系统大局观 , 有助于学员深层次的提升 。
关于go语言进阶之路教学视频和go语言快速入门的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。
推荐阅读
- postgresql导出表数据,pgsql导出数据库
- 公众号怎么删除内容吗,公众号内容如何删掉
- 模拟开车失控的游戏,模拟开车失控的游戏有哪些
- 连乘函数python 连乘函数极限
- postgresql菜鸟教程的简单介绍
- 朋友圈的视频号怎么去除,朋友圈的视频号怎么去除水印
- php判断数据库账号密码 php判断数据库账号密码的方法
- 如何找回升级鸿蒙前的壁纸,如何找回升级鸿蒙前的壁纸图片
- 谷歌农场经营游戏,中国谷歌农业