STM32 的學習方法

来源:https://www.cnblogs.com/main-studio/archive/2023/01/17/17058346.html
-Advertisement-
Play Games

前言 學習知識要掌握有效的學習方法,學習技術也是一樣,本篇分享關於我學習 STM32 後總結的學習方法。 推薦的學習方法 系統學習 在網上購買一款開發板,使用開發板+開發板配套視頻教程+開發板配套源碼+晶元官方手冊搭配學習。 安富萊、正點原子、野火,這三家公司研發的開發板都挺不錯,可自由選擇一款作為 ...


前言

學習知識要掌握有效的學習方法,學習技術也是一樣,本篇分享關於我學習 STM32 後總結的學習方法。

推薦的學習方法

系統學習

在網上購買一款開發板,使用開發板+開發板配套視頻教程+開發板配套源碼+晶元官方手冊搭配學習。

安富萊、正點原子、野火,這三家公司研發的開發板都挺不錯,可自由選擇一款作為學習使用。

拒絕做伸手黨

要學會如何學習,如何解決問題,拒絕做伸手黨。

在學習過程中遇到問題,應先嘗試自己查資料或上網搜索進行解決,找資料的過程中看看別人的理解思路。如果在查資料或搜索後並沒有找到滿意的答覆,這時便可以尋求大佬的幫助向大佬提問(文末附有大佬雲集的論壇網站鏈接)。

不經過思考的提問,對自己沒有提升。學習技術的過程中,如果你只會做伸手黨,那將什麼都學不到。

拿到開發板後如何入手

  • 先看提供的開發板配套資料的目錄,瞭解配套資料的情況
  • 找到核心的學習資料,大致瞭解開發板硬體資源
  • 查看資料,安裝開發環境
  • 開啟學習之旅,先學基礎的,基礎要多學多問
  • 高級的知識,可以慢慢來學
  • 學習過程中不懂的,要先查資料,然後提問

需要參考哪些資料

  • 最底層(瞭解):CM3 權威指南 / CM4 權威指南(ARM 提供 )
  • 晶元參考手冊(晶元功能寄存器描述特性等)(詳細瞭解):STM32F10x 中文參考手冊 / STM32F4x 中文參考手冊(ST 提供)
  • 晶元數據手冊(datasheet,ds)(瞭解):STM32F103xCDE_DS_CH_V5.pdf(晶元電氣參數,引腳說明等)
  • 官方其它資源和教程(瞭解):固件庫包(含參考源碼),一些官方培訓 PPT(通過 ST 官網獲取)
  • 你所購買開發板的學習教程(手冊,視頻,源碼)(理解):針對開發板的源碼,教程,視頻等,要將源碼的涵義吃透(開發板商家提供)

需要掌握哪些基本技能

熟練掌握 C 語言

C 語言是嵌入式開發的基礎中的基礎,大多數嵌入式項目的開發都是用 C 語言來編寫的,如果 C 語言不過關,將會大大限制嵌入式學習的進度,以及嵌入式學習的深度。

熟練掌握一種開發環境與調試工具

在這裡強調的是一種開發環境與調試工具,現在市面上供我們選擇的開發環境和調試工具有很多,但我們只需熟練掌握一種就好啦,精通一種後其餘的在以後也容易上手。

  • 掌握一種開發環境:Keil uVision5(MDK-ARM)
  • 掌握一個調試工具:JTAG (必備)

MDK-ARM 軟體為基於 Cortex-M、Cortex-R4、ARM7、ARM9 處理器設備提供了一個完整的開發環境,MDK-ARM 專為微控制器應用而設計,不僅易學易用,而且功能強大,能夠滿足大多數苛刻的嵌入式應用。

市面上關於 STM32 的視頻教程中,絕大多數都是使用 MDK-ARM 進行教學的,這裡我也推薦大家使用並熟練掌握 MDK-ARM。

我們處在初學階段時基礎不夠扎實,對於開發板配套源碼或自己編寫的代碼千萬不要走馬觀花的看,一定要多使用 JTAG 調試代碼,深入理解代碼執行的流程,做到深入理解代碼的涵義。

寄存器、標準庫、HAL 庫如何選擇

標準庫和 HAL 庫任選其一,或兩個一起學習,然後與寄存器對比著學習。

項目中大多數用標準庫或 HAL 庫,但是作為學習,如果只會看幾個函數的話,那麼你根本就沒有學懂,遇到問題很難自己解決,所以有必要瞭解一下寄存器的配置原理,加深對底層驅動的理解。

掌握標準庫或 HAL 庫的基本配置方法,瞭解寄存器底層配置過程,以便深入理解 STM32 晶元的本質。

深入學習基本外設,選擇性學習高級功能

基本外設

單片機主要學習的就是單片機內部的四大基本外設,分別是 GPIO 輸入輸出、外部中斷、定時器和串口通信(串列 I/O 口),理解掌握了這四個外設,基本就入門了一款 MCU。

基本外設介面

這些外設介面功能原理對每個晶元幾乎都是一樣,對晶元而言就是加減法而已。

SPI,IIC,WDG,FAMC,ADC/DAC,SDIO 等。

高級功能

UCOS,FATFS,EMWIN 等,以及一些應用。

論壇網站推薦

下麵推薦幾個國內頂尖的 STM 論壇網站,可通過網站獲取資源,在學習過程中遇到的問題也可以在上面進行提問,會有大佬在論壇進行解答,當然如果你自己就是大佬,也可以在論壇中為嵌入式小白們解答問題。

後記

因為目前我對 STM32 的學習還不夠深入,理解也不夠透徹,所以如果文中有表述不清晰或觀點不正確的地方,還請大佬批評指點。

本文作者:main工作室

本文鏈接:https://www.cnblogs.com/main-studio/p/17058346.html

版權聲明:本文為「main工作室」的原創文章,遵循 CC BY-NC-ND 4.0 版權協議,著作權歸作者所有,轉載請註明出處!

鼓勵博主:如果您覺得文章對您有所幫助,可以點擊文章右下角【推薦】一下。您的鼓勵就是博主最大的動力!


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 寫代碼的時候經常遇到這樣的場景:根據某個欄位值來進行不同的邏輯處理。例如,不同的會員等級在購物時有不同的折扣力度。如果會員的等級很多,那麼代碼中與之相關的if...elseif...else...會特別長,而且每新增一種等級時需要修改原先的代碼。可以用策略模式來優化,消除這種場景下的if...els ...
  • 一、前言 第一次記錄自己的年度總結,一直想寫,不知從何寫起;其實也是自己這兩年來瞭解到的東西,分享給大家,雖然是個井底之蛙,但是也要勇於說出自己的看法,歡迎大佬指導哈。可能自己語言功底太差,這也是小編一直寫博客的動力,鍛煉自己的寫作能力! 本次主要來說一下小編對於Java後端開發人員的一些見解哈! ...
  • 近期做了一個前後端合併的spring boot項目,但是要求達成exe文件,提供給不懂電腦的小白安裝使用,就去研究了半天,踩了很多坑,寫這篇文章,是想看到這篇文章的人,按照我的步驟走,能少踩坑。 準備 準備工作: 一個jar包,沒有bug能正常啟動的jar包 exe4j,一個將jar轉換成exe的工 ...
  • 題目描述 KiKi 學會了 printf 在屏幕輸出信息,他想輸出一架小飛機。請幫他編寫程式輸出這架小飛機。 輸入描述 無 輸出描述 解題思路 方案一 將小飛機的圖形按照行進行劃分,總共可以分成 6行。然後依照每行空格與 * 的排布位置輸出相應的字元即可。 具體代碼如下: #include <std ...
  • 1 什麼是Terraform? Terraform是一個IaC工具,IaC全稱為Infrastructure as Code,基礎設施即代碼。它的理念是通過代碼來管理基礎設施,如伺服器、資料庫等,更多請看《Terraform入門教程,示例展示管理Docker和Kubernetes資源》。 而作為Ia ...
  • 隨著技術的進步,跨平臺開發已經成為了標配,在此大背景下,ASP.NET Core也應運而生。本文主要基於ASP.NET Core+Element+Sql Server開發一個校園圖書管理系統為例,簡述基於MVC三層架構開發的常見知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 前言 眾所周知記憶體緩存(MemoryCache)數據是從記憶體中獲取,性能表現上是最優的,但是記憶體緩存有一個缺點就是不支持分散式,數據在各個部署節點上各存一份,每份緩存的過期時間不一致,會導致幻讀等各種問題,所以我們實現分散式緩存通常會用上Redis 但如果在高併發的情況下讀取Redis的緩存,會進行 ...
  • 大家好,我是痞子衡,是正經搞技術的痞子。今天痞子衡給大家介紹的是國內Cortex-M內核MCU廠商高主頻產品。 在 2021 年初痞子衡寫了篇 《盤點國內Cortex-M內核MCU廠商高性能產品》,搜羅了當時市面上主頻不低於 96MHz 的 CM 核國產 MCU。如今過去了兩年,痞子衡又一次梳理了國 ...
一周排行
    -Advertisement-
    Play Games
  • 最近做項目過程中,使用到了海康相機,官方只提供了C/C++的SDK,沒有搜尋到一個合適的封裝了的C#庫,故自己動手,簡單的封裝了一下,方便大家也方便自己使用和二次開發 ...
  • 前言 MediatR 是 .NET 下的一個實現消息傳遞的庫,輕量級、簡潔高效,用於實現進程內的消息傳遞機制。它基於中介者設計模式,支持請求/響應、命令、查詢、通知和事件等多種消息傳遞模式。通過泛型支持,MediatR 可以智能地調度不同類型的消息,非常適合用於領域事件處理。 在本文中,將通過一個簡 ...
  • 前言 今天給大家推薦一個超實用的開源項目《.NET 7 + Vue 許可權管理系統 小白快速上手》,DncZeus的願景就是做一個.NET 領域小白也能上手的簡易、通用的後臺許可權管理模板系統基礎框架。 不管你是技術小白還是技術大佬或者是不懂前端Vue 的新手,這個項目可以快速上手讓我們從0到1,搭建自 ...
  • 第1章:WPF概述 本章目標 瞭解Windows圖形演化 瞭解WPF高級API 瞭解解析度無關性概念 瞭解WPF體繫結構 瞭解WPF 4.5 WPF概述 ​ 歡迎使用 Windows Presentation Foundation (WPF) 桌面指南,這是一個與解析度無關的 UI 框架,使用基於矢 ...
  • 在日常開發中,並不是所有的功能都是用戶可見的,還在一些背後默默支持的程式,這些程式通常以服務的形式出現,統稱為輔助角色服務。今天以一個簡單的小例子,簡述基於.NET開發輔助角色服務的相關內容,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 第3章:佈局 本章目標 理解佈局的原則 理解佈局的過程 理解佈局的容器 掌握各類佈局容器的運用 理解 WPF 中的佈局 WPF 佈局原則 ​ WPF 視窗只能包含單個元素。為在WPF 視窗中放置多個元素並創建更貼近實用的用戶男面,需要在視窗上放置一個容器,然後在這個容器中添加其他元素。造成這一限制的 ...
  • 前言 在平時項目開發中,定時任務調度是一項重要的功能,廣泛應用於後臺作業、計劃任務和自動化腳本等模塊。 FreeScheduler 是一款輕量級且功能強大的定時任務調度庫,它支持臨時的延時任務和重覆迴圈任務(可持久化),能夠按秒、每天/每周/每月固定時間或自定義間隔執行(CRON 表達式)。 此外 ...
  • 目錄Blazor 組件基礎路由導航參數組件參數路由參數生命周期事件狀態更改組件事件 Blazor 組件 基礎 新建一個項目命名為 MyComponents ,項目模板的交互類型選 Auto ,其它保持預設選項: 客戶端組件 (Auto/WebAssembly): 最終解決方案裡面會有兩個項目:伺服器 ...
  • 先看一下效果吧: isChecked = false 的時候的效果 isChecked = true 的時候的效果 然後我們來實現一下這個效果吧 第一步:創建一個空的wpf項目; 第二步:在項目裡面添加一個checkbox <Grid> <CheckBox HorizontalAlignment=" ...
  • 在編寫上位機軟體時,需要經常處理命令拼接與其他設備進行通信,通常對不同的命令封裝成不同的方法,擴展稍許麻煩。 本次擬以特性方式實現,以兼顧維護性與擴展性。 思想: 一種命令對應一個類,其類中的各個屬性對應各個命令段,通過特性的方式,實現其在這包數據命令中的位置、大端或小端及其轉換為對應的目標類型; ...