在调试器中,我看到指针具有我想要的正确地址和变量
UBRR_VAL
、val1
、val2
保存传入的值。唯一的问题是结构体 _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;
}
最佳答案
感谢大家对此问题的反馈。它帮助我缩小了问题范围并最终解决了问题。事实证明,我在结构中的变量的顺序是错误的。我现在解决了这个问题。非常感谢您帮我解决这个问题!
关于c - 为什么结构体中的变量没有被分配任何值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8949529/