在程序中,我发现了以下一行代码,
static tUART *pUART = (tUART*)UART_ADDR;
任何人都可以解释一下,上面的代码是什么意思?
tUART
在其中一个头文件中定义如下:
typedef struct /**< UART data structure */
{
volatile tUARTBDH uartbdh; /**< UART baud rate high register */
volatile tUARTBDL uartbdl; /**< UART baud rate low register */
volatile tUARTCR1 uartcr1; /**< UART control register 1 */
volatile tUARTCR2 uartcr2; /**< UART control register 2 */
volatile tUARTSR1 uartsr1; /**< UART status register 1 */
volatile tUARTSR2 uartsr2; /**< UART status register 2 */
volatile tUARTCR3 uartcr3; /**< UART control register 3 */
volatile tUARTD uartd; /**< UART data register */
} tUART;
答案 0 :(得分:1)
pUART
是指向tUART
类型变量的指针,它是静态的,所以它只在它所在的文件中可见。
当您像这样(转换为结构)转换UART地址时,您可以通过结构字段轻松访问特定寄存器,而不是始终使用UART_ADDR
。
答案 1 :(得分:0)
static关键字给出了一个变量内部链接。因此,使用extern限定符无法从其他文件访问该变量。 这里pUART是指向结构tUART的指针。该行解释了UART_ADDR是UART的硬件寄存器地址,它被分配给结构tUART的另一个指针。