對暫存器的操作

2022-03-02 20:26:43 字數 1015 閱讀 6851

接觸了一陣子的stm32函式庫,使用起來挺方便的,但是很少有處理器會有函式庫,大部分情況下還是要自己來對暫存器進行操作,所以還是不要生疏了對暫存器的操作。

對暫存器的操作有時候要考慮對其不同的位進行先後順序不同的設定,因為這樣可能達不到預期的效果,這個不太好總結,但是對暫存器操作的方法是固定的。

在這之前,首先要明白邏輯運算子(! && ||)和位運算子(<< >> ~ | ^ &)的區別,對暫存器的操作使用的是位運算子,邏輯運算子一般用於在程式中判斷邏輯中使用。

#define   reg     0xff

1)對單個的位進行賦值

(1)將暫存器reg的第5位置「1」

reg |= (1 << 5);

(2)將暫存器reg的第5位清零

reg &= ~(1 << 5);

(3)將暫存器reg的第3和第5位置「1」

reg |= (1 << 5) | (1 << 3);

(4)將暫存器reg的第3和5位清零

reg &= ~( (1 << 5) | (1 << 3) );

該段總結如下:

將某位置1,移位取反後使用位運算"|"

將某位置0,移位取反後,使用位運算"&"

2)直接賦值

(1)將暫存器reg的1、2、3、5、7位置「1」

reg = 0x5e;

(即給暫存器reg1賦值為1010 1110,這種方法多在初始化中使用)

(2)分別將暫存器reg的1、3、5、7位置「1」,0、2位置「0」

u8 temp;

tmep = reg;               

temp &= ~0x01;      //等價於 temp &= ~(1<<0)  將第0位清零       

temp |= (1 << 1); 

temp &= ~(1 << 2);

temp |= (1 << 3);

temp |= (1 << 5);

temp |= (1 << 7);

reg = temp;

對暫存器的認識

三 對暫存器的認識 暫存器 register 相當於調色皿,資料相當於色料。把色料放進調色皿裡,為的是要得到預定的效果,暫存器對於資料亦然。調色皿有大有小,深度有深有淺,其目的是針對不同的情況,以作有效的處理。暫存器也是一樣,應用得好,程式會很精簡,容易修改 閱讀。否則,想到哪乙個就用哪乙個,沒有原...

對暫存器的理解

在進行嵌入式開發過程中,暫存器可以說是與嵌入式工程師打交道最多的東西,因為偏向底層的驅動開發,幾乎都是利用暫存器完成的。那麼,暫存器到底是什麼呢?下面為自己的一些理解,如有錯誤之處,還望海涵與糾正,謝謝!在正式進入暫存器的知識之前,首先對記憶體對映進行簡單的介紹。此處以ti公司的dsp28335晶元...

暫存器對映與直接操作暫存器

一 儲存器對映 與重對映 儲存器本身不具有位址資訊,它的位址是由晶元廠商或使用者分配,給 物理儲存器分配 邏輯位址的過程就稱為儲存器對映 通過這些邏輯位址就可以訪問到相應的儲存器的物理儲存單元。如果給儲存器再分配乙個位址就叫儲存器重對映。如stm32,對於 片上外設,它們以四個位元組為乙個單元,共3...