c - 为什么结构体中的变量没有被分配任何值?

标签 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;
}

最佳答案

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

关于c - 为什么结构体中的变量没有被分配任何值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8949529/

相关文章:

c - C : are these types identical technically, 中的类型声明等效还是只是实用上相同?

c - 结构中大小的读取无效

c - 反转字符串文字的段错误

c - 指向 int 数组的指针和指向 int 的指针之间的语法差异

swift - 在父类(super class)中实现 CodingKey 映射

java - 未读取变量

c++ - float 和 double (C++) 的实际最小/最大值是多少

r - 使用特定列表对数据帧 R 中的变量进行分组

C - 创建和使用结构数组?错误 : expected identifier or '(' before '[' token

c - 如何处理结构数组?