極客時(shí)間的GO語(yǔ)言進(jìn)階訓(xùn)練營(yíng)是很不錯(cuò),知識(shí)內(nèi)容涉及比較全面,從編程語(yǔ)言到中間件、系統(tǒng)設(shè)計(jì)再到架構(gòu)都安排了相關(guān)課程,老師們?cè)谡n程中不講語(yǔ)法和用法,重點(diǎn)傳遞設(shè)計(jì)原理和最佳實(shí)踐,講課的過程中貼合工作場(chǎng)景,分享真實(shí)的干貨案例,啟發(fā)學(xué)員的思維讓其自主進(jìn)行學(xué)習(xí),還幫學(xué)員建立系統(tǒng)大局觀,有助于學(xué)員深層次的提升。
創(chuàng)新互聯(lián)公司公司2013年成立,先為寧城等服務(wù)建站,寧城等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為寧城企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
在前一小節(jié)中介紹了點(diǎn)亮第一個(gè)LED燈,這里我們準(zhǔn)備進(jìn)階嘗試下,輸出第一段PWM波形。(PWM也就是脈寬調(diào)制,一種可調(diào)占空比的技術(shù),得到的效果就是:如果用示波器測(cè)量引腳會(huì)發(fā)現(xiàn)有方波輸出,而且高電平、低電平的時(shí)間是可調(diào)的。)
這里爪爪熊準(zhǔn)備寫成一個(gè)golang的庫(kù),并開源到github上,后續(xù)更新將直接更新到github中,如果你有興趣可以和我聯(lián)系。 github.com/dpawsbear/bear_rpi_go
我在很多的教程中都看到說(shuō)樹莓派的PWM(硬件)只有一個(gè)GPIO能夠輸出,就是 GPIO1 。這可是不小的打擊,因?yàn)槲蚁胧褂弥辽偎膫€(gè) PWM ,還是不死心,想通過硬件手冊(cè)上找尋蛛絲馬跡,看看究竟怎么回事。
手冊(cè)上找尋東西稍等下講述,這里先提供一種方法測(cè)試 樹莓派3B 的 PWM 方法:用指令控制硬件PWM。
這里通過指令的方式掌握了基本的pwm設(shè)置技巧,決定去翻一下手冊(cè)看看到底PWM怎么回事,這里因?yàn)闆]有 BCM2837 的手冊(cè),根據(jù)之前文章引用官網(wǎng)所說(shuō), BCM2835 和 BCM2837 應(yīng)該是一樣的。這里我們直接翻閱 BCM2835 的手冊(cè),直接找到 PWM 章節(jié)。找到了如下圖:
圖中可以看到在博通的命名規(guī)則中 GPIO 12、13、18、19、40、41、45、52、53 均可以作為PWM輸出。但是只有兩路PWM0 PWM1。根據(jù)我之前所學(xué)知識(shí),不出意外應(yīng)該是PWM0 和 PWM1可以輸出不一樣的占空比,但是頻率應(yīng)該是一樣的。因?yàn)闆]有示波器,暫時(shí)不好測(cè)試。先找到下面對(duì)應(yīng)圖:
根據(jù)以上兩個(gè)圖對(duì)比可以發(fā)現(xiàn)如下規(guī)律:
對(duì)照上面的表可以看出從 BCM2837 中印出來(lái)的能夠使用在PWM上的就這幾個(gè)了。
為了驗(yàn)證個(gè)人猜想是否正確,這里先直接使用指令的模式,模擬配置下是否能夠正常輸出。
通過上面一系列指令模擬發(fā)現(xiàn),(GPIO1、GPIO26)、(GPIO23、GPIO24)是綁定在一起的,調(diào)節(jié)任意一個(gè),另外一個(gè)也會(huì)發(fā)生變化。也即是PWM0、PWM1雖然輸出了兩路,可以理解成兩路其實(shí)都是連在一個(gè)輸出口上。這里由于沒有示波器或者邏輯分析儀這類設(shè)備(僅有一個(gè)LED燈),所以測(cè)試很簡(jiǎn)陋,下一步是使用示波器這類東西對(duì)頻率以及信號(hào)穩(wěn)定性進(jìn)行下測(cè)試。
小節(jié):樹莓派具有四路硬件輸出PWM能力,但是四路中只能輸出兩個(gè)獨(dú)立(占空比獨(dú)立)的PWM,同時(shí)四路輸出的頻率均是恒定的。
上面大概了解清楚了樹莓派3B的PWM結(jié)構(gòu),接下來(lái)就是探究如何使用Go語(yǔ)言進(jìn)行設(shè)置。
因?yàn)槟玫搅耸謨?cè),這里我想直接操作寄存器的方式進(jìn)行設(shè)置,也是順便學(xué)習(xí)下Go語(yǔ)言處理寄存器的過程。首先需要拿到pwm 系列寄存器的基地址,但是翻了一圈手冊(cè),發(fā)現(xiàn)只有偏移,沒有找到基地址。
經(jīng)過了一段時(shí)間的努力后,決定寫一個(gè) 樹莓派3B golang包開源放在github上,只需要寫相關(guān)程序進(jìn)行調(diào)用就可以了,以下是相關(guān)demo(pwm)(在GPIO.12 上輸出PWM波,放上LED燈會(huì)有呼吸燈的效果,具體多少頻率還沒有進(jìn)行測(cè)試)
以下是demo(pwm) 源碼
技多又不壓身,Java Python.go都是很好的語(yǔ)言,如果你有精力學(xué)一學(xué)沒壞處,而且編程語(yǔ)言一通百通,你是Java程序員,學(xué)go語(yǔ)言學(xué)起來(lái)又不困難。
當(dāng)前文章:go語(yǔ)言進(jìn)階之路怎么讀 go語(yǔ)言從入門到進(jìn)階實(shí)戰(zhàn) pdf
路徑分享:http://www.chinadenli.net/article28/doogdjp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營(yíng)銷推廣、動(dòng)態(tài)網(wǎng)站、靜態(tài)網(wǎng)站、電子商務(wù)、外貿(mào)網(wǎng)站建設(shè)、小程序開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容