【发布时间】:2020-04-01 18:14:52
【问题描述】:
我正在 Atmel Studio 中为 Arduino 编写一个项目。 在我的代码中,我有两个如下所示的函数:
unsigned char* USART_Receive(void){
while(!(UCSR0A & (1<<RXC0)) );
return UDR0;
}
void Transmit(){
unsigned char *a = USART_Receive();
unsigned char pckaffe[4] = { 0x0C, 0x0A, 0x0F, 0x0E };
unsigned char pcpersienner[4] = { 0x0B, 0x0B, 0x0B, 0x0B };
if(a == pckaffe && zeroCrossCounter() == 1){
sendBurst();
}
}
如果一切正常,UDR0 寄存器应该包含一个具有 4 个索引的数组 (array[4]),因此要在寄存器中返回数组,我使用了指针。但是,我在return UDR0 收到以下错误:
Error invalid conversion from 'uint8_t {aka unsigned char}' to 'unsigned char*' [-fpermissive]
编辑:
亚当·斯特普尼亚克:
uint8_t varrr = 0;
unsigned char* USART_Receive(void){
while(!(UCSR0A & (1<<RXC0)) );
varrr = UDR0;
return &varrr;
}
【问题讨论】:
-
UDR0的类型是什么?
-
@AdamStepniak 我不确定,因为数据表中没有提及。但是,编译器会在错误行显示
'uint8_t {aka unsigned char}'。那么也许它可能是一个无符号字符。
标签: c++ arrays pointers return atmelstudio