在前一小節(jié)中介紹了點(diǎn)亮第一個(gè)LED燈,這里我們準(zhǔn)備進(jìn)階嘗試下,輸出第一段PWM波形。(PWM也就是脈寬調(diào)制,一種可調(diào)占空比的技術(shù),得到的效果就是:如果用示波器測(cè)量引腳會(huì)發(fā)現(xiàn)有方波輸出,而且高電平、低電平的時(shí)間是可調(diào)的。)
站在用戶(hù)的角度思考問(wèn)題,與客戶(hù)深入溝通,找到乳源網(wǎng)站設(shè)計(jì)與乳源網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶(hù)體驗(yàn)好的作品,建站類(lèi)型包括:成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、主機(jī)域名、網(wǎng)站空間、企業(yè)郵箱。業(yè)務(wù)覆蓋乳源地區(qū)。
這里爪爪熊準(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) 源碼
Android中文版
api手冊(cè)地址:
Ant最新版
api手冊(cè)地址:
ASM字節(jié)碼操作
api手冊(cè)地址:
Axis2最新版
api手冊(cè)地址:
Bash腳本
api手冊(cè)地址:
Bootstrap 3
api手冊(cè)地址:
Bootstrap 4
api手冊(cè)地址:
C/C++
api手冊(cè)地址:
C3P0連接池
api手冊(cè)地址:
CentOS使用文檔
api手冊(cè)地址:
Commons-Beanutils
api手冊(cè)地址:
Commons-Fileupload
api手冊(cè)地址:
Commons-IO最新版
api手冊(cè)地址:
Commons-Lang最新版
api手冊(cè)地址:
Commons-Net最新版
api手冊(cè)地址:
CSS 3
api手冊(cè)地址:
DBCP連接池
api手冊(cè)地址:
Dom4j
api手冊(cè)地址:
dubbo中文文檔
api手冊(cè)地址:
EhCache
api手冊(cè)地址:
Freemarker
api手冊(cè)地址:
Go語(yǔ)言
api手冊(cè)地址:
Hadoop
api手冊(cè)地址:
Hibernate中文版
api手冊(cè)地址:
IKAnalyzer中文版
api手冊(cè)地址:
Java 10
api手冊(cè)地址:
Java 6
api手冊(cè)地址:
Java 7
api手冊(cè)地址:
Java 8中文版
api手冊(cè)地址:
jqGrid中文版
api手冊(cè)地址:
Jquery中文版
api手冊(cè)地址:
Json-lib
api手冊(cè)地址:
Junit4最新版
api手冊(cè)地址:
Kryo
api手冊(cè)地址:
Log4j最新版
api手冊(cè)地址:
Lucene
api手冊(cè)地址:
Maven
api手冊(cè)地址:
Windows MFC中文版
api手冊(cè)地址:
Mybatis
api手冊(cè)地址:
MySql中文版
api手冊(cè)地址:
Netty 3.6
api手冊(cè)地址:
Nginx中文版
api手冊(cè)地址:
OpenJPA最新版
api手冊(cè)地址:
PHP中文版
api手冊(cè)地址:
POI-apache
api手冊(cè)地址:
QuickServer
api手冊(cè)地址:
redis中文參考文檔
api手冊(cè)地址:
Ruby
api手冊(cè)地址:
Ruby-library
api手冊(cè)地址:
Ruby on Rails
api手冊(cè)地址:
Shiro
api手冊(cè)地址:
Spring最新版
api手冊(cè)地址:
Spring for Android
api手冊(cè)地址:
Spring Boot
api手冊(cè)地址:
Spring Cloud中文文檔
api手冊(cè)地址:
Spring Security
api手冊(cè)地址:
Spring中文版
api手冊(cè)地址:
Struts 2最新版
api手冊(cè)地址:
Taperstry
api手冊(cè)地址:
TensorFlow中文
api手冊(cè)地址:
Tomcat
api手冊(cè)地址:
Ubuntu
api手冊(cè)地址:
Velocity 1.7
api手冊(cè)地址:
VelocityTools2.0
api手冊(cè)地址:
Vue Router中文參考
api手冊(cè)地址:
vue.js中文文檔
api手冊(cè)地址:
XMLBeans
api手冊(cè)地址:
Yahoo UI中文版
api手冊(cè)地址:
Zend Framework中文版
api手冊(cè)地址:
Zookeeper
api手冊(cè)地址:
如果你想每一步走得扎實(shí),那么我的建議如下:
對(duì)一名從未接觸過(guò)程序開(kāi)發(fā)的小白來(lái)說(shuō),首先得足夠了解計(jì)算機(jī),至少你得知道你寫(xiě)的代碼在計(jì)算機(jī)內(nèi)部是如何運(yùn)行的,你的數(shù)據(jù)是如何通過(guò)網(wǎng)絡(luò)傳輸,《微機(jī)原理與接口技術(shù)》和《TCP/IP詳解》(三卷)是很好的學(xué)習(xí)入門(mén) 之選,同時(shí)也是很好的參考手冊(cè)
一切準(zhǔn)備就緒,開(kāi)始寫(xiě)你的第一個(gè)程序,建議選C語(yǔ)言,基本的數(shù)據(jù)結(jié)構(gòu)、指針、函數(shù)、循環(huán)、條件判斷、手動(dòng)GC等都上手試一遍,做到了然于胸,信手拈來(lái)
進(jìn)入正題,學(xué)習(xí)Go語(yǔ)言,你會(huì)發(fā)現(xiàn),換湯不換藥,程序的構(gòu)成無(wú)非那么幾類(lèi),當(dāng)然Go會(huì)有自己的特性,比如slice、goroutine、channel等,當(dāng)然這一切得基于go開(kāi)發(fā)環(huán)境
至于教程,最合適的莫過(guò)于官方文檔,老老實(shí)實(shí)看完,別太在意網(wǎng)上的各種項(xiàng)目實(shí)戰(zhàn),先學(xué)會(huì)走路,再學(xué)跑
最重要的一點(diǎn):紙上得來(lái)終覺(jué)淺,絕知此事要躬行,多敲敲代碼,熟能生巧,happy coding!
這里所用到的工具就是javadoc2chm.百度”javadoc2chm“下載。我看到有一個(gè)1積分下載的,我這里也有,需要的話可以私聊。
javadoc2chm.exe的大小只有102k左右,謹(jǐn)防上當(dāng)受騙啊。
使用javadoc2chm制作幫助文檔的時(shí)候,首先下載的文件中有幫助文檔的html版。例如我下載的Struts2就有doc目錄。
打開(kāi)javadoc2chm.exe. path to javadoc是用來(lái)選擇doc的路徑的,output filename是用來(lái)給輸出的chm一個(gè)名字,以.chm結(jié)尾,title是打開(kāi)chm后首頁(yè)的文字
我這里以制作Hadoop2.7.1的幫助文檔實(shí)例。選好目錄后,點(diǎn)擊Go就開(kāi)始只做了,制作完成后,go按鍵變黑色可用,只做好的chm文檔存放在你選擇的html幫助文檔的目錄里。