以下代码行是什么意思?

时间:2018-01-17 11:04:11

标签: c embedded

在程序中,我发现了以下一行代码,

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;

2 个答案:

答案 0 :(得分:1)

pUART是指向tUART类型变量的指针,它是静态的,所以它只在它所在的文件中可见。 当您像这样(转换为结构)转换UART地址时,您可以通过结构字段轻松访问特定寄存器,而不是始终使用UART_ADDR

答案 1 :(得分:0)

全局范围内的

static关键字给出了一个变量内部链接。因此,使用extern限定符无法从其他文件访问该变量。 这里pUART是指向结构tUART的指针。该行解释了UART_ADDR是UART的硬件寄存器地址,它被分配给结构tUART的另一个指针。