Atmel Studio:返回一个包含数组的寄存器



我正在为 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;
}

说它修复了你的整个代码,这完全脱离了上下文,但如果你会这样做:

#include <cstdint>
uint8_t varaible = 0;
unsigned char* USART_Receive(void){
return varaible;
}
void Transmit(){
unsigned char *a = USART_Receive();
}
int main(){
Transmit();
}

将获得:

In function 'unsigned char* USART_Receive()':
6:12: error: invalid conversion from 'uint8_t {aka unsigned char}' to 'unsigned char*' [-fpermissive]
In function 'void Transmit()':
10:24: warning: unused variable 'a' [-Wunused-variable]

要解决此问题,只需返回变量的地址:

#include <cstdint>
uint8_t varaible = 0;
unsigned char* USART_Receive(void){
return &varaible;
}
void Transmit(){
unsigned char *a = USART_Receive();
}
int main(){
Transmit();
}

相关内容

最新更新