位带操作HWREGBITW(x, b) 理解

1、位带操作

位带区域分直接位带区(bit-band region)和位带别名区(bit-band alias)。直接位带区是一块直接对应寄存器的地址(地址表见芯片手册Memory Map);位带别名区是直接位带区的映射,将每一位膨胀成了一个32位的字。

位带操作HWREGBITW(x, b) 理解

 

2、HWREG()宏

HWREG()宏可以直接操作硬件寄存器,里面的参数是tm4c芯片的硬件外设寄存器地址

#define HWREG(x)                                                                   	   (*((volatile uint32_t *)(x)))
#define HWREGH(x)                                                                 	    (*((volatile uint16_t *)(x)))
#define HWREGB(x)                                                                 	    (*((volatile uint8_t *)(x)))

3、HWREGBITW()宏

HWREGBITW()宏定义的是tm4c芯片的位带操作,对应地址范围是SRAM/Peripheral bit-band alias。宏定义中的“| 0x02000000”则锁定了位带别名区。

#define HWREGBITW(x, b)                                                           	    HWREG(((uint32_t)(x) & 0xF0000000) | 0x02000000 |                            	       		(((uint32_t)(x) & 0x000FFFFF) << 5) | ((b) << 2))
#define HWREGBITH(x, b)                                                           	    HWREGH(((uint32_t)(x) & 0xF0000000) | 0x02000000 |                           	        	(((uint32_t)(x) & 0x000FFFFF) << 5) | ((b) << 2))
#define HWREGBITB(x, b)                                                           	    HWREGB(((uint32_t)(x) & 0xF0000000) | 0x02000000 |                            	       (((uint32_t)(x) & 0x000FFFFF) << 5) | ((b) << 2))

(1)位带区

TM4C芯片中位带区域包含SRAM和Peripheral,如下图所示。

位带操作HWREGBITW(x, b) 理解

 

 

(2)参数说明

HWREGBITW(x,b)宏中的x是所填位带区的地址,b是偏移量。 

位带操作HWREGBITW(x, b) 理解

上一篇:png转ico源码


下一篇:git回退单个文件或文件夹版本