1、位带操作
位带区域分直接位带区(bit-band region)和位带别名区(bit-band alias)。直接位带区是一块直接对应寄存器的地址(地址表见芯片手册Memory Map);位带别名区是直接位带区的映射,将每一位膨胀成了一个32位的字。
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,如下图所示。
(2)参数说明
HWREGBITW(x,b)宏中的x是所填位带区的地址,b是偏移量。