STM32-01-認識單片機

文章目錄

  • 一、單片機簡介
  • 二、Cortex-M系列介紹
  • 三、初識STM32
  • 四、STM32原理圖設計
  • 五、搭建開發環境
  • 六、STM32初體驗
  • 七、MDK5使用技巧

一、單片機簡介

  • 單片機是什么?

    單片機:Single-Chip Microcomputer,單片微型計算機,是一種集成電路芯片。

    下面是電腦與單片機的對應關系:

    在這里插入圖片描述

  • 單片機的特點?

    • 體積小:<5mmx5mm
    • 功耗低:mA級
    • 集成度高:IO、TIM、AD、DA
    • 使用方便:C、Debug
    • 拓展靈活:IIC、SPI、FSMC
  • 單片機有什么用?

    • 儀器儀表:電源、示波器、焊臺
    • 家用電器:空調、冰箱、洗衣機
    • 工業控制:機器人、PLC、電梯
    • 汽車電子:GPS、ABS、胎壓監測
  • 單片機發展歷程?

    在這里插入圖片描述

  • 了解兩種指令集?

    對比項復雜指令集計算機(CISC)精簡指令集計算機(RISC)
    目的為了便于編程和提高存儲器訪問效率為了提高處理器運行速度
    指令特點1,指令多,模式多,格式可變
    2,指令的執行需要的時鐘周期差距很大
    3,無流水線或流水線程度較低
    4,指令由微代碼翻譯執行
    1,指令少,模式少,格式固定
    2,大多數指令只需1個時鐘周期
    3,流水線結構
    4,指令直接由硬件執行
    優點1,指令豐富、功能強大
    2,尋址方式靈活
    1,指令精簡,易于設計,使用率均衡
    2,程序執行效率高
    缺點1,指令使用率不均衡
    2,不利于采用先進結構提高性能
    3,結構復雜不利于超大規模集成電路實現
    1,指令數較少,功能不及CISC強大
    2,尋址方式不夠靈活

    使用CISC和RISC舉例

    在這里插入圖片描述

  • 馮諾依曼結構和哈弗結構的區別?

    在這里插入圖片描述

    馮諾依曼結構的優點是占用的資源少,哈弗結構的優點是執行效率較高。

二、Cortex-M系列介紹

  • ARM公司:只做內核設計和IP授權,不參與芯片設計。
    在這里插入圖片描述

  • ARM架構為什么能風靡全球?

    1. 低功耗、低成本、高性能
    2. 支持16/32位雙指令集
    3. 擁有眾多合作伙伴
  • Cortex內核分類及特征?

    對比項Cortex-A
    (Application)
    Cortex-R
    (Real-time)
    Cortex-M
    (Microcontroller)
    特點高時鐘頻率,長流水線,高性能較高時鐘頻率,較長的流水線,實時性強時鐘頻率較低,通常較短的流水線,超低功耗
    應用場景移動計算、智能手機、平板電腦、數字電視軍工、汽車電子、無線基帶、硬盤控制器工控、傳感器、消費電子、家用電器、醫療器械

三、初識STM32

  • STM32是什么?

    ST:意法半導體, M:MCU/MPU,32:32位

    在這里插入圖片描述

  • STM32命名規則?

    在這里插入圖片描述

四、STM32原理圖設計

  • 芯片的基本參數(STM32F103ZET6)

    參數范圍
    主頻72MHz
    FLASH512KB
    SRAM64KB
    工作電壓2.0~3.6V
    最大電流150mA
    IO引腳接入電壓范圍COMS端口:-0.3V ~ 3.6V 兼容5V端口:-0.3V ~ 5.5V
    單個IO引腳最大電流25mA
  • STM32F103ZET6引腳分布

    在這里插入圖片描述

    STM32引腳類型:電源引腳、晶振引腳、復位引腳、下載引腳、BOOT引腳、GPIO引腳。

  • 單片機最小系統?

    最小系統:保證MCU正常工作的最小電路組成單元

在這里插入圖片描述

  • 電源電路

    在這里插入圖片描述

  • 復位電路

在這里插入圖片描述

  • BOOT啟動電路

    在這里插入圖片描述

  • 晶振電路

    在這里插入圖片描述

  • 下載調試電路

    在這里插入圖片描述

五、搭建開發環境

  • 常用開發工具

    工具名稱所屬公司說明
    集成開發環境(IDE)MDKKeilSTM32最常用的集成開發環境,簡單易用
    EWARMIAR支持STM32開發,用的人少一些
    仿真器DAPARM開源、免驅、帶虛擬串口功能、速度快、廉價
    STLINKST支持全面、穩定、廉價
    JLINKSegger穩定、高速、價格貴
    串口調試助手XCOM正點原子功能多、穩定、簡單易用
    SSCOM丁丁穩定、小巧、簡單易用
  • STM32串口和電腦USB通信示意圖?

    在這里插入圖片描述

六、STM32初體驗

  • MDK5編譯例程

    使用MDK5編譯例程,在Program Size里面有四種數據類型,Code、 RO-Data、RW-Data、ZI-Data

    數據類型占用Flash or SRAM說明
    CodeFlash代碼
    RO-DataFlash只讀數據,一般是指 const 修飾的數據
    RW-DataFlash and SRAM初值為 非 0 的可讀可寫數據
    ZI-DataSRAM初值為 0 的可讀可寫數據
  • DAP下載

    • 電路連接

      在這里插入圖片描述

    • 硬件連接

      在這里插入圖片描述

    • 軟件配置

      配置ST-Link
      在這里插入圖片描述

      設置下載算法

      在這里插入圖片描述

    • 開始調試

      在這里插入圖片描述

    1. 復位:其功能等同于硬件上按復位按鈕。相當于實現了一次硬復位。按下該按鈕之后,代碼會重新從頭開始執行。
    2. 執行到斷點處:該按鈕用來快速執行到斷點處,有時候你并不需要觀看每步是怎么執行的,而是想快速的執行到程序的某個地方看結果,這個按鈕就可以實現這樣的功能,前提是你在查看的地方設置了斷點。
    3. 停止運行:此按鈕在程序一直運行的時候會變為有效,通過按該按鈕,就可以使程序停止下來,進入到單步調試狀態。
    4. 執行進去:該按鈕用來實現執行到某個函數里面去的功能,在沒有函數的情況下,是等同于執行過去按鈕的。
    5. 執行過去:在碰到有函數的地方,通過該按鈕就可以單步執行過這個函數,而不是進入這個函數單步執行。
    6. 執行出去:該按鈕是在進入了函數單步調試的時候,有時候可能不必再執行該函數的剩余部分了,通過該按鈕就可以一步執行完該函數的剩余部分,并跳出函數,回到函數被調用的地方。
    7. 執行到光標處:該按鈕可以迅速的使程序運行到光標處,其實是挺像執行到斷點處按鈕功能,但是兩者是有區別的。斷點可以有多個,但是光標所在處只有一個。
    8. 反匯編窗口:通過該按鈕,就可以查看匯編代碼,可以用來分析程序。
    9. Call Stack窗口:通過該按鈕,顯示調用關系和局部變量窗口,顯示當前函數的調用關系和局部變量,方便查看,對分析程序非常有用。
    10. 觀察窗口:MDK5提供了2個觀察窗口,該按鈕按下,會彈出一個顯示變量的窗口,輸入你所想要觀察的變量/表達式,即可查看其值,是很常用的一個調試窗口。
    11. 內存查看窗口:MDK5提供4個內存查看窗口,該按鈕按下,會彈出一個內存查看窗口,可以再里面輸入你要查看的內存地址,然后觀察這一片內存的變化情況。是很好用的調試窗口。
    12. 串口打印窗口:MDK5提供4個串口打印窗口,該按鈕按下,會彈出一個類似串口調試助手界面的窗口,用來顯示從串口打印出來的內容。
    13. 系統分析窗口:圖標下面有6個選項,我們一般用第一個,也就是邏輯分析窗口(Logic Analyzer),點擊即可調出該窗口,通過SETUP按鈕新建一些IO口,就可以觀察這些IO口的電平變化情況,以多種形式顯示出來,比較直觀。
    14. 系統查看窗口:該按鈕可以提供各種外設寄存器的查看窗口,選擇對應外設,即可調出該外設的相關寄存器表,并顯示這些寄存器的值,方便查看設置的是否正確。
    • Call Stack窗口:查看函數調用關系或局部變量

      在這里插入圖片描述

    • Watch窗口:查看函數首地址或變量值

      在這里插入圖片描述

    • Memory窗口:內存查看窗口

      在這里插入圖片描述

      M3/M4/M7內核是小端模式,內存的值得倒著讀

      • Peripheral窗口:查看寄存器的值

        在這里插入圖片描述

    • 注意事項

      1. 仿真時,使用MDK的Level 0等級優化

        在這里插入圖片描述

      2. 調試停止在斷點處時,只是內核停止,外設會繼續運行

      3. 斷點的設置要有時間觀念,考慮是否會打斷正常通信

七、MDK5使用技巧

  • 編輯器設置

    在這里插入圖片描述

  • 字體和顏色設置

    在這里插入圖片描述

  • 用戶關鍵字設置

    在這里插入圖片描述

  • 代碼提示/語法檢查

    在這里插入圖片描述

  • 快速定位函數或變量被定義的地方

    在這里插入圖片描述

聲明:參考文獻來源: 戰艦STM32F103ZET6開發板資源包

  1. Cortex-M3權威指南(中文).pdf
  2. STM32F10xxx參考手冊_V10(中文版).pdf
  3. STM32F103 戰艦開發指南V1.3.pdf
  4. STM32F103ZET6(中文版).pdf
  5. 戰艦V4 硬件參考手冊_V1.0.pdf

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/213557.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/213557.shtml
英文地址,請注明出處:http://en.pswp.cn/news/213557.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python獲得曲線峰值的個數

import numpy as np from scipy.signal import find_peaks import matplotlib.pyplot as plt# 生成示例數據 x np.linspace(0, 10, 100) y np.sin(x)# 查找峰值 peaks, _ find_peaks(y)# 繪制曲線和峰值點 plt.plot(x, y) plt.plot(x[peaks], y[peaks], ro)# 顯示峰值個數 n…

Golang channle(管道)基本介紹、快速入門

channel(管道)-基本介紹 為什么需要channel&#xff1f;前面使用全局變量加鎖同步來解決goroutine的通訊&#xff0c;但不完美 1)主線程在等待所有goroutine全部完成的時間很難確定&#xff0c;我們這里設置10秒&#xff0c;僅僅是估算。 2)如果主線程休眠時間長了&#xff0c…

【計算機網絡】HTTP響應報文Cookie原理

目錄 HTTP響應報文格式 一. 狀態行 狀態碼與狀態碼描述 二. 響應頭 Cookie原理 一. 前因 二. Cookie的狀態管理 結束語 HTTP響應報文格式 HTTP響應報文分為四部分 狀態行&#xff1a;包含三部分&#xff1a;協議版本&#xff0c;狀態碼&#xff0c;狀態碼描述響應頭&a…

如何選擇LED天幕屏的型號

隨著LED屏幕技術的不斷成熟&#xff0c;其應用范圍也日益擴大&#xff0c;從傳統的墻面固定安裝&#xff0c;到落地式、租賃移動式&#xff0c;再到LED互動地磚屏和安裝在天花板上的LED天幕屏等&#xff0c;安裝方式多種多樣。那么&#xff0c;在面對如此多元化的選擇時&#x…

PHP基礎 - 類型比較

在 PHP 中,作為一種弱類型語言,它提供了松散比較和嚴格比較兩種方式來比較變量的值和類型。 松散比較: 使用兩個等號(==)進行比較,只會比較變量的值,而不會考慮它們的數據類型。例如: $a = 5; // 整數 $b = 5; // 字符串if ($a == $b) {echo "相等"; // 輸…

C/C++ 編程規范總結

目錄 前言 一、編程規范的作用 二、規范的三種形式 三、規范的內容 1. 基本原則 原則1-1 原則1-2 原則1-3 原則1-4 原則1-5 原則1-6 原則1-7 2. 布局 規則2-1-1 規則2-1-2 規則2-1-3 規則2-1-4 規則2-1-5 規則2-1-6 規則2-2-1 規則2-2-2 規則2-2-3 建議2…

簡單聊聊使用lombok 的爭議

大家好&#xff0c;我是G探險者。 項目里&#xff0c;因為我使用了Lombok插件&#xff0c;然后代碼走查的時候被領導點名了。 我心想&#xff0c;這么好用的插件&#xff0c;為啥不推廣呢&#xff0c;整天寫那些煩人的setter&#xff0c;getter方法就不嫌煩么&#xff1f; 領導…

AidLux:手機/平板上的Linux環境與AI開發利器

AidLux是一個基于ARM架構的跨生態&#xff08;鴻蒙/AndroidLinux&#xff09;一站式智能物聯網&#xff08;AIoT&#xff09;應用開發和部署平臺&#xff0c;正受到越來越多開發者和用戶的青睞。既可以作為手機/平板上的一個Linux環境使用&#xff0c;也可以作為AI開發利器以發…

Python Django Suit:構建現代化的Django后臺管理

概要 Django Suit是一款為Django后臺管理提供現代、優雅界面的第三方應用&#xff0c;它致力于提升Django開發者的管理體驗。本文將深入介紹Django Suit的安裝、配置和高級功能&#xff0c;提供詳實的示例代碼&#xff0c;幫助大家更好地使用和定制Django后臺管理界面。 安裝與…

無法解除Word文檔限制編輯?上干貨

方法一&#xff1a;新建一個文檔-點擊“插入”-點擊“對象”-點擊選擇中的倒三角-然后選擇“文件中的文字”-找到相應文檔即可 具體操作界面如下圖這個方法會導致格式出現稍稍微的變化 方法二&#xff1a;將受編輯的文件另存為 文件類型一定要選擇*.xml 另存好之后是這樣的 打…

智能優化算法應用:基于法醫調查算法無線傳感器網絡(WSN)覆蓋優化 - 附代碼

智能優化算法應用&#xff1a;基于法醫調查算法無線傳感器網絡(WSN)覆蓋優化 - 附代碼 文章目錄 智能優化算法應用&#xff1a;基于法醫調查算法無線傳感器網絡(WSN)覆蓋優化 - 附代碼1.無線傳感網絡節點模型2.覆蓋數學模型及分析3.法醫調查算法4.實驗參數設定5.算法結果6.參考…

力扣labuladong一刷day34天

力扣labuladong一刷day34天 文章目錄 力扣labuladong一刷day34天一、230. 二叉搜索樹中第K小的元素二、538. 把二叉搜索樹轉換為累加樹 一、230. 二叉搜索樹中第K小的元素 題目鏈接&#xff1a;https://leetcode.cn/problems/kth-smallest-element-in-a-bst/?utm_sourceLCUS&…

[C++] STL_priority_queue(優先級隊列) 的使用及底層的模擬實現,容器適配器,deque的原理介紹

文章目錄 1、priority_queue1.1 priority_queue的介紹和使用1.2 priority_queue的使用模擬實現&#xff1a; 2、容器適配器2.1 什么是適配器2.2 STL標準庫中stack和queue的底層結構 3、deque3.1 deque的原理介紹3.2 deque的缺陷 4、為什么選擇deque作為stack和queue的底層默認容…

docker配置連接harbor私有倉庫

一、前言 以下分為兩種情況說明docker對harbor私有倉庫的訪問配置&#xff0c;一種是harbor使用自建證書配置https&#xff0c;一種是使用公有證書配置https 二、docker配置 harbor使用自建證書的情況 使用自建證書對harbor進行https配置&#xff0c;docker會將該倉庫識別成不…

SDXL使用animateDiff和hotshot-xl進行文生視頻

截至2023.12.8號&#xff0c;目前市面上有兩款適用于SDXL的文生視頻開源工具&#xff0c;分別是AnimateDiff和hotshot-xl。 一、工具下載鏈接 &#xff08;1&#xff09;AnimateDiff的webui版本的git鏈接&#xff1a; GitHub - continue-revolution/sd-webui-animatediff: A…

pytest測試框架介紹(2)

繼續進步一點點&#xff0c;溫故而知新 一、requests 介紹 1、requests 的官方文檔&#xff1a;https://docs.python-requests.org/en/latest/ 2、安裝requests&#xff1a;pip install requests 二、requests請求 1、請求方法&#xff1a;post&#xff0c;get&#xff0c…

Postman獲取token

問題描述 登錄接口中帶有token參數&#xff0c;其他接口需要帶上token才能正確訪問&#xff0c;利用接口查詢用戶信息時手動在headers中更新token信息并不方便。 解決方案 在登錄接口中設置一個名為“token”的環境變量&#xff0c;value為登錄接口跑通之后responseBody中返回…

51單片機的獨立按鍵與矩陣按鍵的使用以及實例分析

IO 的使用–按鍵 本文主要涉及8051單片機的按鍵的使用&#xff0c;包括獨立按鍵與矩陣按鍵。 其中包括實例分析&#xff1a; 獨立按鍵 K1 控制 D1 指示燈亮滅通過數碼管顯示矩陣按鍵 S1-S16 按下后鍵值 0-F 文章目錄 IO 的使用--按鍵一、按鍵消抖二、獨立按鍵獨立按鍵 K1 控制 …

IAR嵌入式解決方案發布全新版本,增強云調試和仿真功能,推動下一代嵌入式軟件開發

通過先進的Arm虛擬硬件集成和Linux系統中增強的基于云的協作&#xff0c;賦能下一代嵌入式軟件開發 瑞典烏普薩拉&#xff0c;2023年12月7日 - 嵌入式開發軟件和服務的全球領導者IAR宣布推出旗艦產品IAR Embedded Workbench for Arm及IAR Build Tools for Arm最新9.50版本。此…

vue2+datav可視化數據大屏(3)

接上一節所說&#xff0c;當我們將接口封裝完了后&#xff0c;我們需要給大屏進行內容填充啦 1,新建組件 &#x1f4d3; 我們在ser-views文件夾下新建9個vue組件&#xff0c;如下圖所示&#xff0c;我給編號為1到9 &#x1f4d3;在組件里寫入內容我是第一塊...一次類推&#x…