Почему переменным внутри структуры не присваивается какое-либо значение? - PullRequest
0 голосов
/ 21 января 2012

В отладчике я вижу, что указатель имеет нужный мне адрес и переменные 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;
}

1 Ответ

0 голосов
/ 07 августа 2012

Я ценю все отзывы на этот вопрос.Это помогло мне сузить проблему и, наконец, решить ее.Оказывается, у меня были переменные внутри структуры в неправильном последовательном порядке.Я исправил эту проблему сейчас.Большое спасибо за помощь в решении этой проблемы!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...