為什麼你學了幾天 STM32 感覺一臉茫然,是你的姿勢不對

2022-04-08     大方老師單片機

原標題:為什麼你學了幾天 STM32 感覺一臉茫然,是你的姿勢不對

為什麼學了幾 STM32感覺一臉茫然是你的姿勢不對

是的,你的感覺沒錯,其實你自己已經有朦朧的答案,在之前沒接觸過任何單片機,其實你的問題能夠歸結於以下幾個理由:

1.MCU的根底知識了解的缺少失

2.單片(也就STM32)的詳細工作認識不清晰。

依照整個進修階段先後順序的說明,下面更詳細的解讀來說明問題。

1.專用術語

MCU來說,在沒有接觸詳細的功能,僅專用名詞就一堆,交叉編譯,內核,加法/除法器、協處理器、算法加速器、指令集、浮點運算、流水線、哈佛構造、寄存(通用和外)、中斷和異常FLASHRAMCache()SDRAM(刷新時)USART(波特率,停下位,奇偶檢)CANSPI()I2C等,這裡面有的屬於根底知識,有的屬於進階須要了解的知識點,這些名詞的了解是作為入門者的第一個門檻,假如對一些專用名詞不了解,那麼組合起來的語句就愈加艱澀難懂,這裡說我的進修方:遇到聽不懂的專業術語,去網絡上查找了解,並找個本子或電腦通過文檔的形式記錄下,一段時長回顧一下,好記性不如爛筆頭,這裡舉<>3權威指>,對於單片機進修中須要了解的內核知識都有說明。

2.晶片工作流程

專業術語並不會多難,記住根本不會忘,就算忘了回顧下也簡略,在邁過這個坎後,下一步就是了解晶片執行流程和我們要做什麼才能讓晶片工作起來。

1.在上電後,晶片復位啟動

2.MCUFLASH通過指/數據總線分別讀取指令和數據,配合解析執行,其中在通RAM和通用寄存(以就R0~R12的內部寄存)處理可變數據。

3.依據執行的指令,配置和操作外設的的寄存器,從而驅動對應外設實現詳細的功能

4.配合上層組合邏輯,聯合外設功能,執行詳細應用的全部需求

上述就是晶片工作的流程,而作為單片機開發者,實現的代碼就是放FLASH中的程序,由官方提供SDK包和用戶裁剪實現定義的外設驅動組成,依照上述流程就包:

晶片的啟動過程中對堆棧的初始化,系統相關外設的處(如時) =>這局部由廠商提供,我們把文件放入項目即可,STM32為例就是啟動文startup_xxx.s和系統初始化SystemInit函數

配置應用須要的外設模塊,假如你看網上的教學視頻,都是從這一步直接初始的,特別STM32STM32CubeMx的實現,會告訴你這麼寫是滿足要求的,假如你不是願意深究的人到沒所謂,當你深究這東西的時候,就會發現沒有人告訴為什麼要這麼寫,迷惑自然就來了,其實這局部就是嵌入式所謂的經歷成分。

如大局部外設模塊都要進行時鐘使能GPIO就要配置引腳的上/下拉,推/開漏USART配置模式,波特率,奇偶校驗,停下位,數據位,還要考慮對GPIO的埠復用I2C就要考慮主從模式,依據須要的傳輸速率確定模塊時鐘SDRAM除了考慮引腳復用,時序,還要計算刷新時長來保證數據的穩定,這些知識理論上都是長期在工作中積攢出來的,在項目需求確定後,依據晶片和器件選型,就能夠確定硬PCB的繪圖和布置,功能需求也能確定,如訪問外EPPROM,那I2C就確定位主模式,並依EPPROM的讀寫時序和晶片的性能,考慮到效率和穩定的均衡,就能夠確I2C的速率,考慮布局和其它需求I2C對應的復用引腳也能確定,事實上,對於真實項目,都是從

=>項目方案=>軟硬體框=>軟體驅動

你所看的視頻直接從軟體驅動學起,不知道前後背景,才會迷茫,至於如何轉換思維進修,可參照我之前這篇總結,末尾也有我關於嵌入式入門的說明。

聽心跳的聲音:轉變思維進修嵌入 --方法和總111 ?7評論文章

3.上層應用邏輯實現

配合外設的應用邏輯實現其實才是項目中最複雜的局部,包含中斷前後台系統的交互,可能存RTOS應用和協議移植GUI的管理操作,和其它模塊wifi模塊,藍牙模塊的交互,不過這局部屬於進階內容,當你對外設模塊由一定認知後,這局部應該也會有自己的進修方法,這裡我就不在贅述。

本答覆到此就完畢了,這只是我對單片機問題關於自己了解的總結,單片機雖然並不須要創新研發未知的技術,但卻波及從晶片底層到軟體接口的全部實現,包含對現代計算機技術中向微處理器方向的全部精髓技術,也是須要不斷進修才能不被時代擯棄。另外希望你也能總結出自己的方法,在這條道路上越走越好,假如有嵌入Linux的進修需求,也能夠看我這篇答覆。

我的第一塊開發板arduino,最早學電子方向也是用arduino

我的第一塊開發板也arduino uno。再8266,再到stm32,再到的學校51,是不是路徑很詭異啊。其實進修單片機最重要的是什麼。是興趣,成就感,早些年51都是用彙編的,那玩意勸退多少人,我第一個接的個人項目,用的就是彙編,鬼知道我一個程序寫了半個月,人都吐了。

再說此時51,你裝keil,然後呢,51支持包,點燈程序,然後編譯hex,用什麼下載stcisp吧,燒錄是不是還得重啟一下啊。

stm32。是不是拿到正點原子或者野火407zgt6開發板,一大坨,也不知道上面一堆啥玩意,一堆排針,一堆串口,網口,顯示屏。不管了,先mdk5,再f4支持包,然後原子哥的點亮燈,然後燒錄是用串340stlink啊,是不是還要配燒錄地址啊h7系列是不是還要自己寫外flash配置文件啊,由於片內空間很小。你把這一堆搞完了,是不是頭大啊,啊對,還有那網盤的大小,我記得有好幾g吧,下載完,都兩天了。

所以,這一系列就很容易勸退很多學生arduino就很蠢,什麼也沒有d13點燈,一條藍色數據線,安arduino ide,不用裝驅動,安裝過程中點安裝,就行了,翻ide,點開程blinker,自動識別串口,一typeb的印表機線點擊下載,好了d13閃爍。再搞幾pwm,搞oled螢幕,搞個繼電器和藍牙模塊,直接能夠做個小智能家居了。成就感滿滿對吧。

然後他就會遇到各種問題,假pwm想控制電機,不能調頻次對吧,只能重寫定時器,假如沒uno模擬量輸出,假如串口獨有一個,假如外部中斷獨有兩個不夠用對吧,沒有網口只能51005500擴展對吧,擴展了網口flash又不夠了對吧,很多限制出現了。這時候,你就會像吸煙成癮一樣,會去瘋狂想辦法攻克,假如選megadue。或者轉stm32,有的問題能夠直接atmel studio開發攻克。興趣會驅使你往前鑽研。

stm32進修茫然,是對的,由stm32,國內的開發板,都是給你一坨,讓你自己在那裡搞搞搞,鬼都不願意看,去看看意法半導體官方給出的評估板什麼樣子。用德飛萊的那種系統板,加一些擴展板和杜邦線,配合好bootloader,讓初學者有更多的時長琢磨本質的東西,而不是浪費在看你那個大開發板的原理圖,看幾g的資料,才是正確的。當然,感覺說這些會引起國內的兩st教育巨頭的不滿,但是還是要說的,雖然我是大學裡看著原子和野火的書學32,也感激兩位為中國嵌入式教學做出的貢獻(我也買了好多兩家的開發板和模塊啥的,大幾千有的,還有原子的示波器,雖然被我摔了)但不是如此以來,便是對的,教育的本質,本就是不斷探索,不斷創新,不斷反思。

我自己在今年年初錄製了一套還比較系統的入門單片機教程,想要的同學找我拿就行了免費的,私信我就可以~點我頭像黑色字體加蚣重呺也能領取。

文章來源: https://twgreatdaily.com/zh-cn/dbef07bffaa93e36420f815ef6638d0f.html