嵌入式學習筆記-MCU階段-DAY01

恭喜大家完成了C語言的學習,現在咱們來到咱們的硬件MCU階段,咱們這里的工程用的是keil,環境搭建不再贅述,希望大家在這一階段仍然學的愉快

1.資料部分

用的最多的就是STM32f103的手冊,搭配STM32F103ZET6的開發板

2.概念部分

嵌入式系統:

嵌入式系統是以應用為中心,以現代計算機技術為基礎,能夠根據用戶需求(功能、可靠性、成本、體積、功耗、環境等)靈活裁剪軟硬件模塊的專用計算機系統。

專用計算機:

專用計算機,專為解決某一特定問題而設計制造的電子計算機。一般擁有固定的存儲程序。如控制軋鋼過程的軋鋼控制計算機,計算導彈彈道的專用計算機等,解決特定問題的速度快、可靠性高,且結構簡單、價格便宜。

單片機:

單片機MCU(Single-Chip Microcomputer)是一種集成電路芯片,是采用超大規模集成電路技術把具有數據處理能力的中央處理器CPU、隨機存儲器RAM、只讀存儲器ROM、多種I/O口和中斷系統、定時器/計數器等功能(可能還包括顯示驅動電路、脈寬調制電路、模擬多路轉換器、A/D轉換器等電路)集成到一塊硅片上構成的一個小而完善的微型計算機系統,在工業控制領域廣泛應用。從上世紀80年代,由當時的4位、8位單片機,發展到現在的300M的高速單片機。

CPU:

中央處理器(Central Processing Unit,簡稱CPU)作為計算機系統的運算和控制核心,是信息處理、程序運行的最終執行單元。CPU自產生以來,在邏輯結構、運行效率以及功能外延上取得了巨大發展。?

ARM:

arm公司:

ARM處理器是英國Acorn有限公司設計的低功耗成本的第一款RISC微處理器。全稱為Advanced RISC Machine。ARM處理器本身是32位設計,但也配備16位指令集,一般來講比等價32位代碼節省達35%,卻能保留32位系統的所有優勢。

arm架構:

ARM架構,曾稱進階精簡指令集機器(Advanced?RISC?Machine)更早稱作Acorn?RISC Machine,是一個32位精簡指令集(RISC)處理器架構。還有基于ARM設計的派生產品,重要產品包括Marvell的XScale架構和德州儀器的OMAP系列。

我們現在使用的單片機都是基于ARM架構(精簡指令集使用的是匯編)下的產物,有了架構之后,根據不同的架構設計不同的芯片

咱們現在使用的芯片就是ST公司設計的。

意法半導體(ST)集團于1987年6月成立,是由意大利的SGS微電子公司和法國Thomson半導體公司合并而成。1998年5月,SGS-THOMSON Microelectronics將公司名稱改為意法半導體有限公司。意法半導體是世界最大的半導體公司之一,2006年全年收入98.5億美元,2007年前半年公司收入46.9億美元

ARM公司和ST公司的關系:

ARM公司主要是設計芯片處理器(圖紙)不去生產芯片,ST公司得到授權之后,可以在ARM公司的處理器基礎上,去擴展芯片功能,比如添加ADC 串口 定時器.......,ST公司對芯片設計完善之后,交由專門的芯片制造公司進行生產。

寄存器:(按位存儲)

寄存器的功能是存儲二進制代碼,它是由具有存儲功能的觸發器組合起來構成的。一個觸發器可以存儲1位二進制代碼,故存放n位二進制代碼的寄存器,需用n個觸發器來構成。

觸發器:

雙穩態觸發器是一種具有記憶功能的

邏輯單元電路。它能儲存一位二進制碼。它有兩個穩定的工作狀態,在外加信號觸發下電路可從一種穩定的工作狀態轉換到另一種穩定的工作狀態。

邏輯單元:

邏輯單元(LU)是進入IBM系統網絡體系結構(SNA)的

網絡端口,通過它用戶可以訪問網絡資源,或一個程序員與另一個程序員通信。

3.初識單片機

1.單片機的資源

2.驅動LED燈(經典案例--入門)

1.LED燈在哪一個IO口上連接

什么是IO口:單片機中的輸入輸出管腳

單片機中的IO口的表示方式:

PG2--(p--port G--端口序號 2--特定端口下的引腳順序--序列號)

G端口中的第二個管腳

PA0--端口A中的第0個管腳

每一個端口中最多有幾個引腳???16個

PA16---不存在的

我們的單片機總共由144個管腳,但是可以供我們使用的管腳是112個,7個端口(A B C D E F G)

3.查看原理圖:

0

低電平:0V--1.5V 數字量:0

由原理圖可得到,LED燈(D0)連接的是單片機中的PB5管腳:

D0--亮--PB5輸出一個低電平

D0--滅--PB5輸出一個高電平

單片機開發中,前期最重要的就是如何判斷一個IO口的輸入輸出功能

輸出--驅動外部電路,根據IO口的電平狀態,執行相關的功能 led

輸入--MCU用于檢測外部電路的電平狀態的改變,KEY

4.根據手冊編寫代碼

內存的區分:

GPIO功能描述

IO口輸入輸出方式8種:

?

輸出:

通用開漏輸出:通用的開漏輸出,只能輸出低電平,無法輸出高電平,只能處于高阻態(斷路)

通用推挽輸出:既可以輸出高電平,也可以輸出低電平。

復用開漏輸出:具有通用開漏的特性,但是他的應用場合都是在單片機中除了IO口輸出單一的開關量之外的,其他外設功能設置,比如IIC。

復用推挽輸出:具有通用推挽的特性,但是他的應用場合都是在單片機中除了IO口輸出單一的開關量之外的,其他外設功能設置,比如SPI 串口 定時器.......。

輸入:

浮空輸入:既不連接高電平也不連接低的電平(初始狀態),當前管腳的狀態完全由外部設備決定,這一種輸入方式在51單片機是很危險的。但是在STM32中可以接受的,內部會去處理這個引腳的電平狀態,一般都會外加上拉或者下拉電阻。

上拉輸入:在IO口作為輸入狀態的時候,連接上拉電阻,起始狀態---高電平

下拉輸入:在IO口作為輸入狀態的時候,連接下拉電阻,起始狀態---低電平

模擬輸入:主要是用于AD轉換

復用功能參考列表:

在以上手冊的第31頁:

時鐘

在我們的單片機中時鐘的大小,主要是決定了單片機處理器處理數據的快慢。

內核:

時鐘大小:72MHZ

內存大小:

256 to 512 Kbytes of Flash memory---相當于硬盤 up to 64 Kbytes of SRAM--相當于運行內存

單片機中的io口中,每一個端口都有一個獨立的時鐘,那么也就是說,你在使用某一個IO口的時候,必須要先操作時鐘(打開)

5.操作PB5步驟:

1.打開時鐘

由上圖可得,B端口時鐘連接在APB2總線上的

時鐘的配置在我們的中文參考手冊的第六章節

RCC_APB2ENR |=0X01

2.配置PB5工作模式--通用推挽輸出

復位值:寄存器的初始數值

20--23--0010

當寄存器的初始值不為零,或者當前不知道寄存器的初始值是多少,建議先清零需要操作的位,然后再次執行相關操作。

3.輸出高電平或者低電平

PB5拉高---GPIOB |=(0X01PB5拉低---GPIOB &=~(0X01

6.寫代碼驅動LED燈

編寫代碼的步驟:

1.打開B端口的時鐘

2.配置PB5管腳

3.設置PB5的輸出狀態(高電平或者低電平)

添加文件:

保存文件到以下路徑中:(api是我們自己新建的文件夾)

.h文件的保存方式和路徑與.c文件是一樣的;

添加文件到工程:

添加.h文件到工程:

寄存器的編寫方式:

led.c#include "led.h" void Led_Config(void){ // 1.打開B端口的時鐘 RCC->APB2ENR |=(0X01<<3);//2.配置PB5管腳 GPIOB->CRL &=~(0x0f<<20); GPIOB->CRL |=(0x02<<20);//3.設置PB5的輸出狀態(高電平或者低電平) GPIOB->ODR |=(0X01<<5);}
led.h#ifndef _LED_H_ 
#define _LED_H_ 
#include "stm32f10x.h"//stm32中的相關宏定義類型等存在的位置 
void Led_Config(void); #endif
main.c#include "stm32f10x.h" // 相當于51單片機中的 #include <reg51.h> #include "led.h"
void delay(u32 tim)
int main(void) { 
// 來到這里的時候,系統的時鐘已經被配置成72M。Led_Config(); 
while(1) 
{ GPIOB->ODR |=(0X01<<5); delay(2000000); 
GPIOB->ODR &=~(0X01<<5); delay(2000000); } 
} 
void delay(u32 tim){ while(tim--); }

庫函數的編寫方式:

//庫函數的編寫方式
void led_Init(void)
{
GPIO_InitTypeDef gpio_initsources;//打開時鐘RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);gpio_initsources.GPIO_Pin=GPIO_Pin_5;gpio_initsources.GPIO_Mode=GPIO_Mode_Out_PP;gpio_initsources.GPIO_Speed=GPIO_Speed_2MHz;//配置PB5//void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);GPIO_Init(GPIOB,&gpio_initsources);}

main.c


main.c
int main(void)
{// 來到這里的時候,系統的時鐘已經被配置成72M。//Led_Config();//寄存器led_Init();while(1){
//        GPIOB->ODR |=(0X01<<5);GPIO_SetBits(GPIOB,GPIO_Pin_5);delay(2000000);
//        GPIOB->ODR &=~(0X01<<5);GPIO_ResetBits(GPIOB,GPIO_Pin_5);delay(2000000);}
}

安裝一個STLINK的驅動:

網上找一個直接按照提示安裝即可

下載完成之后,直接運行。

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

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

相關文章

three案例 Three.js波紋效果演示

波紋效果&#xff0c;在智慧城市可視化開發中經常用到&#xff0c;這里分享一個比較好玩的案例 以下是詳細的步驟&#xff1a; 初始化部分&#xff1a;設置 Three.js 環境&#xff0c;包括場景、相機、渲染器和控制器 幾何體和紋理&#xff1a;創建平面幾何體并加載波紋紋理 著…

Flutter-詳解布局

上一章我們詳細的學習了 Flutter 中的Widget&#xff0c;這一章我們將要學習 Flutter 的布局&#xff0c; 在上一章我們了解到了&#xff1a;Everything is a widget&#xff0c;在 Flutter 中幾乎所有的對象都是一個 Widget &#xff0c;當然也包括布局&#xff0c;Flutter 的…

EPLAN 電氣制圖:建立自己的部件庫,添加部件-加SQL Server安裝教程(三)上

在智能電氣設計領域&#xff0c;EPLAN 作為主流的設計軟件&#xff0c;其部件庫的完善程度直接影響項目設計的效率與質量。本文將從實際操作出發&#xff0c;詳細講解如何在 EPLAN 中建立專屬部件庫并添加部件&#xff0c;為電氣設計奠定堅實基礎。一、部件庫&#xff1a;電氣設…

靜態路由進階實戰全解

一、項目背景二、項目拓撲圖三、設備命名與IP地址規劃設備名接口編號IP地址規劃R1GE0/0192.168.1.1/24GE0/1172.16.1.1/24R2GE0/0192.168.1.2/24GE0/1192.168.2.2/24R3GE0/0192.168.2.3/24GE0/1192.168.3.3/24GE0/2192.168.4.3/24R4GE0/0192.168.3.4/24GE0/1192.168.4.4/24GE0/…

stm32hal模塊驅動(3)ssd1305 oled驅動

SD1305 OLED 驅動芯片詳細介紹SSD1305 是 Solomon Systech 公司生產的一款 OLED 顯示控制器/驅動器&#xff0c;專為 128x64 或 128x32 點陣的 OLED 顯示屏設計。下面我將從多個方面詳細介紹這款驅動芯片。一、SSD1305 基本特性顯示分辨率&#xff1a;最大支持 128 segments 6…

安全為先:如何在 Python 中安全處理數據庫連接與敏感信息

安全為先:如何在 Python 中安全處理數據庫連接與敏感信息 引言:Python 與安全的數據庫交互 自 1991 年誕生以來,Python 憑借其簡潔優雅的語法和強大的生態系統,成為 Web 開發、數據科學、人工智能和數據庫交互的首選語言。作為“膠水語言”,Python 不僅讓開發者能夠快速…

服務器經常出現藍屏是什么原因導致的?如何排查和修復?

服務器出現藍屏&#xff08;BSOD&#xff0c;Blue Screen of Death&#xff09;是一個嚴重的問題&#xff0c;通常表明系統內核或硬件發生了不可恢復的錯誤。藍屏不僅會導致服務器宕機&#xff0c;還可能對業務運行造成重大影響。要有效解決藍屏問題&#xff0c;需要先找到根本…

為什么elementui的<el-table-column label=“名稱“ prop=“name“ label不用寫成:label

在 Vue.js 中&#xff0c;label 和 prop 是 el-table-column 組件的普通屬性&#xff0c;而不是動態綁定的表達式。因此&#xff0c;不需要使用 : 來綁定它們。 1. Vue.js 中的屬性綁定 在 Vue.js 中&#xff0c;屬性綁定有兩種方式&#xff1a; 靜態屬性綁定&#xff1a;直接寫…

分布式光纖傳感:為儲能安全保駕護航

儲能系統是指一種能夠將電能、化學能、動能等形式的能量進行轉化、儲存和釋放的裝置&#xff0c;廣泛應用于可再生能源發電、智能電網、電動車等領域。儲能行業這幾年得到了穩步發展&#xff0c;受到政府機構、行業協會、大型能源企業、電網公司、系統集成商、檢測認證機構等業…

從歷史航拍圖像中去除陰影

在光學遙感中&#xff0c;陰影是影響土地覆蓋制圖精度和分辨率的一個因素&#xff0c;無論是歷史影像&#xff08;黑白影像&#xff09;還是近期影像&#xff08;全彩影像&#xff09;。陰影的產生取決于太陽光照&#xff08;太陽方位角和天頂角&#xff09;、相機視點&#xf…

UE material advance 學習筆記

如何體現輪胎速度的快速感&#xff1a;就是增加一個radial blur&#xff0c;會讓視覺效果感覺輪胎已經轉冒煙了&#xff0c;但是上面兩個輪胎的轉速其實是相同的這種磨砂的感覺&#xff0c;可以用上ditherAA來實現只看法線這一塊&#xff0c;ditherAA就是讓他的表面顏色有大量的…

Vue--2、Vue2 項目配置與組件化開發

一、Vue2 項目環境搭建1. 環境準備安裝 Node.js&#xff1a;推薦使用 nvm 管理多版本 Node# 安裝Node 16.20.2 nvm install 16.20.2 # 切換至指定版本 nvm use 16.20.2 # 驗證安裝 node -v && npm -v安裝 Vue CLI 腳手架&#xff1a;# 國內鏡像源安裝 npm install --re…

虛幻基礎:函數的返回節點

能幫到你的話&#xff0c;就給個贊吧 &#x1f618; 文章目錄函數的返回節點&#xff1a;返回執行后的值返回執行后的值若不執行第一次 返回參數的默認值第二次 返回上一次執行值示例函數的返回節點&#xff1a;返回執行后的值 返回執行后的值 若不執行 第一次 返回參數的默…

FFmpeg 升級指北

近期我參與了部門底層庫依賴的 FFmpeg 從 3.4 升級至 7.0.2 的工作&#xff0c;在此分享一些經驗和遇到的 API 變動。 將 FFmpeg 升級到高版本后&#xff0c;編譯過程中遇到大量報錯是常態。這些錯誤通常源于 API 接口變更或結構體字段調整。此時不必驚慌&#xff0c;核心解決…

RISCV Linux 虛擬內存精講系列三 -- setup_vm()

在 Linux 使用虛擬地址前&#xff0c;需要先配置頁表&#xff0c;這就是 setup_vm() 的作用。然而&#xff0c;Linux 的頁表配置&#xff0c;并不是一次過完成的&#xff0c;分了兩個階段&#xff0c;如下&#xff1a;在 setup_vm() 中&#xff0c;主要初始化了&#xff1a;1. …

創客匠人:解析創始人 IP 打造的底層邏輯與知識變現路徑

在數字經濟時代&#xff0c;創始人 IP 的價值被不斷放大&#xff0c;而知識變現作為 IP 商業閉環的核心環節&#xff0c;正成為無數創業者探索的方向。創客匠人深耕知識付費領域多年&#xff0c;見證了大量創始人從 0 到 1 打造 IP 并實現變現的全過程&#xff0c;其背后的邏輯…

Visual Studio 2022 MFC Dialog 添加Toolbar及Tips提示

主要步驟&#xff1a;在主框架類中添加消息處理函數聲明在 OnCreate 函數中啟用工具欄提示在消息映射中注冊 TTN_NEEDTEXT 消息使用 OnToolTipText 函數實現自定義提示文本1.在主程序的.h文件中加入afx_msg BOOL OnToolTipText(UINT id, NMHDR* pNMHDR, LRESULT* pResult); 2.在…

2025Q2大模型更新匯總(大語言模型篇)

摘要 2025年Q2大語言模型更新匯總&#xff1a; Qwen3&#xff0c;Deepseek-R1-0528&#xff0c;Doubao-Seed-1.6, MiniMax-M1, GPT4.1/O3/O4&#xff0c;Claude4/Gemini2.5 Qwen3 ? 開源MOE模型&#xff0c; ? MOE模型&#xff1a;Qwen3-235B-A22B&#xff0c;Qwen3-30B-…

【STM32】定時器中斷 + 含常用寄存器和庫函數配置(提供完整實例代碼)

通用定時器基礎知識 參考資料:STM32F1xx官方資料:《STM32中文參考手冊V10》-第14章通用定時器 通用定時器工作過程: 時鐘選擇 計數器時鐘可以由下列時鐘源提供: ① 內部時鐘(CK_INT) ② 外部時鐘模式1:外部輸入腳(TIx) ③ 外部時鐘模式2:外部觸發輸入(ETR) ④ 內部觸…

集群Redis

文章目錄前言一、Redis主從復制配置1.1.配置文件redis_master.conf,redis_slave.conf1.2.啟動服務1.3.檢查成果二、Redis集群配置2.1.服務器40.240.34.91集群配置2.2.其它服務器xxx.92,xxx.93集群配置2.3.啟動服務2.3.啟動集群服務2.4.檢查成果三、優劣四、結束前言 提示&…