我正在使用RX0引脚通过USB端口与Arduino(ATmega2560)进行串行通信。在接收功能中,我想比较接收信息UDR0unsigned char pckaffe[4]的寄存器。通过USB端口发送到Arduino的数据来自一台PC,如果一切正常,它应该发送未签名的char数组,这就是为什么我将UDR0unsigned char pckaffe进行比较的原因。

但是,在if语句中,编译器会说Error ISO C++ forbids comparison between pointer and integer [-fpermissive]

这是为什么?

unsigned char pckaffe[4] = { 0x0C, 0x0A, 0x0F, 0x0E };

void USART_Receive(){
    while(!(UCSR0A & (1<<RXC0)) );
    if(UDR0 == pckaffe){
        PORTB ^= (1 << PB1);
    }
}

最佳答案

这是为什么?


unsigned char pckaffe[4] = { 0x0C, 0x0A, 0x0F, 0x0E };


pckaffe是一个无符号的char指针,您正在尝试将其与整数进行比较

if(UDR0 == pckaffe)

关于c++ - 比较UART寄存器UDR0与无符号字符数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59266887/

10-12 03:41