接觸了一陣子的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;
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
原文標題:對寄存器操作的通用方法總結
文章出處:【微信號:mcu168,微信公眾號:硬件攻城獅】歡迎添加關注!文章轉載請注明出處。
相關推薦
寄存器,是集成電路中非常重要的一種存儲單元,通常由觸發器組成。在集成電路設計中,寄存器可分為電路內部使用的寄存器和充當內外部接口的寄存器這兩
發表于 07-21 16:59
?3897次閱讀
,即對其各個位有先后設置的順序的要求,使硬件產生的結果也不同;5,有時,對于一個寄存器要求必須一次賦值,若對其某些位賦值先后順序不同,便達不到預期的效果和功能。二,寄存器的賦值
發表于 10-23 18:23
使用 C語言對寄存器賦值時,我們常常要求只修改該寄存器的某幾位的值,且其它的寄存器位不變,這個時候我們就需要用到 C 語言的位操作方法了。1. 把變量的某位清零此處我們以變量 a代表
發表于 11-26 08:00
目錄一、硬件知識 - LED原理圖1、通過硬件原理圖剖析:怎么點亮的LED?二、GPIO引腳操作方法概述1、如果想要使得GPIO的某個引腳輸出高低電平,該怎么做?2、GPIO寄存器的2種操作方法
發表于 01-20 07:38
GPIO寄存器的操作方法有哪幾種呢?RK3288的GPIO操作方法是什么?
發表于 03-09 07:38
寄存器傳輸級的低功耗設計對降低整個芯片的功耗作用非常顯著,本文討論的三種寄存器傳輸級低功耗設計方法,經驗證對動態功耗的降低很有效。
發表于 02-16 18:12
?1453次閱讀
ARM寄存器學習總結
發表于 01-04 15:10
?0次下載
本文主要詳解寄存器操作方法以及對寄存器操作的通用方法總結,具體的跟隨小編來了解一下。
發表于 05-22 15:53
?2.3w次閱讀
使用 C語言對寄存器賦值時,我們常常要求只修改該寄存器的某幾位的值,且其它的寄存器位不變,這個時候我們就需要用到 C 語言的位操作方法了。1. 把變量的某位清零此處我們以變量 a代表
發表于 11-19 09:06
?33次下載
C語言:寄存器操作
發表于 01-13 12:56
?6次下載
操作。但是如果沒有找到能滿足你需求的庫函數,或者你需要操作的寄存器比較少那么使用直接操作寄存器的方法
發表于 01-13 15:43
?19次下載
使用C語言對寄存器賦值時,常常需要用到C語言的位操作方法。把寄存器某位清零 假設a代表寄存器,且其中本來已有值。如果要把其中某一位清零且其它位不變,代碼如下。
發表于 03-12 09:06
?3284次閱讀
寄存器模型操作,指的是通過寄存器模型對RTL中寄存器進行讀寫訪問,或者同步寄存器模型與RTL中寄存器
發表于 05-17 09:01
?888次閱讀
寄存器模型操作,指的是通過寄存器模型對RTL中寄存器進行讀寫訪問,或者同步寄存器模型與RTL中寄存器
發表于 07-12 09:37
?1026次閱讀
一、概述:SysTick是一個簡單的遞減24位計數器。如果你不需要再應用程序中嵌入操作系統,SysTick可以作為簡單的延時和產生周期性的中斷。狀態控制寄存器的第0位可以使能計數器,當
發表于 01-06 08:00
?1724次閱讀
評論