微控制器的要務——控制外設
首先明確乙個概念:當我們使用微控制器的時候,我們在使用它的什麼?計算能力?邏輯分析能力?
no!我們使用得最多的是它所提供得各個功能模組(外設模組)。
所謂外設,是指將特定功能做成乙個模組,然後給出控制埠,讓處理器來控制。只要處理器給了足夠的資訊,外設就能完成特定的一組任務(個人理解
o.o)。
舉例來說(以下只是簡單舉例,實際還有更多的應用);
gpio
:配置好需要的引腳之後,就可以從該引腳輸入或輸出訊號;
timer
(定時器):配置好之後,給定乙個數值,它就不斷的數數,到該值之後就會觸發乙個訊號(當然還有別的功能)。
uart
(非同步序列通訊介面):配置好之後,給出需要傳輸的資訊,它就會將資訊傳輸到指定位置(如上位機)。
adc(模數轉換器):可以讀取外界模擬訊號的數量值(如電壓),轉換為數字值(如
0100)。
…… 這裡不再窮舉了,課本裡面都很詳細。
確定了微控制器控制外設這樣乙個概念之後,我們再來講講(簡單講講吧,水平也不高),微控制器到底是如何控制外設的。
如果看過資料手冊的話,應該會發現,在每乙個外設的章節,都會由暫存器對映(
register map
)和暫存器描述(
register descriptions
)。每乙個外設都有……沒錯,
mpu就是通過暫存器來控制的。我們所有的操作,都是在讀取或者寫入數值到相應的暫存器中。 在
51微控制器稱霸的時代(吹牛皮不犯法吧),所寫的**就是直接對暫存器賦值,或者讀取暫存器的值。因為那時普遍還是
8位的微控制器,暫存器只有
8位,開發人員熟悉這麼簡單的暫存器很容易。但漸漸的,微控制器的位數提高了,暫存器現在普遍達到了
32位之多,去記住每一位代表什麼意思,讓人很頭疼。因此就出現了官方庫,開發人員只需要了解庫函式有什麼作用,就可以使用微控制器了。
如果想要了解對暫存器的操作,使用我們手頭的
ek-tm4c1294xx
,也可以做到。
以最近使用的
uart
為例:
在標頭檔案包含
#include 「inc/tm4c1294ncpdtf.h」
定義變數:
charstart=;
使用如下語句代替
uartcharput(uart0_base,arr[i]);
while(!(uart0_fr_r & (0x0001<<7)));
uart0_dr_r=arr[i];
//uartcharput(uart0_base,arr[i]);
這兩個語句就是通過對
uart0
的資料暫存器寫入資料的方式實現傳送資料的。 其中
while
用來判斷資料暫存器是否為空(為空就跳出,此時才能寫入資料),
while
裡面就是通過讀
uart0_fr_r
的暫存器的第
7位的狀態。該位的狀態就表示資料暫存器是否為空。
datasheet
中對uart
的狀態暫存器的描述如下圖:
其中位7(
bit 7
)叫做txfe
,就是指示當前資料暫存器是否為空。其描述如下圖:
第二句就是將我們需要傳送的字元賦值送入
uart0_dr_r
(資料暫存器,
data register
),然後
uart0
外設模組就自動將資料傳送至上位機了(我們這裡使用的個人電腦)。這也就是
uart
之所以可以稱為乙個模組的原因,它能自動傳輸資料。只是資料需要我們給它而已。
datasheet
中對uart
的資料暫存器的描述如下圖:
可以看到只有
[7:0]
八位是可以給使用者寫入資料的,也就是說,一次只能傳送乙個字元,傳送完之後才能重新裝載。 那麼
uart0_dr_r=arr[i];
這條語句是如何與暫存器掛鉤的呢?也就是說資料是如何儲存到指定的暫存器的?
在標頭檔案
中,將uart0_dr_r
通過巨集定義的方式定義了它指向
uart0
的資料暫存器。就是說,
uart0_dr_r
就是乙個指標,指標指向的位址的值如何改變,這對於學過
c語言的你們來說,應該沒問題了。
可以看看標頭檔案
uart0_dr_r
的巨集定義:
可以看到
uart0_dr_r
指向了0x4000c000
這個位址,從儲存器對映那一節課我們已經了解的
uart0
外設就是被分配到了從這個位址開使的一段空間。
也就是說我們將資料送到了
uart0
的這個位置,然後它就自動幫我們傳送了。
另外,對
uart
的配置什麼的也都是通過
uart
配置暫存器進行操作的,只不過我們使用庫函式開發,庫函式對這些東西進行了高度的封裝,我們不容易注意到而已。
其實可能有些多餘,因為這裡已經講了通過暫存器操作了。到時候看情況吧。
好了,水平不高,僅供交流,多多指教。
祝福大家。
微控制器的片內外設
片內指做成晶元的積體電路內部,簡稱片內 外設是外部裝置的簡稱,是指積體電路晶元外部的裝置。積體電路晶元與外部裝置的連線一般需要專門的介面電路和匯流排的連線 包括控制總線路 位址匯流排和資料匯流排等 由於大規模積體電路的技術發展得很快,現在許多晶元在製造時已經能夠將部分介面電路和匯流排整合到晶元內部。...
微控制器學習04 微控制器外設易忘知識點
ad 1.取樣頻率就是取樣週期的倒數,也就是一秒鐘取樣的次數 2.解析度是決定取樣最小值,比如基準電壓為1v,8位的取樣,最小值是1 256,1為的取樣的最小值是1 1024,解析度越高,取樣越精確 3.取樣週期一般來說 轉換時間 讀取時間 4.為了不失真地恢復模擬訊號,取樣頻率應該不小於模擬訊號頻...
微控制器控制繼電器
一 什麼是繼電器 繼電器 英文名稱 relay 是一種電控制器件,是當輸入量 激勵量 的變化達到規定要求時,在電氣輸出電路中使被控量發生預定的階躍變化的一種電器。網上找了幾張實物圖 二 繼電器的應用與型別 應用 通常應用於自動化的控制電路中,它實際上是用小電流去控制大電流運作的一種 自動開關 故在電...