国产无码黄电影_麻豆av一区二区三区不卡_伦理在线视频免费观看视频_九九热这里只有精品33_亚洲av中文无码乱人伦在线播放_国产成人精品aa毛片久久_成人欧美一区二区三区的电影在线_78精品国产综合久久香蕉_亚洲日本成本人在线观看

0 賣盤信息
BOM詢價
您現在的位置: 首頁 > 電子資訊 >基礎知識 > 如何學stm32單片機?STM32單片機學習筆記?

如何學stm32單片機?STM32單片機學習筆記?

來源:
2024-01-09
類別:基礎知識
eye 29
文章創建人 拍明芯城

  為什么學習STM32?

  先列舉一下大家問得最多的幾個問題,然后我們一起由問題切入進行一些討論。

  首先問題1:我是單片機好還是直接學STM32好呢?

  答:1)首先我們談下目的,你學習的最終目的是能夠開發產品或者成為項目經理;而目前市場上的單片機都基本用C語言了,用匯編進行開發的項目已經非常少了

1.png

  2)在硬件接口這個環節上都一樣:學51單片機和學STM32都是一樣的,主要看其市場上的資料是不是足夠充分,都是調用硬件的接口,控制I/O,完成相應的功能

  3)在軟件這個環節上,STM32要強過51單片機:為什么這么說呢?學STM32它自帶一個官方的庫,而這個庫的源代碼是開放的;而51單片機卻沒有,也就說,當你做一個具體項目的時候,用STM32開發項目速度會比用51單片機要輕松快捷,方便,并且BUG也少。

  4)ST的這個庫專門是由ST官方團隊打造的,是經過詳細認真測試過的,例如:你要做處理器支持USB的U盤功能,對51來說,你可能需要在網上去找這樣一個驅動,然后移植到51單片機上,這樣的缺點是:移植本身就比較累,比較麻煩,并可能有些代碼不一定經過驗證了的,很難保證沒有BUG;而STM32是官方推薦的庫源代碼,這些功能早就有了,所以用STM32開發項目做起來非常的輕松,愉快,放心,BUG也少。

  5)從選型方面考慮:STM32的性價比與單片機相比,雖說單片機很便宜了,一般市場上就5塊錢左右,而STM32便宜的是10元多一點,但是如果比性價比,STM32還是很要強過51單片機很多,為什么呢?因為首先STM32是72MHZ的主頻,而51單片機是10多M,隨著未來產品功能增多了,要求越來越高,可能51單片機的速度和性能就滿足不了需求,而STM32足夠強勁的主頻,可以延緩這個問題,使得您的產品周期生命得到延長,而且你有其他新需求也可以靈活增加上來,因為STM32完全有能力負擔得起。

  問題2:STM32如何才能快速入門?

  答:首先就是最好具備基本的電子基礎,如果您只有純軟件基礎,那就應該打扎實C語言基礎,然后弄一塊開發板,邊學邊補充硬件電子方面的知識。

  因為軟件背景去理論的學硬件,那是非??菰锏氖虑?,而且效果也不一定理想;那么此時你就需要一款比較的板子,板子大與小,功能多與少都不是那么重要,這里最重要的就是要資料豐富,資料豐富,才是最好的;我當時就從同事那里弄了一塊STM32神舟系列的板子,大概花了1,2個星期就正式入門了。以下是我摘抄的關于那個板子的一些特點,大家可以看看:

  特點1:STM32神舟系列的每款開發板都有一個非常詳細的幾百頁的說明手冊。有很多愛好者反映,買到的開發板沒有手冊或手冊不全,手冊不詳細,拿到手后沒有什么用,無從下手,那么您可以考慮STM32神舟系列的開發板,其中神舟IV號的手冊有將近700多頁之多,無論還是從原理還是從代碼都是非常值得閱讀的資料書籍。

  STM32如何才能快速入門?

  特點2:開發板所帶的例程代碼非常好,易懂和方便移植。很多開發板的代碼寫得很難閱讀,不規范,有的甚至是用寄存器實現的代碼,可讀性非常差,并且不容易重用到新的實際項目中,而STM32神舟系列的開發板,全部用ST的專用庫實現,庫代碼全部開源,庫即是將底層寄存器部分代碼全部封裝成函數,融入了軟件設計的架構理念,想跟蹤到硬件實現的驅動底層,就跟進對應的函數即可看到一切原始代碼,所以您可以有選擇的想看寄存器版本就看寄存器版本,想看函數庫版本就有函數庫版本,無論對實際項目也好,針對學習也好,兩全其美!!!

  特點3:神舟系列板子因為系列全,所以技術支持以及技術進一步拓展空間大。許多單獨的開發板技術支持根本不行,有的就算是技術支持不錯,但是你想更深入一步去學習,就很難了;而成一個完整系列的STM32神舟系列是值考慮和選擇的,因為該系列包含了103RBT,VCT,VET,ZET,以及107VCT,207,4XX系列等多個系列的開發板,無論你先學難,再拖展知識面,還是怎么樣都好,絕對不怕資料少!沒資料!!!而且各個系列之間還可以相互借鑒,相互依存,各個設計的高手非常多,大家一起相互交流,產生更多更新碰撞和資料。

  特點4:硬件資料豐富。硬件資源以及相關資料都比同類開發板要多很多,因為該系列是一個組織在維護和發展,并不是單獨的個人愛好所設計的板子,這個組織走在最前沿,不斷收集行業內的知識,在神舟系列上進行驗證和實現,所以資料也會越來越多。

  特點5:板子的網絡接口特別加強。許多STM32開發板沒有考慮到網口這塊以及無線2.4G(WIFI)和315M通信的例程,隨著嵌入式設備在網絡方面日益普及,以太網以及無線網都是嵌入式設備中必不可少的一個環節,就算有的嵌入式設備不需要網口,但是做為提供開發板的設計,不可不考慮加強網口這塊的例程,代碼,講解,為各個開發愛好者做一個提前準備和設計,而這些接口神舟系列有已經直接運行的代碼以及詳細的講解,大家獲得相關資料,相互參考一下。

  問題3:為什么是STM32呢?為什么不是ARM9,ARM11呢?

  答:這里有個誤區,很多同學如果就僅僅希望入門嵌入式,那就盡量不要選擇ARM9和ARM11,為什么呢?因為誘惑太多了,因為你一旦選擇ARM9或 ARM11,那么這個平臺就僅僅linux和wince等操作系統內核,驅動,應用,各種協議,硬件原理圖,等都有夠學一年半載了,沒這點時間,你無法完全掌握,所以并不適合入門,周期太長,難度相對來說較大。

  為什么是STM32呢?為什么不是ARM9,ARM11呢?

  入門最好選擇主頻低一點的處理器,一切都是先掌握好原理,弄明白,弄透徹了,一切就都好辦!所以單片機中,STM32是目前最最主流的芯片,加上目前 STM32的資料非常的多,所以,最好還是推薦STM32的開發板做為入門級的板子,學會之后,即可自己獨立開發出各種產品,STM32官方提供的開源代碼庫也是非常好用,將底層的各種匯編,管腳定義都封裝成了各個功能函數,開發起來非常方便,快捷!

  20年的嵌入式經驗分享學習——來自STM32神舟系列開發板設計師的總結

  首先,如果你有幸看到這篇文章,千萬不要試圖在2個小時內閱讀完,就算你2個小時閱讀完,我相信你也不會理解里面講解的精華之處,我相信,你應該將此文章,慢慢品嘗,這絕對是一篇需要品嘗2~3天,再結合自己過往的經驗,加上自己的思考,我相信會對你不僅僅是技術能力,甚至包括整體的思維方式都會有一個非常大的提高。

  結合這篇文章,再結合STM32神舟系列開發板一些學習,可能會更加加深對嵌入式概念的理解。

  我寫這篇文章的目的,是用本人20年的嵌入式經驗呈現給大家一副完整的產品,項目開發藍圖,用本人多年經的歷總結了一些教訓無私的分享給各位,希望各位今后能站在本人的肩膀之上,少走彎路,多為公司,為個人多做貢獻,那我的愿望就達到了,也同時希望能看到大家反饋和回復,留個腳印,留下你的見解和智慧,為后人乘涼打點基礎,先在這謝謝各位了。

  那么由此開始我們充滿知識的旅程吧,最重要的一點,就是在一個產品或項目的開發過程中,如果沒有明確的目標,那么成功將無從談起,做任何事的第一步必須明確目標。

  與日常生活中的大多數事務一樣,設計一個嵌入式產品的過程也必須從確定目標開始,對生產的產品進行明確定義。對產品進行定義主要是對產品是什么和能有什么功能進行描述,其次是在我們的整個開發過程中,應該要撰寫一些開發文檔,大概的框架的如下:

  1)產品需求文檔:描述產品的特性

  2)功能需求文檔:描述產品必須具備的功能

  3)工程說明文檔:描述系統實現的方法和滿足需求的手段

  4)硬件說明文檔:對有關硬件進行描述

  5)軟件或固件說明文檔:描述特定處理器下設計微程序以及固件的方法

  6)測試說明文檔:描述必須測試的項目和驗證系統正常運行的方法

  1.需求定義

  需求定義用來描述產品的基本功能,對于公司來說,需求一般由該公司的市場銷售部門或該公司的主要客戶來制定;而對小公司或愛好者,技術人員可以自己負責定義需求,并撰寫成文檔;對于STM32神舟系列開發板來說,主要就是提供各種接口,為大家開發產品時提供借鑒!

  通常需求定義是圍繞以下幾個因素而來:

  1)系統的用途(定義需要系統實現的各種功能)

  2)實際輸入輸出是何種方式實現的(為元器件的選型做參考)

  3)系統是否需要操作界面(涉及軟件層操作系統的選型)

  其實對小型的嵌入式產品來說,定義需求是非常關鍵的,因為需求清楚了,就可以避免后續開發過程中出現的諸如隨機存儲器(RAM)容量不足或所選的CPU速度不能滿足處理的需要等一系列問題。

  下面舉個簡單的實際例子,供大家來參考:

  系統描述:用于從化溫泉的水泵換水系統(用STM32神舟III號開發板模擬實現)

  電源輸入:使用來自于變壓器的9V~12V直流電

  水泵功率:375W

  1)使用單相交流電機,由機械電氣進行控制

  2)如果溫泉池處于低水位,則輸入開關閉合信號,以禁止水泵繼續運行

  3)用戶可以自由設置水泵運行或關閉的時間長度

  4)除了自動設置控制外,還需要提供一種人工裝置來允許維護人員靈活控制水泵進行維修

  5)水泵開啟/關閉/人工干預的時間可以30分鐘為單位,在30分鐘到23小時的范圍內進行調節

  6)顯示設備可以指示水泵的開關狀態,剩余時間,以及水泵是否處于人工干預模式

  7)具備監視低水位的功能,并顯示在屏幕上

  如果需要商用,那么除了上面給出的功能要求外,其設計文檔中還要包括電磁干擾(EMI)和電磁兼容性(EMC)認證、安全認證以及使用環境(包括環境溫度、濕度、鹽霧腐蝕等)等方面的需求。

  實際上,以上的需求確定之后,接下來就是要考慮選擇一款合適的CPU來滿足和實現系統的功能,那么我們就要將上述7點用戶能夠理解的需求轉化成我們專業領域的需求,轉化如下,大家可以參考一下:

  a.處理或更新輸入輸出信號的速率究竟需要多快?

  解釋:目前嵌入式處理器的主頻一般都在幾十兆到幾百兆不等,單片機的主頻一般是幾十兆,STM32神舟系列開發板的CPU都是72MHZ,有的 ARM9,ARM11處理器可以到幾百兆;我們主要看這個產品是否需要對大量數據進行處理,或是否需要對緩沖區進行頻繁操作,是否有類似的占用CPU資料的工作要做,這就決定我們要選擇一款合適的處理器來讓該產品得到最佳的性能。

  b.是否可使用單片集成電路(專用IC)或FPGA來完成數據處理?

  解釋:如果可以的話,就不一定要選擇處理器來做,用這些專業芯片就能替代

  c.系統是否有大量的用戶輸入輸出操作(如對開關和顯示設備進行頻繁操作)?

  解釋:如果有的話,要在處理器選型的時候考慮這些因素,選擇一款能夠滿足以上要求的CPU.

  d.系統與其他外部設備之間需要使用何種接口?

  解釋:這也是需要評估處理器的一個關鍵問題,選擇具備這些接口功能的處理器會方便于我們的電路設計以及軟件編程

  e.設計完成后是否有可能需要進行改動,或在設計過程中系統需求是否可能出現變化?我們的設計是否能適應系統需求的變化?

  解釋:要避免選擇的處理器剛好滿足當前要求,這樣當以后事務要求逐漸提高,處理器性能如果還有一定空間的話,那么就可以重用目前的產品;第二個就是要選擇不會即將停產的芯片,很多處理器用得很廣乏,可以借鑒的資料也很多,但是很可能這款芯片已經在市場上流行很長時間了,芯片廠商已經推出更新換代的替代品了,如果你選擇了這款芯片,很可能1,2年后就買不到這款處理器芯片了,導致不得不重新選擇新的處理器,重新設計產品,這樣的既耗費時間,金錢,更消耗人力,延誤市場的戰機。

  2.處理器的選擇

  2.1.需要使用的I/O管腳數量

  多數處理器都是使用內存和外部管腳來控制輸入輸出設備的,通常處理器都會有內置ROM和RAM的,如果內置的內存就已經滿足需要,那么處理器就可以節省產生引用外部存儲器信號的引腳,這樣處理器可為輸入輸出提供較多的設備管腳(某些處理器支持外部RAM或ROM的使用,但對外部存儲器進行訪問時,處理器一般需要占用8條到10條I/O管腳)。

  還有,有些處理器帶有專用的內部定時時鐘,這類時鐘也需要使用一個端口管腳來實現某些定時功能;某些處理器中還具有漏極輸出和高電流輸出能力,可以方便的直接驅動繼電器或電磁鐵線圈,而不再需要額外驅動硬件的支持。

  當對處理器I/O管腳進行計數時,我們一定要把使用處理器內部功能(如串行接口和定時器等)時限制使用的某些管腳考慮在內。

  2.2.需要使用的接口數量

  嵌入式處理器的主要功能是與應用環境中的硬件進行交互操作,這不僅需要外部硬件對接口具有實時處理能力,而且還要求處理器必須以足夠快的速度對接口數據進行有效處理。

  舉例來說,STM32神舟系列開發板的CPU是ST公司出品的一款工業級微處理器,它基于CORTEX M3的核心,處理主頻可達72MHZ,同時處理器內部配置了USB、SPI、IIC等接口,像STM32神舟IV號的107處理器還支持Ethernet 等輸出接口,其目的是更方便的利用這些接口開發出嵌入式產品。

  需要注意的是,由于許多處理器具有的局限性沒有在處理器技術資料中給予足夠的說明,因此一定要仔細閱讀處理器的指標說明。例如,在閱讀資料的過程中發現,該資料可能會說明其串行接口可以在最高波特率下工作,但仔細研究該處理器的指標數據時,可能會發現并非該串口接口的所有操作模式都可以在最大波特率下運行。

  深入了解并明確接口要求的方法:可以自己動手編寫一些程序來對接口進行實際測試,以確認某種處理器是否可以滿足應用的要求;因為,確認某個處理器是否可以滿足接口要求并非是一件簡單的任務。

  2.3.需要使用的內存容量

  決定內存容量的大小是嵌入式產品設計過程中的一個基本步驟,如果對所需內存容量估計過高,那么我們就有可能會選擇成本較高的解決方案;反之,如果低估了所需內存容量,就有可能因系統需要重新設計而導致項目不能按時完工。

  a.RAM和ROM的區別:存儲器分為隨機存儲器(RAM)和只讀存儲器(ROM)兩種。其中ROM通常用來固化存儲一些生產廠家寫入的程序或數據,用于啟動電腦和控制電腦的工作方式。而RAM則用來存取各種動態的輸入輸出數據、中間計算結果以及與外部存儲器交換的數據和暫存數據。設備斷電后,RAM中存儲的數據就會丟失。

  b.隨即存儲器(RAM)的選擇:RAM容量的預測是比較直觀的,我們只需把所有變量數目與所有內部緩沖區的容量以及先入先出(FIFO)隊列長度和堆棧長度直接相加,就能得到所需RAM容量的總數。

  如果所需內存容量超出這類處理器的尋址范圍,那么只能通過增加外部RAM來滿足需求;然而,增加外部RAM的同時將會占用一定數量的I/O管腳來對擴展內存進行尋址,這種擴展往往會影響到處理器來實現應用的初衷。

  需要注意的一個問題是,某些微處理器限制RAM的使用,這種限制的目的是為了借用部分內存存儲器作為內部寄存器組使用。除了以上因素外,所使用的開發語言也對所需RAM容量有一定的影響,某些效率較低的編譯程序可能會占用大量寶貴的RAM空間。

  c.只讀存儲器(ROM)的選擇:系統所需ROM的大小應該是系統程序代碼與所有基于ROM的數據表容量之和。預測所需ROM空間容量比較困難的部分是預測程序代碼的長度,解決這類問題的方法只能是隨著經驗的逐步積累來提高預測精度。

  然而,最重要的并不是精確計算程序的代碼長度,而是要清楚地估算代碼長度的上限。根據經驗,如果80%的ROM空間被代碼占用的話,那么就太擁擠了,除非能確保系統需求不會有任何變化,否則至少要為可能發生的變化保留足夠的備用ROM空間。

  在多數情況下,我們可以試著在ROM中寫入一部分程序代碼,以便觀察代碼占用空間的情況,對于帶有內部ROM的微處理器系統來說,系統程序都只能占用有限的程序存儲器空間。

  d.經驗之談:ROM與RAM使用情況相類似,程序代碼長度與所選用的開發語言有關。舉例來說,使用匯編語言編制的程序要比使用C語言編制的程序占用少得多的空間。

  對于追求低成本的小型系統來說,一般不提倡使用高級程序設計語言;這是因為雖然高級語言在使用、調試以及維護方面來的比較容易,但同時這類語言需要占用更多的內存空間和大量的處理器時鐘周期。

  如果開發語言選擇不當,其后果可能是把一個簡單、低成本的單片機系統變為一個需要使用配置若干兆字節RAM空間的64位嵌入式處理器系統。

  2.4.需要使用的中斷數量

  中斷的主要用途是向中央處理器通報當前發生的某類特殊事件,這類事件包括諸如定時器超時事件、硬件引發的事件等。

  需要強調的是,多數系統設計師經常過多地使用中斷功能,實際上,中斷的主要作用只是中斷現行程序的執行,中斷最適用于必須要求中央處理器立即提供服務的事件。

  在需要設計和使用中斷的情況下,一定要首先確認實際需要的中斷數量,然后必須考慮到系統內部占用的中斷資源,如果需要使用的中斷資源超出了處理器可以接收的中斷數量,我們就應借助于某些特殊手段來減少所需中斷信號的數量。

  2.5.實時處理方面的考慮

  實時處理是一個涉及范圍很廣的題目,其主要內容與系統的處理速度有密切聯系,實時事件是嵌入式微處理器需要關注的主要任務。

  例如:處理器跟串口進行通信時,通常通過上層軟件(為了保證實時性,進行任務切換的時間足夠短),然后再占用處理器去執行從串口拿數據的任務,并且要保證處理器的速率比串口速率快,那么處理器可以以最快的速度反應并處理串口的相關的任務,這樣就可以達到最大的實時性;

  另一方面,如果處理器本身就內置了串口控制器、或DMA、或LCD的控制器等,那么它就可以保證直接使用這些處理器內置的接口去控制串口、液晶屏等對象,以達到最大的實時性能。

  2.6.該廠商是否提供好的開發工具和環境

  選擇一款新的處理器,很可能就要使用一個新的開發工具和開發環境,包括軟件的編譯環境等;對于開發日程安排比較緊張的項目來說,開發人員往往無法抽出專門的時間來研究,熟悉新的開發工具,從而也無法全面掌握開發工具的使用技巧。

  并且,有的開發工具價格也比較昂貴,而且很可能只能從制造商那里購買,還有仿真工具也是需要付費的,這些對我們在選擇一款處理器的時候,是都應該考慮進去的成本因素。

  2.7.處理器速度方面的考慮

  主要考慮幾個細節問題:

  1)處理器速度與處理器時鐘之間的關系

  例:單片機8031為例,由該處理器可以適應12MHz頻率的輸入時鐘,因此就可以認為它是一個速度為12MHz的處理器了嗎?不是,實際上,由于該處理器內部邏輯電路執行每條指令需要多種不同頻率的時鐘脈沖,因此該處理器內部時鐘電路要對輸入的12MHz時鐘12分頻處理;最終為處理器提供的只是 1MHz主頻。

  有的時候,80MHz主頻的處理器(80MHz輸入時鐘,80MHz執行速度)要比200MHz主頻的處理器(200MHz輸入時鐘,50MHz執行速度)執行速度要快得多。

  2)處理器指令系統

  如果不需要執行復雜數學運算的應用,那么RISC指令集的處理器要快;如果執行比較復雜的操作,則CISC指令集的處理器速度要更快。

  3)芯片結構體系

  現在有的芯片是將多個不同功能的核封裝到一個芯片IC中,定制某種特定的功能,比如DSP,其中包括用于實現數字解碼、乘法運算的硬件乘法器和移相器等;然而,這類處理器也由其自身局限,往往在執行某些普通操作之前必須要使用額外的指令來把RAM中的數據放入內部寄存器,相比之下,一般處理器只允許對 RAM中的數據進行直接訪問。

  2.8.只讀存儲器(ROM)的選擇

  多數工程項目在其開發階段一般使用可擦寫可編程只讀存儲器(EPROM)或快速存儲器(Flash Memory);這類可擦寫可重復寫入存儲器的主要優點是可多次使用。一旦產品研制完畢,就可以用一次寫入設備(OTP)來取代EPROM存儲器,一次性寫入器件的外觀與封裝幾乎與EPROM完全一樣,惟一不同之處就是其表面沒有擦出窗口,并且價格要比EPROM低很多。

  但是,另外一種情況,如果該產品今后需要升級固件,或在線編程,那么我們還是應該選擇可擦寫可編程的存儲器。

  還有一種是非易失的存儲器,例如制造一臺電視機,就有可能需要該設備具有記憶上次觀看最后一個頻道的功能,即使在切斷電源后,該頻道信息也不會丟失。

  總結:所以,根據不同的產品選擇不同的存儲器也是一門很講究的學問。

  2.9.電源的要求

  在某些設計中方案中,電源根本不存在問題,對電源唯一的要求就是可以為電路正常供電;實際上,選擇電源主要要考慮三個方面的問題:

  1)要注意設計方案中是否對電源的供電方式有所限制,例如,是否像大多數家用電器那樣需要使用屋內墻上的電源插座供電,或是是使用USB接口供電

  2)看系統是否需要使用電池供電方式,如果這樣,我們就要考慮選擇那種對驅動電流要求不高的處理器,然后再為其選擇合適的電池。

  3)休眠電流:許多微處理器都支持低功率運行模式,在這種模式下,系統的CPU處理器將處于休眠狀態,同時所有外部設備的電源供電都被暫時切斷,以便減少系統的電能消耗;某些微處理器在這種方式下需要的維持電流極小,但也有一些微處理器在這種方式下并不能節省多少功率;不管怎樣,我們都要對系統在節點模式下的工作時間有一個估測,以便對具體情況選擇使用的電池。

  總之,無論哪種情況,我們都要對系統需要的供電總功率做到心中有數。

  2.10.設備工作環境的要求

  環境要求主要內容是考慮溫度,濕度等;如果系統必須在溫度范圍較大的環境下運行,諸如用于軍事設備或汽車的控制系統,那么處理器可選擇的范圍就要小得多;

  并且由于大范圍溫度變化的設備通常比較昂貴,因此在設計過程中就不能再根據一般工業級器件的價格來制定預算。

  2.11.使用周期成本

  如果我們的產品是stm32神舟開發板,在一般情況下,可以不必考慮在用戶現場對stm32神舟開發板程序進行修改的問題,也不用為是否可以得到設備備件而著急,這是因為stm32神舟開發板是一種學習型的消費產品,僅僅只是一款開發板而已。

  換句話說,如果我們的產品是價值幾萬塊的工業設備并且需要常年不斷地運行,那么我們在產品設計過程中就必須從長計議了:

  a.首先,我們需要選擇一種處理器或存儲體系結構都可以升級的器件

  b.考慮到程序升級的可能,我們還要選擇較大容量的內存

  c.最后要注意的則是所選處理器是否可以長期供貨,這一點的重要性遠遠大于處理器的價格

  除了上面的考慮之外,使用周期成本也是在設計之初要考慮的因素??偟膩碚f,生產的部件越多,則可以接受的前期開發成本也就越大。如果產品是mp3,我們可能會選擇一個低價微處理器,同時投入一大筆錢來開發控制mp3的軟件。

  但如果我們的產品是價格昂貴的工業用設備,那么在產品的使用期內,該設備的銷售量將只有幾百臺,毫無疑問,開發這種產品最重要的就是降低開發成本(降低開發成本而不是硬件成本!!!);除此之外,工業產品的成本也不像家用電器或消費電子產品那么敏感。綜上所述,開發工業產品當然要選擇一種便于進行開發并且有助于縮短開發過程的處理器。

  2.12.處理器相關資料是否豐富

  如果該款處理器在市場上已經用得很廣了,那么我們可以獲取更多的相關資料,觀察人家的產品是如何使用處理器的,也能在網絡上找到不少的相關的設計資料以及相關技術主題,這樣就進一步降低了技術門檻,確保了使用該處理器做產品可行性,減低了風險;例如STM32神舟IV號開發板就有針對該板子有個700多頁的手冊文檔,如果我們選擇STM32芯片來開發產品的話,借助詳細資料開發起來就輕松了,達到事半功倍的效果。

  反之,如果是廠商全新推出的處理器,因為市場上還沒有可以借鑒的產品,我們就只能從全英文的芯片手冊開始閱讀,了解這款芯片,這樣開發周期不僅變長,而且不可預知的風險也很大。

  3.開發成本的預測和估計

  大多數項目或產品都有專人負責預測整個過程的開發成本,對于任何項目來說,其開發成本主要包括人力和材料開銷。

  預測開發成本在很大程度上需要根據經驗,這也是為什么大型公司一般指定有經驗的高級工程師來完成這一任務的原因,除了人力和材料的開銷之外,總結下來,還有以下的開銷:

  1)人力成本(開發人員、管理人員、銷售人員、其他行政等輔助人員)的開銷

  2)材料(硬件物料和損耗,有時候需要投幾次PCB版才把產品穩定下來)的開銷

  3)開發系統和開發工具軟件的開銷

  4)硬件工具的開銷(例如示波器、仿真器等)

  對于整個項目來說,上述的開銷將直接可能導致產品成本增加,其中人力成本最為關鍵,尤其是在中國。

  4.產品開發設計文檔(需要包括硬件和軟件兩個方面)

  4.1 硬件文檔撰寫思路

  1)首先是需求定義或產品規格:

  如果這些是產品最終目標的話,那么產品對硬件和軟件的要求就是技術方案的最終目標;對硬件和軟件的要求是從定義用戶界面和系統功能開始的。

  2)其次,根據需求,系統整體定義文檔中給出硬件接口的具體定義:

  定義硬件最有效的方法是從需求開始描述,由于硬件必須支持系統定義的所有功能,因此硬件定義是與系統說明不可分割的;

  例如,我們設計一個定時器(事先需求說明定時器不能與個人電腦連接,故無法使用CRT顯示時間),我們只有兩種選擇:一種是使用發光二極管(LED),另一種是使用液晶顯示器件(LCD);盡管LCD的顯示效果比較好,但考慮到定時器要常年位于戶外,并且早期LCD顯示器不能在低溫下工作,最終還是選擇 LED設備(這整個過程描述了我們硬件選型時的一個思路,這個是密切跟需求掛鉤的)

  3)一旦完成了系統整體說明文檔,就開始進行系統設計:

  首先要對硬件說明的內容進行細化,包括添加能讓工程師理解的設計意圖,以及軟件工程師圍繞硬件進行程序設計時需要使用的硬件信息等。

  完成硬件電路板說明文檔后,我們還要在該文檔中增加一個用來描述系統的原始要求的前言部分,包括說明方案的設計思路和方法,除此之外,還要附上軟件工程師用來對硬件進行控制所需的各類信息,這類信息主要包括如下內容(軟件工程所需信息):

  -----內存和I/O端口地址(如果需要,還可以提供內存映射圖)

  -----可用內存容量

  -----狀態寄存器每一位的定義

  -----每個端口管腳的用途

  -----外部設備的驅動方法(例如,說明輸入定時器電路的時鐘頻率等)

  -----其他有管軟件人員設計程序需要了解的信息

  對于比較復雜的系統來說,硬件文檔中經常使用兩個獨立的部分來進行說明;其第一部分用來描述硬件指標和工作原理,第二部分則主要為軟件人員提供程序設計需要的信息。

  4.2 軟件文檔撰寫思路

  1) 軟件文檔與硬件文檔的組織方法類似,軟件要求文檔的主要內容則是定義軟件要實現的功能;一種是在簡單項目設計過程中,軟件定義也可以只對一種電路板使用的軟件給予描述;對較復雜的項目來說,由于參與這種項目的軟件人員分別負責設計驅動不同硬件部分的代碼(同一電路板),因此每個軟件人員可能會為自己的設計代碼指定不同的定義,這類軟件說明需要提供下列的內容:

  -----論述包括需求定義、工程指標、硬件參數等實施項目需要的內容

  -----說明軟件之間、處理器之間或處理器與其內部器件之間使用的通信協議:其內容應包括對緩沖區接口機制、命令/應答協議、信號控制等協議的具體說明。

  -----借助流程圖、偽代碼或者其他可能的方法來描述軟件的實現方法和過程

  2) 軟件與硬件所考慮的不同之處(此經驗方便技術總監或其他相關管理者參考,因為無論是多高深的技術管理者,要么是硬件出身,要么是軟件出身,要么就是非技術出身,armjishu.com里面有少數軟硬件都精通的高手)

  a. 軟件的靈活性遠遠大于硬件,要讓軟件人員搞清楚某個軟件的內部格式是非常困難的任務,解決的辦法:詳細定義其他程序員需要了解的編程接口具體內容,以及其他工程人員在實施開發項目過程中需要使用的技術細節信息。

  b. 軟件工程師只有在收到硬件說明文檔后,才有可能知道如何對系統硬件進行操作;而硬件人員一般不需要了解軟件程序的技術細節。

  c. 由于軟件易于更改,因此程序內容經常會按銷售人員提供的要求發生變更,在某些情況下,軟件文檔的內容無法及時反映程序的最新變化。

  d. 軟件經常是工程項目最后完成的部分,因此其文檔也經常因時間不夠而欠缺完整。實際上,軟件文檔是否詳細、完整,在某種程度上是與公司或客戶的要求有關的。例如,軍事或國家工程一般要求開發商就其所有軟件實現的功能提供全面詳細的文檔

  e. 有個潛規則,對軟件的要求越復雜,則需求的正確可能性就越小,這個是經驗之談了,我們需要把準需求這個準繩來做文章,而不是陷入個人主義以及對軟件要求而憑空發揮自己不切實際的想象。

  f. 我們可以先硬件設計,接著圍繞該硬件編制軟件。雖然實際系統的實現過程可能是軟硬件并行開發,但軟件人員基本上也是圍繞著已經實現的硬件來進行程序設計的;對于更為復雜的系統來說,開發過程可能會出現重復。

  例如,某個項目的硬件工程師和軟件工程師可能會坐下來開會,共同決定使用哪種硬件來實現某種功能;軟件人員可能提出需要為數據緩沖區口沖內存容量,也可能要求提供某種外部設備接口,以便充分利用現成接口程序提供的各種驅動代碼。

  總的來說,必須在提高軟件開發效率與硬件系統的復雜性與成本之間進行權衡。

  5.嵌入式高手對技術的理解(含辛茹苦這么多年的精華體驗)

  有很多人認為:嵌入式系統性能的核心因素是軟件功能,其實,如果按照這種邏輯,系統設計中存在的問題就應由軟件人員來負責;其實這個觀點實際上反映了設計嵌入式產品時如何考慮劃分硬件和軟件各自應實現的功能,也就是這個功能是軟件實現,還是考慮用硬件來實現(硬件實現:需要購買處理該功能的硬件芯片,從而增加成本;軟件實現:無需增加硬件成本,但會占用處理器以及內存的資源,這是armjishu.com的專家們體會到的)。

  例如:我們在這里設計的基于STM32的神舟II號開發板產品,我們可以使用專業的解碼芯片來負責mp3音樂文件的解碼和播放功能,也可以使用另一種方法來解碼mp3語音文件,讓ARM處理器利用軟件控制寄存器來驅動耳機或音響,處理器通過對mp3語音文件解碼之后再將解碼后的數據流按照一定協議格式送給音頻輸出的硬件接口進行播放。

  優點:這種方案在硬件方面節省了一個器件,降低了成本,并且該功能還方便調試(因為是軟件實現的)。

  缺點:從另一個角度來看,雖然節省了一塊語音解碼芯片,但同時要在三個方面增加成本。

  首先,要在程序中增加語音協議解碼的代碼;

  其次,可能要把增加ROM來存放語音解碼的協議,這樣可以增加速度;

  最后,運行該程序將占用處理器的時間和資源。

  其實,話又說回來,對于本案例來說,上述成本的節約并不會引發任何問題,包括驅動程序增加也只需少量的,我們討論這個mp3產品的案例的目的在于說明如何對軟件硬件的功能進行合理劃分。

  總的來說,交給軟件實現的功能越多,則產品的成本就越低,當然這就要處理器必須有足夠的處理速度和內存空間來實現設計指定的功能;常言說得好,天下沒有免費的午餐;把功能分配給軟件來實現,會增加軟件的復雜性、開發時間、以及程序的調試時間;然而,隨著處理器的處理能力的不斷提高,可以預見,越來越多的功能將會由軟件來實現。

  雖然在軟件中實現各種功能會增加開發成本,但如果把功能移植到硬件中實現,則會增加產品的成本,這類開銷是在構造每個系統組件時不可避免的。在低成本設計方案中,增加任何額外的硬件都會對產品成本產生顯著的影響,因此軟硬件功能劃分就是一個決定產品成本的大問題。在諸如大眾消費產品這一類對成本非常敏感的設計方案中,一般都會把無法通過軟件實現的功能排除在外的。

image.png

  STM32單片機學習筆記

  1、 AHB系統總線分為APB1(36MHz)和APB2(72MHz),其中2>1,意思是APB2接高速設備

  2、 Stm32f10x.h相當于reg52.h(里面有基本的位操作定義),另一個為stm32f10x_conf.h專門控制外圍器件的配置,也就是開關頭文件的作用

  3、 HSE Osc(High Speed External Oscillator)高速外部晶振,一般為8MHz,HSI RC(High Speed InternalRC)高速內部RC,8MHz

  4、 LSE Osc(Low Speed External Oscillator)低速外部晶振,一般為32.768KHz,LSI RC(Low Speed InternalRC)低速內部晶振,大概為40KHz左右,提供看門狗時鐘和自動喚醒單元時鐘源

  5、 SYSCLK時鐘源有三個來源:HSI RC、HSE OSC、PLL

  6、 MCO[2:0]可以提供4源不同的時鐘同步信號,PA8

  7、 GPIO口貌似有兩個反向串聯的二極管用作鉗位二極管。

  8、 總線矩陣采用輪換算法對系統總線和DMA進行仲裁

  9、 ICode總線,DCode總線、系統總線、DMA總線、總線矩陣、AHB/APB橋

  10、在使用一個外設之前,必須設置寄存器RCC_AHBENR來打開該外設的時鐘

  11、數據字節以小端存儲形式保存在存儲器中

  12、 內存映射區分為8個大塊,每個塊為512MB

  13、 FLASH的一頁為1K(小容量和中容量),大容量是2K。

  14、 系統存儲區(SystemMemory)為ST公司出廠配置鎖死,用戶無法編輯,用于對FLASH區域進行重新編程。所以我們燒寫程序務必選擇BOOT1 = 0,這樣通過內嵌的自舉程序對FLASH進行燒寫,比如中斷向量表和代碼

  15、 STM32核心電壓為1.8V

  16、 STM32復位有三種:系統復位、上電復位、備份區域復位。其中系統復位除了RCC_CSR中的復位標志和BKP中的數值不復位之外,其他的所有寄存器全部復位。觸發方式例如外部復位、看門狗復位、軟件復位等;電源復位由于外部電源的上電/掉電復位或者待機模式返回。復位除了BKP中的寄存器值不動,其他全部復位;備份區域復位的觸發源為軟件復位或者VDD和VBAT全部掉電時。

  17、 單片機復位后所有I/O口均為浮空輸入狀態

  18、 68個可屏蔽中斷通道,16個可編程優先級,16個內核中斷,一共68+16=84個中斷。103系列只有60個中斷,107系列才有68個中斷

  19、 系統啟動從0x00000004開始,0x000 0000保留

  20、 (NestedVectored Interrupt Controller)NVIC嵌套向量中斷控制器,分為兩種:搶先式優先級(可嵌套)和中斷優先級(副優先級,不能嵌套)。兩種優先級由4位二進制位決定。分配下來有十六種情況:

  21、0號搶先優先級的中斷,可以打斷任何中斷搶先優先級為非0號的中斷;1號搶先優先級的中斷,可以打斷任何中斷搶先優先級為2、3、4號的中斷;……;構成中斷嵌套。如果兩個中斷的搶先優先級相同,誰先出現,就先響應誰,不構成嵌套。如果一起出現(或掛在那里等待),就看它們2個誰的子優先級高了,如果子優先級也相同,就看它們的中斷向量位置了。原來中斷向量的位置是最后的決定因素!!!!

  22、 上電初始化后AIRC初始化為0,為16個搶先式優先級,但是由于所有的外部通道中斷優先級控制字PRI_n為0,所以搶先式優先級相同,此時就不能嵌套了

  23、 NVI中有ISER[2](Interrupt Set-Enable Registers),ICER[2](Interrupt Clear-Enable Registers),ISPR[2](Interrupt Set-Pending Registers),ICPR[2](Interrupt Clear-Pending Registers),IABR[2](Active Bit Registers),IPR[15](InterruptPriority Registers)定義。其中ISER和ICER分別為中斷使能和中斷失能寄存器,都是寫1來使能/失能中斷的。為什么寫1?為什么不采用一個寄存器而用兩個寄存器來表示中斷使能/失能狀態?由于硬件,寫0比較復雜,并且可能造成其他位的狀態改變,所以用1來表示打開或者關斷是比較合理的

  24、 中斷標志位需要手動清除

  25、 配置外圍器件的一般步驟:1、打開端口時鐘。2、定義初始化結構體并初始化。3、調用

  26、串口的奇偶校驗:如果是奇偶校驗,那么USART_InitStructure.USART_WordLength= USART_WordLength_9b;這個數據的長度必須設定為9位!

  27、ADC的規則組可以自定義轉換通道順序和轉換的通道個數。在實際應用中,有時候希望有一些特別的通道具有很高的優先權,需要在規則組進行轉換的時候強制打斷,進行另一個通道的轉換,這樣一組通道,叫做注入組。

  28、定時器的輸出比較模式:Timing(凍結,什么都不做,普通定時),Active(OCxREF輸出高電平有效),Inactive(OCxREF輸出低電平),Toggle(比較成功后翻轉電平)。

  29、STM32的定時器從0開始計數,滿足一些條件,給出標志位(比如匹配成功、時間更新、溢出等)然后從0開始計數。這一點和51不同。

  30、OCx=OCxREF+極性

  31、自動裝載寄存器和影子寄存器:前者相當于51當中的溢出設定數值。而影子寄存器顧名思義是影子,就是寄存器的另一分copy。實際起作用的是影子寄存器,而程序員操縱的則是自動裝載寄存器。如果APPE位使能,表明自動裝載寄存器的值在下一次更新事件發生后才寫入新值。否則,寫入自動裝載寄存器的值會被立即更新到影子寄存器。

  32、RCC_PCLK1Config(RCC_HCLK_Div4);PCLK1的4分頻給定時器基準時鐘

  33、定時器配置:RCC、NVIC、GPIO(OC輸出或者PWM)、TIMx

  34、通用定時器可以輸出4路不同的PWM,高級定時器可以輸出4路不同的PWM外,還可以輸出3路互補的PWM信號(驅動三相電機),一共有7路。這樣算出來STM32可以產生30路PWM=7*2+4*4

  36、高級定時器時鐘源掛在了APB2上,而通用定時器掛在APB1上。AHB(72mhz)→APB1分頻器(默認2)→APB1時鐘信號(36mhz)→倍頻器(*2倍)→通用定時器時鐘信號(72mhz)。如果APB1沒有分頻,那么通用定時器的時鐘信號頻率就直接等于APB1的時鐘頻率,沒有上述的倍頻器*2過程。TIM_SetAutoreload()用來改變PWM的頻率,TIM_SetCompare1()用來改變占空比

  37、有刷電機一般啟動力矩大一些,無刷電機啟動力矩小,運行起來力矩大。有刷電機采用電刷機械電流換向,而無刷電機則通過霍爾傳感器測出轉子的電流來判斷電機的運動位置和方向,返回給控制回路。

  38、死區是必須要有的,因為這涉及到電路的短路問題。晶閘管在換向的時候需要死區時間來徹底關斷線路

  39、剎車功能用來在控制回路出現問題時,硬件自動給予外部電機進行緊急剎車制動,反應在PWM上持續給出一個固定的占空比?(三相驅動也是?)

  40、PWM輸出最好采用PWM模式,其他的比較輸出模式相位會慢慢改變,不精準

  41、對FLASH的讀寫需要先解鎖后加鎖。FLASH寫0容易,寫1難。

  42、下載程序有兩種方式,一種為ICP(在線編程),適用于JTAG或SWD協議下的燒寫程序。另一種成為IAP(在應用編程),適用于很多接口(USB,串口,CAN)下載到存儲器中,IAP允許在程序運行時重新燒寫FLASH

  43、FLASH分為主存儲器(這里放置用戶的程序代碼)和信息塊(啟動代碼),除此之外,還有一部分叫做系統存儲器,這一塊用戶不可操作,為ST公司出產后固化,為系統的上電自舉程序

  44、FLASH在寫的時候,一定不能讀,如果有讀操作,那么將會鎖住總線

  45、對FLASH操作時,必須打開HIS

  46、STM32有兩種看門狗(IWDG獨立看門狗《獨立時鐘》,WWDG窗口看門狗《由APB1分頻而來》)

  47、SPI的的最高頻率為36MHz(fpclk/2)

  48、 TIM1和TIM8高級定時器在輸出PWM時,需要配置一下主輸出功能(CtrlPWMOutputs)才能輸出PWM。其他的通用定時器不需要這樣配置。但是TIM6和TIM7沒有PWM輸出功能。

  49、Code為程序代碼部分

  RO-data 表示程序定義的常量(如:const temp等);

  RW-data 表示已初始化的全局變量

  ZI-data 表示未初始化的全局變量,以及初始化為0的變量

  Code, RO-data,RW-data..............flash

  RW-data, ZIdata...................RAM

  初始化時RW-data從flash拷貝到RAM

  50、STM32F103ZET6有144個引腳(Z為144),其中,可用IO口為112個(7X16=112,ABCDEFG口)

  51、ARM公司只生產內核標準,不生產芯片。ST、TI這樣的公司從ARM公司那里購買內核,然后外加自己的總線結構、外設、存儲器、始終和復位、I/O后就組成了自己的芯片。

  52、CMSIS標準用于在向上的用戶層和下面的硬件層交換信息。這個架構當然可以自己定義,但是這樣的話就會沒有標準。所以強制使用CMSISI標準來設計芯片。通俗點的講就是系統初始化的函數名稱CMSIS定義為SystemInit(),GPIO_ResetBits()等

  53、端口復用和端口重映射是兩個概念:前者在使能其對應的端口和對應的功能時鐘即可。后者需要打開AFIO時鐘,然后進行端口的重映射GPIO_PinRemapConfig()

  54、下載程序只能使用串口1,在硬件設計時一定要注意!

  55、J-TAG調試頻率一般設定為2MHz,而SWD調試頻率可以設定為10MHz

  56、SysTick的中斷實現可以有兩種方式:循環等待和中斷法。推薦用循環等待,中斷法可能會出問題而且占用資源。

  57、部分I/O引腳是5V兼容的。單個I/O的最大驅動電流和灌入電流均為25mA。整個芯片的電流為150mA

  58、KEIL支持位段操作,可以利用C語言中的位段知識定義位段結構體,然后對單獨的寄存器進行單獨的位操作。

  59、關于內部上下拉電阻的設置:如果外部的按鍵另一頭接地,那么需要設置成上拉電阻。(理由是當沒有按下按鍵時,由于上拉,輸入為高電平;按下時,由于外部接地,輸入為低電平。)同理,如果外部的按鍵另一頭接高電平,那么需要設置成下拉電阻。

  60、串口中斷TXE和TC的區別:其實很明顯,一個是發送寄存器空標志,一個是發送完成標志。因為串口在發送的時候首先需要把發送寄存器中的數據移位到移位寄存器(影子寄存器)后再串行發送出去。所以當發送寄存器DR空時說明現在可能正在往外面發送數據,數據可能還沒有發送完。但是發送完成不一樣,他是在移位寄存器將本次數據全部移位完成后設置的標志位(也就是發送完了停止位)。這么看來:TXE允許程序有更充裕的時間填寫TDR寄存器,保證發送的數據流不間斷。TC可以讓程序知道發送結束的確切時間,有利于程序控制外部數據流的時序。

  61、窗口看門狗顧名思義有一個窗口,這個窗口的橫坐標為時間,意思是在指定的時間范圍內刷新寄存器,否則單片機復位。窗口的上限由人來設定W[6:0],下線定死為0x40Twwdg=(4096×2^WDGTB×(T[5:0]+1)) /Fpclk1;Twwdg為超時時間ms,Fpclk1為APB1時鐘KHz,

  62、TIMx通用定時器有4個獨立通道,分別可以用來作為:輸入捕獲、比較輸出、PWM生成、單脈沖模式輸出。

  63、定時器的時鐘來源有4個:內部時鐘(CK_INT),外部時鐘模式1(TIx),外部時鐘模式2(ETR),內部觸發模式(ITRx,這個用來定時器的同步)

  64、定時器中斷溢出更新時間:Tout=((arr+1)*(psc+1))/Tclk,ARR為自動裝載寄存器(1~65535)、PSC為分頻系數,TCLK為輸入時鐘頻率(Mhz)

  65、PWM1和PWM2模式的區別僅在于相位的180度。前者高電平時,后者低電平。感覺好雞肋,OCxREF極性就可以實現這個功能。。

  66、定時器輸入捕捉有一個濾波器,顧名思義濾波器起到的就是濾波的作用,在捕捉外部信號時,信號可能不穩定,此時需要濾波:當檢測到有外部輸入時,需要再連續采樣N次如果確定為高電平/低電平,則觸發響應中斷(如果開啟了的話)。

  67、電容觸摸屏原理:通過充放電的曲線不同來檢測是否被按下。 實際的實驗過程中,TPAD可以用一塊覆銅區域來替代,通過電容的充放電常數來確定是否按下。

  68、OLED,即有機發光二極管(OrganicLight-Emitting Diode),又稱為有機電激光顯示(Organic Electroluminesence Display,OELD)。下圖為OLED的GRAM與屏幕的對應表

  PAGE2單獨列出來:

  69、USART可以操縱SPI設備。不過最大頻率只有4.5MHz

  70、使用I/O口時應該注意的問題

  71、ADC的Vref+和Vdda與VSS,Vref-一定要加高質量的濾波電容,切靠近單片機。

  72、ADC分為規則組和注入組,前者有16個通道,后者有4個通道。并且16個通道公用一個數值寄存器,注入組的4個通道分別有一個數值寄存器。

  73、采樣頻率越高,輸入阻抗要求越小。

  74、Stm32進入中斷的最短周期為6個周期

  77、FSMC,即靈活的靜態存儲控制器。能夠與同步或異步存儲器和16位PC存儲器卡接口,STM32的FSMC接口支持包括SRAM、NANDFLASH、NORFLASH和PSRAM等存儲器。

  78、平時所說的U盤里的FLASH存儲器有兩種類型:NANDflash和NOR flash。

  NAND FLASH

  NOR FLASH

  不能直接運行里面的代碼

  可以直接運行里面的代碼

  寫入和擦除速度快

  寫入和擦除速度慢

  讀取速度稍慢

  讀取速度稍快

  擦寫周期100萬次

  擦寫周期10萬次

  成本低,容量高

  成本高,容量低

  一般為串行接口

  有SRAM接口

  79、TFT在操作時,可以當作外部SRAM來操作,這樣的話,如果單片機有FSMC接口,就可以使用NORFLASH的SRAM接口去控制,速度非??臁?/span>

  80、Stm32的的FSMC有4個256MB的存儲塊,一共尋址1GB的外部存儲器空間。

  81、在STM32內部,FSMC的一端通過內部高速總線AHB連接到內核Cortex-M3,另一端則是面向擴展存儲器的外部總線。內核對外部存儲器的訪問信號發送到AHB總線后,經過FSMC轉換為符合外部存儲器通信規約的信號,送到外部存儲器的相應引腳,實現內核與外部存儲器之間的數據交互。

  82、FSMC中的DATASET和ADDSET的設置需要參看外部存儲器的時序圖來確定。一般而言,DATASET指的是數據建立時間,也就是讀/寫信號開始到讀/寫信號停止(上升沿存儲數據)的持續時間。(一般來說寫比讀快!)。而ADDSET指的是地址建立時間,指的是片選之后到讀/寫操作之前的時間,這是針對SRAM來說的,如果操縱的是TFT,不存在地址線,所以此時的ADDSET就是讀/寫信號結束到RS電平的轉換時間。

  85、FSMC的三個配置寄存器:FSMC_BCRx(片選控制配置)、FSMC_BTRx(片選時序)、FSMC_BWTRx(片選寫時序)。

  86、 RTC時鐘配置必須要用到BKP寄存器,BKP寄存器在單片機復位、電源復位、待機喚醒模式下是不會更改值的,他的供電由VDD供電,VDD被切斷后自動切換至外部的VBAT供電。

  87、 要修改BKP寄存器的值,必須取消其寫保護的標志。BKP寄存器在上電時自動寫保護。

  88、 Stm32有三種省電模式:

  三種省電模式中,耗電量從上到下依次降低,待機模式的電流僅為2uA。

  89、 從待機模式中喚醒單片機等效于讓單片機復位,但是電源寄存器的值會有一個標志位指示單片機是被喚醒的,不是被復位的。

  90、 ADC的時鐘不要超過14MHz,否則轉換精度會下降。最大轉換速率為1MHz,即轉換周期為1us(14MHz,采樣周期為1.5個ADC時鐘)

  91、 Tcovn=采樣時間+12.5個周期。采樣時間盡量選長一點,這樣精度高一些,但是轉換速率下降,這也是有利必有弊。

  93、 拿ARM7TDMI來說,T代表Thumb指令集,D是說支持JTAG調試(Debugging),M意指快速乘法器,I則對應一個嵌入式ICE模塊。

  94、 MMU作為嵌入式處理器與應用處理器的分水嶺標志à具有內存管理單元的嵌入式處理器可以定位為應用處理器。這么說M系列和A系列的處理器的區別在于A系列的處理器具有MMU單元可以進行內存模塊的管理。

  95、ARM處理器有兩種狀態:ARM狀態和Thumb狀態。

  96、 這張圖說明了一切:Thumb2指令集做了一件很偉大的事情:將16位和32位的指令集融為一體,兼容性非常強!(這么說CM3不支持某些32位ARM指令集??)

  98、MSP是系統復位后使用的堆棧指針,PSP由用戶的代碼使用。兩個堆棧指針為4字節對齊!!

  99、在ARM編程領域中,凡是打斷程序運行的事件,統稱為異常(exception)。

  100、 因為存在LR(鏈接寄存器),所以可支持1級的子程序調用而不用壓棧到內存,大大提高了運行速度。---à這就是說,我們在編程的時候,一級調用是不會耗費太多時間的,除非是二級調用!

  101、 處理器有兩種操作模式:handler模式和線程模式。

  處理器也有兩種特權分級:特權級和用戶級。 這張圖說明了一切:復位進入特權級線程模式,如果有異常,進入特權級的handler模式處理異?;蛑袛嗬?,然后返回至特權級線程模式。通過修改CONTROL寄存器可以進入用戶級線程模式。

  102、 兩個高級定時器TIM1和TIM8是掛接在APB1總線上

  103、 STM32的外部中斷是以組來區分的,也就是說PA0,PB0,PC0單片機是無法區分其中哪個觸發的中斷à均為EXIT0線中斷服務例程。所以,外部中斷支持16路的中斷分辨率。從另一個方面來講,我們可以設置GPIO_EXTILineConfig(GPIO_PortSourceGPIOx, GPIO_PinSourcex);來開通中斷線實現組內的不同中斷。

  104、 DAC有兩個寄存器,一個是DHR(Data HoldingRegister)數據保持寄存器,一個DOR(Data Output Register)數據輸出寄存器。真正起作用的是DOR寄存器,該寄存器把值給數模轉換發生單元輸出以VREF+為參考電壓的電壓值。如果是硬件觸發轉換,系統將在1個ABP時鐘周期后把值給DOR,如果是軟件觸發轉換,時間為3個APB時鐘周期。然后,均等待Tsetting時間(Typical為3us,Max為4us)后真正輸出電壓值。

  105、 DAC分8位模式和12位模式,其中后者可以選擇左右對齊

  106、 DMA仲裁器分為軟件和硬件兩種。軟件部分分為4個等級,分別是很高優先級、高優先級、中等、低。硬件部分由通道的大小來決定優先級,越低優先級越高。

  107、 DMA有一個實時的傳輸數據量寄存器叫做DMA_CNDTR,最大值為65535,存放的是當前傳輸所要傳輸的數據量。當數據量變為0時,表明傳輸完成。

  108、 CAN總線(ControllerArea Network)。CAN控制器根據兩根線上的電位差來判斷總線電平,總線電平又分為顯性電平和隱性電平,二者必居其一。

  109、 CAN總線具有6個特點:1:多主控制(掛接在總線上的所有設備均可以成為主設備,并且設備ID是用來決定設備的優先級,沒有設備地址概念),2:系統若軟性(沒有設備地址概念),3、通訊速度較快,通訊距離較遠(1Mbps下40M,5kbps下10KM),4、具有錯誤檢測、錯誤通知(通知其他設備)和錯誤恢復功能(強制結束發送,重復發送接收錯誤的信息。),5、故障封閉,當總線上的設備發生連續故障錯誤時,CAN控制器會把改控制器踢出總線。6、連接節點多。理論上可以無限制加載,但是受到時間延遲和電氣負載的限制,實際數目是有限制的。降低傳輸速度可以適當增加可掛接負載個數。

  110、 CAN協議有兩個標準,ISO11898(針對125kbps~1Mbps的高速速率)和ISO11519-2(125kbps以下的低速速率)

  112、 CAN協議的有5種類型的幀:數據幀、遙控幀、錯誤幀、過載幀、幀間隔。其中前兩種幀有標準格式(11位ID)和擴展格式(29位ID)。

  113、 數據幀構成:

  (1) 幀起始。 表示數據開的段幀起始。

  (2) 仲裁段。 表示該幀優先級的仲裁段。

  (3) 控制段。 表示數據的字節及保留位段。

  (4) 數據段。 數據的內容,一幀可發送0~8個字節的數據。

  (5) CRC段。 檢查幀的傳輸錯誤段。

  (6) ACK段。 表示確認正常接收的段。

  (7) 幀結束。 表示數據的段幀結束。

  114、 Stm32f103系列只有一個CAN控制器,有3個發送郵箱和3級深度的2個FIFO,14個過濾組器。

  115、 STM32的每個過濾組可以配置為1個32位過濾器和2個16位過濾器。除此之外,還可以配置為屏蔽位模式(ID+屏蔽)和標識符列表(ID和屏蔽寄存器均用來做ID寄存器)模式。

  116、 CAN接收到有效報文被放置在3級郵箱深度的FIFO中,FIFO完全由硬件來管理。

  117、 CAN總線的波特率

  118、 觸摸屏一般分為電阻式觸摸屏和電容式觸摸屏。前者檢測觸摸的位置原理是利用觸摸屏控制器中的A/D轉換器經過兩次A/D讀值后得出X和Y的坐標值。注意:這個X和Y的值是相對于觸摸屏的,而非LCD屏。所以在這里需要注意兩個概念:觸摸屏和LCD屏。這是兩個不同的概念,也是兩個不同的物理結構,其中電阻觸摸屏是由上下兩個導電層中間夾著一層非常薄的透明隔層;而LCD就是指顯示屏。

  119、 電阻觸摸屏有X和Y、X和Y的比例因子、坐標軸方向、偏移量。LCD也有自己的這些參數。兩者完全不相干,所以在定位的時候需要進行坐標轉換。公式:

  ,通過對屏幕的四個點進行校準,得到四元一次方程,求解即可。

  120、 NEC協議的數據幀格式:同步碼頭、地址碼、地址反碼、控制碼、控制反碼。同步碼由一個9ms的低電平和一個4.5ms的高電平組成,地址碼、地址反碼、控制碼、控制反碼均是8位數據格式。按照低位在前,高位在后的順序發送。

  121、 NEC協議在發送的時候,會有560us的38KHz的載波信號,而在接收的時候這部分載波信號被認定為低電平,而剩余的(2.25ms-650us)的邏輯“1”和(1.12ms-650us)的邏輯“0”時間則被認定為高電平。

  122、 在單位時間內的位移被定義為速度,速度有線速度和角速度之分,分別對應兩種傳感器測量這兩種不同的速度:線速度傳感器(加速度計)、角速度傳感器(陀螺儀)。前者多應用在靜態或者低慢速運動中的姿態求解,后者多應用在動態運動中姿態求解。

  123、 根據標準約定,零加速度(或零 G 準位)通常定義為相當于最大輸出值(12 位輸出為 4096,10 位輸出為 1024 等)一半的輸出。對于提供 12 位輸出的加速度計,零 G 準位將等于 2048。輸出大于 2048 表示正加速度。輸出小于 2048 表示負加速度。加速度的數量通常用單位 g (1g = 9.8m/s2 = 重力加速度)表示。通過確定測量的輸出與零 G 準位之間的差值,然后除以加速度計的靈敏度(用計數/g 或 LSB/g表示)來計算加速度。對于提供 12 位數字輸出的 2g 加速度計,靈敏度為 819 計數/g 或 819 LSB/g。加速度等于:a = (Aout - 2048)/(819 計數/g),單位為 g。

  124、 加速度計測得的加速度的方向和設備設定的坐標系是相反的,因為原理表明在測量力的時候采用的是非慣性系參考系,而我們高中時代研究的坐標系是慣性系參考系,前者在物體進行運動產生加速度時,假想一個與速度方向相反的力作用在物體上,這個力就是慣性力;后者我們說不存在慣性力,只說存在慣性,因為在慣性坐標系中,我們研究的是物體,而非坐標系(即假定坐標系相對地球靜止),當我們把坐標系也考慮在內時,當坐標系運動,就產生了慣性力f,這種力作用會假想作用在物體上,只是與運動方向相反。

  125、 由上可知,加速度計的本質是測量力而非加速度。

  126、 NRF24L01工作在2.4GHz的頻段,由于頻段頻率較高,所以傳輸速率較快,為2Mbps

  127、 STM32的閃存模塊由:主存儲器、信息塊和閃存存儲器接口寄存器3個部分構成。主存儲器用來存放代碼和const常量;信息塊由兩個部分組成:啟動程序代碼、用戶選擇字節。其中啟動程序代碼為ST公司自帶的啟動程序,用于串口下載。最后的閃存存儲器接口寄存器用于控制整個對閃存區域的操作。

  128、 CPU的運行速度比FLASH的操作速度快的多,一般FLASH的最快訪問速度≤24Mhz。如果CPU的速度超過這個頻率,那么在讀取FLASH的時候必須加入等待時間(FLASH_ACR設置)

  129、 FLASH編程時,寫入必須為半字(16位)。并且在寫入的時候必須保證所寫區域的數據必須為0xFFFF。

  130、 STM32的FSMC有HADDR[27:0],其中[27:26]用來選擇BANK區域的4個不同塊。剩下的[25:0]則用來連接外部存儲區域的地址線FSMC_A[25:0]。如果數據寬度是8bit,此時的HADDR[25:0]和FSMC_A[25:0]是完全對應的。如果數據寬度是16bit,此時的HADDR[25:1]和FSMC_A[24:0]是對應起來的。需要注意:無論數據寬度是多少,外部的FSMC_A[0]和A[0]總是對應的。

  131、 關于LB和UB的信號控制是由硬件自動控制的,當AHB的數據寬度小于外部存儲器的數據寬度時,此時LB和UB的控制信號自動產生(比如字節讀取/寫入16bit的外部存儲器)

  132、 __attribute__ (函數屬性、變量屬性、類型屬性等)。如果在使用SRAM時,可以采用u32 sram_array[xx] __attribute__ ((at(0x68000000))代表將外部SRAM的空間全部給了sram_array這個變量,他具有在at0x68000000這個地址的屬性。往里面寫值就直接在SRAM里面寫值。

  133、

  內存管理有一種方式叫做分塊式內存管理。

  注意表中的分配方向,從頂到底。每一項對應一個內存塊。里面的數值代表了內存池的狀態:如果為0,表示該內存沒有被分配;如果非0,那么數值的大小就表示了該塊內存被連續占用的內存數。比如說數值為20,意思是包括該項在內的內存塊被連續占用了20塊分給了指針。

  134、SD卡的分類:

  一般的SD卡支持兩種傳輸模式:SD卡模式(SDIO)、SPI模式。顯然前面一種是專用模式,所以速度比較快。

  135、 常用的漢字內碼系統有GB2313、GB13000、GBK、BIG5(繁體)。其中GB2313只有幾千個漢字,而GBK則有2萬多漢字。

  136、 要顯示漢字,采用的方式如果用點陣的形式是不可取的,因為這無法查找漢字。采用的方式就是內碼系統。GBK標準中,一個漢字對應2個字節:前者稱為區(0x81~0xFE)后者為(0x40~0x7E)和(0x80~0xFE)。前者有126個區,后者有190,那么可以顯示的漢字數量有126*190=23940個。根據這兩個值用來查找字庫,字庫中存放的還是每個漢字的點陣數據。這個字庫非常大,如果是16*16的字體,那么一個字體就需要32個字節,如此說來需要23940*32=748K的空間,可見非常大,所以需要外部的Flash來存儲這個字庫。

  137、 由于漢字內碼系統不具有國際通用性,但是Unicode幾乎把所有的語言都放置進來,這樣在單片機中操作漢字時,就需要將GBK和Unicode轉化。尤其是在FATFS中,創建中文文件名和讀取中文文件信息時需要將Unicode換轉為GBK后再進行修改操作,再反轉換成Unicode保存修改。這么說,兩者的存在是由于標準的不統一,并且Unicode中只有6064個漢字,而GBK顯然是一種漢字擴展。

  138、 BMP圖片編碼的順序是從左到右,從下到上。

  139、 VS1053是一款高性能的數字音頻解碼芯片,從SD卡中將mp3等音樂音頻文件通過SPI送給VS1053后,由其進行音頻解碼,輸出音樂給耳機。耳機驅動可以采用TDA1308芯片,這款芯片為AB類耳機驅動芯片。

  140、

  141、 IAP(In Application Programming)在應用編程是為了后期開發更新程序方便而提出的概念。具體的實現方法如下圖所示:

  在普通編程中,flash中的code是通過JTAG和ISP等工具下載到單片機中。而在IAP編程中,flash被分區為A和B兩個區域,A區域只允許用USB/USART等方式下載,此區域作為更新B區域的代碼用。B區域則是用戶的code區域,真正的代碼在這里被執行,放置的就是app。

  上圖表示STM32正常運行的流程圖,可以看到上電復位后系統從0x80000004處開始運行程序,這里放置的是復位中斷向量,然后跳轉至復位中斷程序入口后再跳轉至main函數運行用戶的程序。

  上圖表示加入IAP后的STM32程序運行流程圖??梢钥吹缴想姀臀缓筇絀AP程序的main函數處運行IAP過程(這個過程就是把下面灰底色塊的程序代碼燒進B區域à代碼更新)。后面的過程和STM32正常運行一樣,如果出現中斷請求,還是跳轉到A區域中的中斷向量表中,然后再跳轉到B區域的中斷服務入口。

  142、 USB有四根線,VCC、GND、D+、D-。在USB主機上,D+和D-均通過一個15K的電阻接地,這樣兩條線均為低電平。在USB設備中,對于高速設備會在D+通過一個1.5K的電阻接到VCC,而低俗設備會在D-通過一個1.5K的電阻接到VCC。這樣主機就可以通過D+和D-的高電平的到來來檢測是否有設備接入,并且識別高低速設備。

  143、 UCOSII是一種實時操作系統,具有執行效率高、占有空間小(最小內核2KB)、實施性能優良、擴展性強和移植性強等優點。

  UCOS具有多任務并發工作的特點(注意,任何時候只有一個任務能夠占用CPU。并發只是任務輪流占用CPU而不是同時工作)。最大支持255個任務并發工作。

  stm32單片機自學方法,主要是做好這四個步驟!

  1.建立開發環境

  我選擇的是通用的MDK,也就是Keil5。安裝完軟件以后,要安裝類似于芯片型號的庫,就是新建工程時選擇的芯片型號。

  2.準備一塊開發板和豐富的資料例程

  推薦選擇最小系統板,個人感覺這樣可以自己學會外圍電路的搭建。避免依賴開發板的電路。(其實就是太窮,買不起開發板,哈哈)開發板這塊如果是新手建議買F103系列的,這個系列產品用的很多,也更容易上手。不要一上來就要干最高配,一口想吃成胖子最后大概率都是失敗結尾。

  3.了解STM32

  這個階段可以看視頻教程,一般教程都會有基本的介紹

  4.開始學習推薦使用庫函數開發的方法。這樣很多底層的寄存器不需要自己配置,只要會用官方庫函數就行了。配合庫函數使用手冊,可以清楚的查到每個函數的使用方法。

  很多初學者面臨的難題就是不知從何入手。總想跟51一樣弄明白基礎的東西,又感覺太復雜。因此推薦先使用例程的工程文件,逐步學習如何修改。比如點亮流水燈的工程,對于IO口的操作并不太復雜,初始化完成之后通過Setbit和Resetbit這兩個函數就可以實現高低電平的輸出。然后,可以試著改一下亮滅,增加一個按鍵控制,中斷延時,等等。

  當你學到STM32的時候,說明已經有一定的基礎了。

  這個時候我建議你直接通過STM32開發的產品去學習單片機,這樣學完以后既學會了STM32,也有了產品思維,到時候拿著產品去面試,成功率也會高幾倍。

  那這種產品去哪里找?這塊【華維單片機編程】有提供這樣的基于產品的開發板,往物聯網方向的。

  整個硬件和軟件都是基于實際產品改版,學完以后可以無縫對接實際工作的產品開發。

  最后說一下,很多人學STM32會犯的錯誤,就是總是想系統學習,巴不得從內核結構要寄存器配置,到固件庫代碼都搞懂,這是不現實的

  當你有這種思維的時候注定要走很多彎路,很有可能會越走越遠!

  并不是說有些基礎不重要,而是人在不同階段理解能力是不同的。

  比如你是新手,剛學完C語言沒多久,你就想去吃透別人固件庫,現實嗎?

  新手在第一階段的目標很簡單,把stm32當做一個工具,學會常用外設的使用,別的一律不管。

  然后開始做項目,幾個項目下來,你再去研究他們固件庫學習下程序架構會有不一樣的感受。

  芯片嘛,我個人認為能用起來就行了,畢竟快速做出產品才是重要的。

  總而言之。如果是剛入門單片機的,建議還是從51單片機開始學起。8位機在實踐經驗,是一個硬件工程師的基礎,先不說4位機。

  現在網上的普遍現象,有些自以為很牛逼的老鳥人建議直接越級學stm32單片機,很多人會學得很困難,理解上很有偏差,不排除有些人天賦異稟可以不必完全弄清楚硬件結構和原理。

  站在老鳥的角度,覺得stm32很簡單,站在新手的角度有多難和迷茫只有自己知道。

  但相信大多數都喜歡單片機,就會有學單片機就學stm32的錯覺!

  學習51單片機的目的,主要是培養直接調試寄存器與軟硬件接口bug的能力,內部結構和寄存器數量及難度都是一個新手可以接受的范圍,慢慢就認識了單片機

  STM32復雜而多樣的內部結構和功能部件,光寄存器就可能上百個,軟件也是基于固件庫開發,基本不會接觸到寄存器配置。

  如果對這塊基礎的缺失會導致你后面在學習過程中,每學到一個知識點都是一臉懵逼,導致整體知識體系是畸形的!白白浪費時間

  比如說為什么這么配置?配置怎么改?改出問題,要怎么解決,你都會繞很多彎路。

  如何系統地入門學習stm32?

  我從事單片機開發多年,用過非常多芯片,有stc、中穎、GD、新唐、BLE、Zigbee、NXP、還有一些國產SOC等等,唯獨ST的讓我最省心,不管是STM8還是STM32。

  省心只要是體現在穩定,只需要按照常規方法配置就不會有亂七八糟奇奇怪怪的問題出現。

  之前碰到過最蛋疼的芯片,有些Flash會掉數據,有些串口不穩定,最后還得用程序來規避芯片的不人性化,明明1個小時能搞定的,硬是給這些奇怪的問題拖了幾天。

  如果說在樣品階段測試出來還好,如果是大批量才慢慢出現這些問題,估計老板撕了你的心都有。

  所以在成本要求不是特別苛刻的情況下,我一般都會用ST的。

  STM32對剛入門的不是那么友好,但是對有一點開發經驗的,還是能大大縮短開發周期的。

  那新手要如何去學習STM32呢?無際根據自己的經歷總結出最有建設性的學習方法,如果你能適應這種學習方法,1周搞定stm32絕對沒問題!

  1. 改變思維

  當你有系統學習stm32的時候,就注定你會走很多彎路,甚至浪費很多時間最后也學不會。

  因為內部結構越復雜的單片機,你學習需要花費的時間就越多。

  但是你有沒有想過,你學單片機的目的是什么?

  肯定不可能只是為了學單片機這么簡單對吧?而是通過單片機來做產品,或者說DIY一些有趣的項目。

  人的一天真正高效工作學習的時間或許8小時都不到,我們怎么利用好這8個小時直接決定你和別人的差距。

  比如說我做一件事,我會拆解完成這件事我要做哪些工作,然后把最核心的環節拿出來優先做,就像做產品,先實現功能再優化細節。

  同樣的方法用在學習stm32也很合適,stm32在整個產品當中其實只是一個工具而已。

  既然是工具,那當然是能用起來就行了,無非就是用芯片的外設而已,你系統的去研究它干嘛?

  2. 正確學習姿勢

  我一直都比較提倡新手從51單片機學起,把精力放在c編程和培養項目思維上,與其有空去深挖單片機,還不如多做幾個項目。

  我剛開始是使用stc的芯片做過幾個項目,然后產品需要接觸到stm32。

  我先把產品需要用到的單片機外設整理出來,再買一個開發板,然后把我要的外設先在開發板上跑一遍。

  同一個例程我會改一些參數,比如說換個引腳、換個定時時間、換個串口,換個ADC通道,DMA通道等等。

  大概知道知道怎么配置以后,我就不會再去研究別的功能了,比如內部時鐘樹架構,USB、CAN、FSMC這些。

  照樣不影響我把產品做出來,慢慢地我經驗也豐富了,對stm32也熟悉了,就是這么自然而然的過程。

  3. 最后總結

  一個新鮮事物,我認為正確的順序應該是先用起來,用熟了你再去研究它原理會事半功倍。

  很多人說單片機很簡單,沒前途,玩linux才牛逼。

  我個人的觀點是,如果你把思維局限在單片機上確實是。

  對于老手來說,單片機只不過一個工具而已,核心的還是你的編程水平和產品思維以及在這個行業的經驗。

  在我看來,不見得玩Arm+Linux就比單片機的工資高或者牛逼。

  任何行業都有大神和半桶水,

  如果你能編寫一個類似于Ti藍牙協議棧的輕量級系統在單片機中運行,你覺得技術會比Linux差嗎?

  或許他們對系統的理解都沒你深,更別說對硬件驅動的理解了。


責任編輯:David

【免責聲明】

1、本文內容、數據、圖表等來源于網絡引用或其他公開資料,版權歸屬原作者、原發表出處。若版權所有方對本文的引用持有異議,請聯系拍明芯城(marketing@iczoom.com),本方將及時處理。

2、本文的引用僅供讀者交流學習使用,不涉及商業目的。

3、本文內容僅代表作者觀點,拍明芯城不對內容的準確性、可靠性或完整性提供明示或暗示的保證。讀者閱讀本文后做出的決定或行為,是基于自主意愿和獨立判斷做出的,請讀者明確相關結果。

4、如需轉載本方擁有版權的文章,請聯系拍明芯城(marketing@iczoom.com)注明“轉載原因”。未經允許私自轉載拍明芯城將保留追究其法律責任的權利。

拍明芯城擁有對此聲明的最終解釋權。

標簽: stm32單片機

相關資訊

資訊推薦
云母電容公司_云母電容生產廠商

云母電容公司_云母電容生產廠商

開關三極管13007的規格參數、引腳圖、開關電源電路圖?三極管13007可以用什么型號替代?

開關三極管13007的規格參數、引腳圖、開關電源電路圖?三極管13007可以用什么型號替代?

74ls74中文資料匯總(74ls74引腳圖及功能_內部結構及應用電路)

74ls74中文資料匯總(74ls74引腳圖及功能_內部結構及應用電路)

芯片lm2596s開關電壓調節器的中文資料_引腳圖及功能_內部結構及原理圖_電路圖及封裝

芯片lm2596s開關電壓調節器的中文資料_引腳圖及功能_內部結構及原理圖_電路圖及封裝

芯片UA741運算放大器的資料及參數_引腳圖及功能_電路原理圖?ua741運算放大器的替代型號有哪些?

芯片UA741運算放大器的資料及參數_引腳圖及功能_電路原理圖?ua741運算放大器的替代型號有哪些?

28nm光刻機卡住“02專項”——對于督工部分觀點的批判(睡前消息353期)

28nm光刻機卡住“02專項”——對于督工部分觀點的批判(睡前消息353期)

拍明芯城微信圖標

各大手機應用商城搜索“拍明芯城”

下載客戶端,隨時隨地買賣元器件!

拍明芯城公眾號
拍明芯城抖音
拍明芯城b站
拍明芯城頭條
拍明芯城微博
拍明芯城視頻號
拍明
廣告
恒捷廣告
廣告
深亞廣告
廣告
原廠直供
廣告