首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过UART发送十六进制

通过UART发送十六进制
EN

Stack Overflow用户
提问于 2016-11-08 11:37:49
回答 2查看 1.8K关注 0票数 2

我正在尝试通过UART向我的AVR发送十六进制数据。问题是,我不能发送超过两对的十六进制。我需要发送两个以上,比如9-10。

例如:

我只能发送0x2f0x3f。如果我发送的更多,它总是减号。

我要把0xff234f3a3f送过去。

我的代码:

代码语言:javascript
复制
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);
}

我做错什么了?

EN

回答 2

Stack Overflow用户

发布于 2016-11-08 12:42:17

您可以通过将想要发送的数据存储在软件缓冲区中来实现这一点,一旦avr发送了1字节的uart数据,就用软件缓冲区中的字节填充uart寄存器。你可以这样做:

代码语言:javascript
复制
char ar[] = "hello";
for (i = 0; i < strlen(ar); i++) {
    while ((UCSR0A & (1<<UDRE0)) == 0);
    UDR0 = ar[i]; 
}

希望这能有所帮助

票数 1
EN

Stack Overflow用户

发布于 2016-11-08 12:34:08

由于AVR UART在嵌入式环境中具有大小限制,因此UART缓冲区仅为8/16位。你可以发送2个字节的数据,为了发送更多的数据,你需要做一个循环来发送剩余的数据字节。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40478534

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档