【原创】树莓派3B开发Go语言(四)-自写库实现pwm输出 在前一小节中介绍了点亮第一个LED灯,这里我们准备进阶尝试下,输出第一段PWM波形 。(PWM也就是脉宽调制,一种可调占空比的技术 , 得到的效果就是:如果用示波器测量引脚会发现有方波输出 , 而且高电平、低电平的时间是可调的 。)
这里爪爪熊准备写成一个golang的库,并开源到github上,后续更新将直接更新到github中,如果你有兴趣可以和我联系 。github.com/dpawsbear/bear_rpi_go
我在很多的教程中都看到说树莓派的PWM(硬件)只有一个GPIO能够输出,就是GPIO1。这可是不小的打击,因为我想使用至少四个PWM,还是不死心 , 想通过硬件手册上找寻蛛丝马迹,看看究竟怎么回事 。
手册上找寻东西稍等下讲述,这里先提供一种方法测试树莓派3B的PWM方法:用指令控制硬件PWM 。
这里通过指令的方式掌握了基本的pwm设置技巧 , 决定去翻一下手册看看到底PWM怎么回事,这里因为没有BCM2837的手册,根据之前文章引用官网所说 , BCM2835和BCM2837应该是一样的 。这里我们直接翻阅BCM2835的手册,直接找到PWM章节 。找到了如下图:
图中可以看到在博通的命名规则中 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语言》百度网盘pdf最新全集下载:
链接:
?pwd=je9c 提取码: je9c
简介:Google工程师亲授,从学习语言语法特性到函数式编程、并发编程等等 。理论与实战结合 , 帮助快速掌握Go语言 。通过研读标准库等经典代码设计模式,启发读者深刻理解Go语言的核心思维,进入Go语言开发的更高阶段 。
求《Go语言编程》全文免费下载百度网盘资源,谢谢~《Go语言编程》百度网盘pdf最新全集下载:
链接:
?pwd=hcru 提取码:hcru
简介:这本书从整体的写作风格来说,会以介绍 Go 语言特性为主,示例则尽量采用作者平常的实践,而不是一个没有太大实际意义的语法示范样例 。
Go语言编程入门时需要注意什么刚入门Go语言小白需要注意以下五点:
1、注意书写代码的一些规范吧go语言直播编程课24节,特别是注意大小写、英文标点符号区别等go语言直播编程课24节,在特别的位置写上注释 。
2、主要是理解伪代码所描述的算法go语言直播编程课24节,伪代码要注意是不能直接运行的 。
3、注意编译器版本与书籍上所介绍版本是否一致,也注意特殊符号,印刷版本可能与实际不一致 。
4、书上的版本和当前所用的版本是否一致,有些情况下书上版本在现在来用已经过时了 。
5、逻辑走通;给自己信心,其实起步阶段不难的 。
【go语言直播编程课24节 go语言第一课】go语言直播编程课24节的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于go语言第一课、go语言直播编程课24节的信息别忘了在本站进行查找喔 。
推荐阅读
- jquery删除父辈节点,jq删除节点的方法
- go语言中的包引用,golang中的引用类型
- 阿里云数字服务器价格,阿里云 云服务器价格
- 计算机专业毕业设计论文题目推荐,计算机专业的毕业设计论文
- java复制上一层代码 java复制上一行代码快捷键
- 关于asp.net2017xaml的信息
- 即时游戏113719,即时游戏小游戏
- pg数据库表列名属性,pg数据库表名长度
- 如何看oracle實例 怎么查看oracle实例