本篇文章是我在學習STM32f103時整理出來的知識點,知識點之間沒有連貫性,各位看官可以選擇自己感興趣的知識點觀看。
01存儲器映射與寄存器映射的區別
存儲器映射:
存儲器本身不具有地址信息,它的地址是由芯片廠商或用戶分配,給存儲器分配地址的過程就被稱為存儲器映射。
寄存器映射:
有特定功能的內存單元,通常我們會給這個特殊的內存單元一個名字,這個給已經分配好地址的有特定功能的內存單元取別名的過程就叫做寄存器映射。
02何為推挽輸出
1:可以輸出高低電平,用與連接數字器件,高電平由VDD決定,低電平由VSS決定。
2:推挽結構指兩個三極管受兩路互補的信號控制,總是在一個導通的時候另外一個截止,優點開關效率高,電流大,驅動能力強。
3:輸出高電平時,電流輸出到負載,叫灌電流,可以理解成推,輸出低電平時,負載電流流向芯片,叫拉電流,即挽。
03何為開漏輸出
1:只能輸出低電平,不能輸出高電平。
2:如果要輸出高電平,則需要外接上拉。
3:開漏輸出具有“線與”功能,一個為低,全部為低,多用于I2C和SMBUS總線。
04文件包含的含義及形式區別
實現文件的包含要使用文件包含命令,文件包含命令的特點是能夠在一個程序源文件中將另一個源文件的所有內容包含進來,其一般形式為:
#include<文件名>
#include"文件名"
文件包含可以嵌套使用,即文件B即可以包含文件A,又可以被文件C包含,它們之間的關系為A包含B包含C,這種嵌套可以達到10層以上。 但是要注意文件的互相包含,即文件A包含文件B,而文件B又包含文件A,這是不允許的。 通常給文件命名時可以用以下代碼來解決重復調用的問題:
#ifndef __STM32F10X_H
#define __STM32F10X_H
.
.
#endif
那么尖括號與雙括號所表示的文件查找方法又有什么不同:
1:尖括號表示預處理程序會在系統規定的目錄中查找文件,當然也可以由用戶自行設置。
2:雙括號表示預處理程序首先會在當前源文件所在目錄中查找文件,如果無法找到,則轉向操作系統的環境變量所指的目錄中查找,若仍無法找到,最后轉向系統規定的目錄中查找文件。
模擬示波器:
模擬示波器采用的是模擬電路(示波管,其基礎是電子槍)電子槍向屏幕發射電子,發射的電子經聚焦形成電子束,并打到屏幕上。 屏幕的內表面涂有熒光物質,這樣電子束打中的點就會發出光來。
數字示波器:
數字示波器是數據采集,A/D轉換,軟件編程等一系列的技術制造出來的高性能示波器。 數字示波器一般支持多級菜單,能提供給用戶多種選擇,多種分析功能。 還有一些示波器可以提供存儲,實現對波形的保存和處理,現在普遍是使用數字濾波器。
06keil5魔術棒配置
keil5如何設置程序燒寫進開發板直接可以運行:打開魔術棒-Debug-Use旁邊的Settings-Flash Download-將里面的Reset and Run打開就可以了。
既然說魔術棒的配置,我們就來說一下魔術棒里面比較重要的一處配置,如下圖所示:
第一個紅框的意思:
相當于我們在文件中使用“define”語句定義宏一樣,在編譯器中添加宏的好處就是,只要用了這個模板,就不用源文件中修改代碼了。
STM32F101X_HD宏:
為了告訴STM32標準庫,我們使用的芯片類型是STM32型號是大容量的,使STM32標準庫根據我們選定的芯片型號來配置。
USE_STDPERIPH_DRIVER宏:
為了讓stm32f10x.h包含stm32f10x_conf.h這個頭文件。
第二個紅框“Include Paths”這里添加的是頭文件的路徑,如果編譯的時候提示說找不到頭文件,一般就是這里配置出了問題。 你把頭文件放到了哪個文件夾,就把該文件夾添加到這里即可。
07位帶操作公式詳解
位帶區里面的每一個位都可以通過位帶別名區的地址來訪問。 位帶區的一個位,對應位帶別名區的四個字節。
STM32F103中外設位帶區與外設位帶別名區的地址轉換:
別名地址 = 0x42000000 + (A-0x40000000)84+n*4
STM32F103中SRAM位帶區與SRAM位帶別名區的地址轉換:
別名地址 = 0x22000000 + (A-0x20000000)84+n*4
A:表示我們要操作的那個位所在的寄存器的地址
n:位號
注意:位帶區的一個位在位帶別名區會被膨脹成四個字節
為了方便操作,我們可以把這兩個公式合并成一個,公式如下:
((addr & 0xF0000000)+0x02000000+((addr &0x000FFFFF)<<5)+(bitnum<<2))
addr:要操作的位所在寄存器的地址
bitnum:位號,即在寄存器的第幾位
配方合成原理:
addr & 0xF0000000 是為了區別 SRAM 還是外設,實際效果就是取出 4 或者 2,如果是外設,則取出的是 4,+0X02000000 之后就等于 0X42000000,0X42000000 是外設別名區的起始地址。 如果是 SRAM,則取出的是 2,+0X02000000 之后就等于 0X22000000,0X22000000 是 SRAM 別名區的起始地址。
addr & 0x00FFFFFF 屏蔽了高三位,相當于減去 0X20000000 或者 0X40000000,但是為什么是屏蔽高三位? 因為外設的最高地址是:0X2010 0000,跟起始地址 0X20000000 相減的時候,總是低 5 位才有效,所以干脆就把高三位屏蔽掉來達到減去起始地址的效果,具體屏蔽掉多少位跟最高地址有關。 SRAM 同理分析即可。 <<5 相當于2的5次方相當于84,<<2 同理。
08啟動文件作用及相關名詞解釋
啟動文件的作用:
1-初始化堆棧指針SP
2-初始化PC指針,指向復位程序
3-初始化中斷向量表
4-配置系統時鐘
5-調用C庫函數main,最終進入C的世界
啟動文件中的量:
Stack-棧:
用于局部變量、函數調用、函數形參的開銷,棧是由高向低生長的。
Heap-堆:
堆用于動態內存的分配,malloc函數
保存8:
指定當前文件的堆棧按照 8 字節對齊。
拇指:
表示后面指令兼容 THUMB 指令。 (16bit)
拇指-2:
兼容16位和32位
出口:
聲明一個標號可被外部的文件使用,使標號具有全局屬性。
直流電:
分配一個或者多個以字為單位的內存,以四字節對齊,并要求初始化這些內存。 在向量表中,DCD 分配了一堆內存,并且以 ESR 的入口地址初始化它們。
弱:
表示弱定義,如果外部文件優先定義了該標號則首先引用該標號,如果外部文件沒有聲明也不會出錯。
進口:
表示該標號來自外部文件,跟 C 語言中的 EXTERN 關鍵字類似。
LDR:
LDR是一個偽指令,可以作為加載一個立即數或者一個地址到一個寄存器
09何為CMSIS
ARM? Cortex? 微控制器軟件接口標準 (CMSIS) 是 Cortex-M 處理器系列的與供應商無關的硬件抽象層。 CMSIS 可實現與處理器和外設之間的一致且簡單的軟件接口,從而簡化軟件的重用,縮短微控制器開發人員新手的學習過程,并縮短新設備的上市時間。
10何為TLE-TDD
LTE是基于OFDMA技術、由3GPP組織制定的全球通用標準,包括FDD和TDD兩種模式用于成對頻譜和非成對頻譜。
LTE-TDD,國內亦稱TD-LTE,即 Time Division Long Term Evolution(分時長期演進),由3GPP組織涵蓋的全球各大企業及運營商共同制定,LTE標準中的FDD和TDD兩個模式實質上是相同的,兩個模式間只存在較小的差異,相似度達90%。 TDD即時分雙工(Time Division Duplexing),是移動通信技術使用的雙工技術之一,與FDD頻分雙工相對應。 TD-LTE是TDD版本的LTE的技術,FDD-LTE的技術是FDD版本的LTE技術。 TD-SCDMA是CDMA(碼分多址)技術,TD-LTE是OFDM(正交頻分復用)技術。 兩者從編解碼、幀格式、空口、信令,到網絡架構,都不一樣。
11時鐘相關名詞及解釋
RCC:reset clock control復位和時鐘控制器
HSE:High Speed External Clock signal高速的外部時鐘
HSI:Low Speed Internal Clock signal高速的內部時鐘
MCO:microcontroller clock output微控制器時鐘輸出引腳
AHB:advanced high-performance bus高性能總線
PLLCLK:鎖相環時鐘。
SYSCLK:系統時鐘
HCLK:AHB高速總線時鐘
PCLK1:APB1低速總線時鐘
PCLK2:APB2高速總線時鐘
RTC:為芯片內部的RTC外設提供時鐘
IWDGCLK:獨立看門狗時鐘
-
寄存器
+關注
關注
31文章
5336瀏覽量
120230 -
存儲器
+關注
關注
38文章
7484瀏覽量
163763 -
映射
+關注
關注
0文章
47瀏覽量
15813 -
開漏輸出
+關注
關注
0文章
34瀏覽量
7319 -
推挽輸出
+關注
關注
0文章
42瀏覽量
6513
發布評論請先 登錄
相關推薦
評論