接觸了一陣子的STM32函數庫,使用起來挺方便的,但是很少有處理器會有函數庫,大部分情況下還是要自己來對寄存器進行操作,所以還是不要生疏了對寄存器的操作。
對寄存器的操作有時候要考慮對其不同的位進行先后順序不同的設置,因為這樣可能達不到預期的效果,這個不太好總結,但是對寄存器操作的方法是固定的。
在這之前,首先要明白邏輯運算符(! && ||)和位運算符(<< >> ~ | ^&)的區別,對寄存器的操作使用的是位運算符,邏輯運算符一般用于在程序中判斷邏輯中使用。
例如 定義一個8位的寄存器(0xf0是寄存器的地址):
#defineREG0xFF
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賦值為10101110,這種方法多在初始化中使用)
(2)分別將寄存器REG的1、3、5、7位置“1”,0、2位置“0”
u8temp;
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;
-
寄存器
+關注
關注
31文章
5421瀏覽量
123314
原文標題:對寄存器操作的通用方法總結
文章出處:【微信號:mcu168,微信公眾號:硬件攻城獅】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
寄存器操作
C語言的位操作方法
GPIO引腳操作方法概述
寄存器傳輸級低功耗設計方法

STM32單片機修改寄存器的位操作方法(全網最全)

C語言操作寄存器的常見手法
個人對STM32 SysTick的總結(寄存器操作)

評論