首页 > 解决方案 > #define 中的 C 宏括号和星号

问题描述

我有来自 Nordic SoC 芯片的实时时钟 (RTC) 驱动程序的这行 C 代码。我试图寻找它的作用,但搜索起来有点困难。谁能告诉我它是做什么的?尤其是括号和星号。

#define NRF_RTC0                        ((NRF_RTC_Type            *) NRF_RTC0_BASE)

NRF_RTC_Type是一个结构的 typedef,而NRF_RTC0_BASE是 #define'ed 为 0x4000B000UL。

谢谢!

标签: cmemoryarmembeddeddriver

解决方案


NRF_RTC0_BASE标识从地址开始的一组硬件寄存器4000B000NRF_RTC_Type定义了各个寄存器的映射,它可能会添加volatile限定符以确保它们被视为 I/O 而不是普通内存。

括号进行类型转换操作,星号表示指针类型。

使用宏NRF_RTC0以结构化方式访问寄存器。


推荐阅读