打印

TIVA中HWREG()使用详解

[复制链接]
5010|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
我们经常在TIVA程序的编写中中看到这样的操作,比如HWREG((UART0_BASE+UART_O_CTL)或者HWREG(0x12345678)这样的形式,那么HWREG()是什么意思呢?

顾名思义HWREG()的意思就是操作硬件寄存器的意思,里面的参数是tm4c芯片的硬件外设寄存器地址,可以在芯片手册memory地址分配找到。HWREG()是在hw_types.h中定义的,对应的还有其他几个函数,原型如下所示:
//

// Macros for hardware access, both direct and via the bit-band region.

//

//*****************************************************************************

#define HWREG(x) \

        (*((volatile uint32_t *)(x)))

#define HWREGH(x) \

        (*((volatile uint16_t *)(x)))

#define HWREGB(x) \

        (*((volatile uint8_t *)(x)))

#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))


HWREG的参数是tm4c芯片的硬件外设寄存器地址,可以在芯片手册memory地址分配找到。以TM4C123GH6PM为例,memory地址分配在手册的93页,外设寄存器的映射地址如下:
上面只是外设的首地址和结束地址,具体到每个寄存器,可以查看数据手册中寄存器描述的地址偏移,就是偏移外设start地址的字节数,以操作UARTx的串口使能为例。UARTx的串口使能操作的寄存器为URATCTL寄存器的第1位。URATCTL的地址和偏移手册描述如下:
如上图所示,URATCTL的偏移为0x030,即偏移为UARTxbase address+0x030,用HWREG()操作的话,应该是这样的。
HWREG(0x4000C000+0x030)|= 0x00000001(使能UART0)
HWREG(0x4000D000+0x030)|= 0x00000001(使能UART1)
-----
以此类推。
又因为在hw_uart.h中对寄存器URATCTL的地址进行了宏定义,对几个串口使能寄存器URATCTL第0位的值进行了宏定义,所以HWREG(0x4000C000+0x030) = 0x00000001这句代码书写如下:
HWREG(UART0_BASE+UART_O_CTL)  |= UART_CTL_UARTEN;

所以就有了我们常见的对寄存器的操作HWREG()了。

相关帖子

沙发
dirtwillfly| | 2018-5-15 08:26 | 只看该作者
感谢分享

使用特权

评论回复
板凳
yujielun| | 2018-5-16 22:59 | 只看该作者
不使用msp432?

使用特权

评论回复
地板
uytyu| | 2018-5-16 23:00 | 只看该作者
跟着学习了。

使用特权

评论回复
5
uytyu| | 2018-5-16 23:00 | 只看该作者
都是借鉴例程的资料。

使用特权

评论回复
6
yujielun| | 2018-5-16 23:00 | 只看该作者
TIVA现在不怎么使用了。

使用特权

评论回复
7
xyz549040622|  楼主 | 2018-5-17 08:48 | 只看该作者

这个玩的人更少。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:qq群: 嵌入式系统arm初学者 224636155←← +→→点击-->小 i 精品课全集,21ic公开课~~←←→→点击-->小 i 精品课全集,给你全方位的技能策划~~←←

2813

主题

19300

帖子

105

粉丝