在前一小節(jié)中介紹了點(diǎn)亮第一個(gè)LED燈,這里我們準(zhǔn)備進(jìn)階嘗試下,輸出第一段PWM波形。(PWM也就是脈寬調(diào)制,一種可調(diào)占空比的技術(shù),得到的效果就是:如果用示波器測(cè)量引腳會(huì)發(fā)現(xiàn)有方波輸出,而且高電平、低電平的時(shí)間是可調(diào)的。)
創(chuàng)新互聯(lián)建站長(zhǎng)期為數(shù)千家客戶(hù)提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開(kāi)放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為昆玉企業(yè)提供專(zhuān)業(yè)的網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì),昆玉網(wǎng)站改版等技術(shù)服務(wù)。擁有十多年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開(kāi)發(fā)。
這里爪爪熊準(zhǔn)備寫(xiě)成一個(gè)golang的庫(kù),并開(kāi)源到github上,后續(xù)更新將直接更新到github中,如果你有興趣可以和我聯(lián)系。 github點(diǎn)抗 /dpawsbear/bear_rpi_go
我在很多的教程中都看到說(shuō)樹(shù)莓派的PWM(硬件)只有一個(gè)GPIO能夠輸出,就是 GPIO1 。這可是不小的打擊,因?yàn)槲蚁胧褂弥辽偎膫€(gè) PWM ,還是不死心,想通過(guò)硬件手冊(cè)上找尋蛛絲馬跡,看看究竟怎么回事。
手冊(cè)上找尋東西稍等下講述,這里先提供一種方法測(cè)試 樹(shù)莓派3B 的 PWM 方法:用指令控制硬件PWM。
這里通過(guò)指令的方式掌握了基本的pwm設(shè)置技巧,決定去翻一下手冊(cè)看看到底PWM怎么回事,這里因?yàn)闆](méi)有 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)闆](méi)有示波器,暫時(shí)不好測(cè)試。先找到下面對(duì)應(yīng)圖:
根據(jù)以上兩個(gè)圖對(duì)比可以發(fā)現(xiàn)如下規(guī)律:
對(duì)照上面的表可以看出從 BCM2837 中印出來(lái)的能夠使用在PWM上的就這幾個(gè)了。
為了驗(yàn)證個(gè)人猜想是否正確,這里先直接使用指令的模式,模擬配置下是否能夠正常輸出。
通過(guò)上面一系列指令模擬發(fā)現(xiàn),(GPIO1、GPIO26)、(GPIO23、GPIO24)是綁定在一起的,調(diào)節(jié)任意一個(gè),另外一個(gè)也會(huì)發(fā)生變化。也即是PWM0、PWM1雖然輸出了兩路,可以理解成兩路其實(shí)都是連在一個(gè)輸出口上。這里由于沒(méi)有示波器或者邏輯分析儀這類(lèi)設(shè)備(僅有一個(gè)LED燈),所以測(cè)試很簡(jiǎn)陋,下一步是使用示波器這類(lèi)東西對(duì)頻率以及信號(hào)穩(wěn)定性進(jìn)行下測(cè)試。
小節(jié):樹(shù)莓派具有四路硬件輸出PWM能力,但是四路中只能輸出兩個(gè)獨(dú)立(占空比獨(dú)立)的PWM,同時(shí)四路輸出的頻率均是恒定的。
上面大概了解清楚了樹(shù)莓派3B的PWM結(jié)構(gòu),接下來(lái)就是探究如何使用Go語(yǔ)言進(jìn)行設(shè)置。
因?yàn)槟玫搅耸謨?cè),這里我想直接操作寄存器的方式進(jìn)行設(shè)置,也是順便學(xué)習(xí)下Go語(yǔ)言處理寄存器的過(guò)程。首先需要拿到pwm 系列寄存器的基地址,但是翻了一圈手冊(cè),發(fā)現(xiàn)只有偏移,沒(méi)有找到基地址。
經(jīng)過(guò)了一段時(shí)間的努力后,決定寫(xiě)一個(gè) 樹(shù)莓派3B golang包開(kāi)源放在github上,只需要寫(xiě)相關(guān)程序進(jìn)行調(diào)用就可以了,以下是相關(guān)demo(pwm)(在GPIO.12 上輸出PWM波,放上LED燈會(huì)有呼吸燈的效果,具體多少頻率還沒(méi)有進(jìn)行測(cè)試)
以下是demo(pwm) 源碼
LiteIDE是一款專(zhuān)門(mén)為Go語(yǔ)言開(kāi)發(fā)的跨平臺(tái)輕量級(jí)集成開(kāi)發(fā)環(huán)境(IDE),由QT編寫(xiě)。
LiteIDE主要特點(diǎn): 支持主流操作系統(tǒng)
Windows
Linux
MacOS X Go編譯環(huán)境管理和切換
管理和切換多個(gè)Go編譯環(huán)境
支持Go語(yǔ)言交叉編譯 與Go標(biāo)準(zhǔn)一致的項(xiàng)目管理方式
基于GOPATH的包瀏覽器
基于GOPATH的編譯系統(tǒng)
基于GOPATH的Api文檔檢索 Go語(yǔ)言的編輯支持
類(lèi)瀏覽器和大綱顯示
Gocode(代碼自動(dòng)完成工具)的完美支持
Go語(yǔ)言文檔查看和Api快速檢索
代碼表達(dá)式信息顯示F1
源代碼定義跳轉(zhuǎn)支持F2
Gdb斷點(diǎn)和調(diào)試支持
gofmt自動(dòng)格式化支持 其他特征
支持多國(guó)語(yǔ)言界面顯示
完全插件體系結(jié)構(gòu)
支持編輯器配色方案
基于Kate的語(yǔ)法顯示支持
基于全文的單詞自動(dòng)完成
支持鍵盤(pán)快捷鍵綁定方案
Markdown文檔編輯支持
實(shí)時(shí)預(yù)覽和同步顯示
自定義CSS顯示
可導(dǎo)出HTML和PDF文檔
批量轉(zhuǎn)換/合并為HTML/PDF文檔 Sublime Text 2(以下簡(jiǎn)稱(chēng)Sublime)+ GoSublime + gocode + MarGo的組合。
其優(yōu)點(diǎn)有: 自動(dòng)化提示代碼。 保存的時(shí)候自動(dòng)格式化代碼,讓您編寫(xiě)的代碼更加美觀,符合Go的標(biāo)準(zhǔn)。 支持項(xiàng)目管理 支持語(yǔ)法高亮 熟悉Java的讀者應(yīng)該對(duì)于idea不陌生,idea是通過(guò)一個(gè)插件來(lái)支持go語(yǔ)言的高亮語(yǔ)法,代碼提示和重構(gòu)實(shí)現(xiàn)。
安裝教程:
安卓版因?yàn)楦袷绞莂pk格式的,安裝起來(lái)非常簡(jiǎn)單,因此就不贅述了,重點(diǎn)講解蘋(píng)果手機(jī)的。
1、先使用數(shù)據(jù)線(xiàn)將你寶貴的iPhone或者是ipad設(shè)備和電腦連接,然后打開(kāi)電腦上的itools或者其他的助手類(lèi)工具都可以;
2、接著下載蘋(píng)果版叉叉助手,注意格式是.deb格式的,保持原狀即可,千萬(wàn)不要解壓;
3、然后使用助手工具打開(kāi)【文件系統(tǒng)】,找到【Cydia源安裝目錄】也就是/var/root/Media/Cydia/AutoInstall目錄,將你剛才下載的xxzhushou_ios.deb文件直接拖動(dòng)到這個(gè)目錄下面;放入目錄下面。
4、之后需要重啟一次蘋(píng)果手機(jī),不管是電源鍵手動(dòng)重啟還是直接使用助手來(lái)自動(dòng)重啟都可以。重啟完畢后,就可以在設(shè)備桌面上看到叉叉助手的圖標(biāo)了。