Bom dia Amigos
Eu programo em c para micro-controladores e estou com uma duvida num programa criado pelo compilador, gostaria de saber se algum dos amigos poderia me ajudar?
eu não consegui entender bem esta estrutura e como manipula-la, na verdade eu uso muito pouco estruturas devido realmente sempre duvidas com elas,
como manipula-las etc.
Eu coloquei abaixo os comentários, gostaria de saber se esta correto, mas as duvidas são somente onde estão os
meu comentários, no restante ok.
Onde esta *rxTail na struct eu entendo que é um ponteiro para a variável uint8_t, porém no programa ele incrementa o rxtail mas eu entendo que o rxTail
é apenas um endereço ai onde esta minha duvida, não teria que ser um buffer.??
typedef struct
{
/* RX Byte Q */
uint8_t *rxTail ; //aqui foi criado um ponteiro para apenas uma variável tipo inteira ??
uint8_t *rxHead ;
/* TX Byte Q */
uint8_t *txTail ;
uint8_t *txHead ;
UART_BYTEQ_STATUS rxStatus ;
UART_BYTEQ_STATUS txStatus ;
} UART_OBJECT ;
static UART_OBJECT uart2_obj ;
void interrupt(void)
{
while((U2STAbits.URXDA == 1))
{
*uart2_obj.rxTail = U2RXREG; // salva no end. da extruct apontado pelo ponteiro rxtail o dado presente em u2rxreg
uart2_obj.rxTail++; //aqui não entendi,pois se eu tenho somente um endereço da struct não teria que ser um buffer
if(uart2_obj.rxTail == (uart2_rxByteQ + UART2_CONFIG_RX_BYTEQ_LENGTH))
{
uart2_obj.rxTail = uart2_rxByteQ;
}
uart2_obj.rxStatus.s.empty = false;
if(uart2_obj.rxTail == uart2_obj.rxHead)
{
//Sets the flag RX full
uart2_obj.rxStatus.s.full = true;
break;
}
}
}