资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

go语言进阶之路教学 go语言入门指南

【原创】树莓派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语言进阶训练营是很不错,知识内容涉及比较全面,从编程语言到中间件、系统设计再到架构都安排了相关课程,老师们在课程中不讲语法和用法,重点传递设计原理和最佳实践,讲课的过程中贴合工作场景,分享真实的干货案例,启发学员的思维让其自主进行学习,还帮学员建立系统大局观,有助于学员深层次的提升。

区块链金融教育培训机构主要会教些什么内容?

Go全栈+区块链课程:

一共22周,分为5个阶段,

第一阶段4周 go语言基础与网络并发 ,学完入门go语言,

第二阶段 4周 go语言实战web开发,爬虫开发,密码学,共识算法,实现轻量级公链,学完可以开发golang的网站,爬虫,实现轻量级区块链

第三阶段 4周 以太坊源码分析与智能合约Dapp开发,学完掌握以太坊核心与开发智能合约,以及区块链,

第四阶段 4周 超级账本,比特币 EOS,源码分析与智能合约实战,学完以后掌握超级账本开发,山寨比特币,分叉EOS,以及智能合约Dapp开发

第五阶段 6周 项目实战 ,实战5个企业级项目,学完可以拥有1年区块链项目经验

谁在极客时间学习过GO进阶训练营,学习成果好不好?

我之前在‎极客‎时间学‎习过GO语言,收获‎还‎是挺‎大的,学过编‎程的都知道,G‎O语言已经成为云计算时代基础设‎施编‎程语‎言了,极‎客时间GO语言的毛剑‎老师讲课是真‎的好,他本身就是个资‎深的GO工程师,讲课细致又专业,每一节课都能学到‎很多‎有用的知识,学完这个‎课程我的专业能力是提升了很多‎的。满意请采纳

有没有GO语言教程?

黑马程序员最近刚出了一套go语言的教程,我刚看了一些,从基础讲起,很适合新手学,听说,黑马的c/c++的课程中,将加入go语言的教学。


当前题目:go语言进阶之路教学 go语言入门指南
文章路径:http://cdkjz.cn/article/hgidpi.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

业务热线:400-028-6601 / 大客户专线   成都:13518219792   座机:028-86922220