为什么结构中的变量没有赋值?

时间:2012-01-21 00:11:06

标签: c variables struct

在调试器中,我看到指针具有我想要的正确地址和变量 UBRR_VALval1val2保留传入的值。唯一的问题是结构_UBRRH_UBRRL_UCSRA_UCSRB内的变量没有变化。您可以在下面找到代码段以供参考。感谢。

这是定义struct的方式

typedef uint8_t volatile DEVICEREGISTER;

typedef struct
{
    DEVICEREGISTER _UDR;
    DEVICEREGISTER _UCSRA;
    DEVICEREGISTER _UCSRB;
    DEVICEREGISTER _UBRRL;
} uart_register_t;

#define _USART (uart_register_t*) 0x2C

这就是我调用函数的方式。

uart_init(UBRR_VAL, 0, (1<<_TXC)|(1<<_RXC), _USART); // initialize the uart for outputting and inputting.

以下是功能定义。

void uart_init(uint8_t UBRR_VAL, uint8_t val1, uint8_t val2, uart_register_t *pointer)
{
    pointer->_UBRRL = UBRR_VAL;                     
    pointer->_UCSRA = val1; 
    pointer->_UCSRB = val2;
}

1 个答案:

答案 0 :(得分:0)

我感谢大家对这个问题的反馈。它帮助我缩小了问题范围并最终解决了问题。事实证明,我在结构中的变量是以错误的顺序排列的。我现在解决了这个问题。非常感谢你帮我解决这个问题!