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