我正在尝试通过UART向我的AVR发送十六进制数据。问题是,我不能发送超过两对的十六进制。我需要发送两个以上,比如9-10。
例如:
我只能发送0x2f和0x3f。如果我发送的更多,它总是减号。
我要把0xff234f3a3f送过去。
我的代码:
sendString("wish me luck\n");
while(1)
{
char str[35];
int i;
printf("enter the code :\n");
scanf("%x", &i);
printf("%#x (%d)\n",i,i);
}我做错什么了?
发布于 2016-11-08 12:42:17
您可以通过将想要发送的数据存储在软件缓冲区中来实现这一点,一旦avr发送了1字节的uart数据,就用软件缓冲区中的字节填充uart寄存器。你可以这样做:
char ar[] = "hello";
for (i = 0; i < strlen(ar); i++) {
while ((UCSR0A & (1<<UDRE0)) == 0);
UDR0 = ar[i];
}希望这能有所帮助
发布于 2016-11-08 12:34:08
由于AVR UART在嵌入式环境中具有大小限制,因此UART缓冲区仅为8/16位。你可以发送2个字节的数据,为了发送更多的数据,你需要做一个循环来发送剩余的数据字节。
https://stackoverflow.com/questions/40478534
复制相似问题