- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
在 C 中,我有一个数组等待从传感器接收字节,保存在缓冲区中,然后像这样打印出来:
unsigned char responseFrame[300];
int main(void) {
UART_init();
while(1) {
receive(responseFrame);
myLog(responseFrame, sizeof(responseFrame));
}
}
我通过执行以下操作来填充数组:
void receive(unsigned char *rcv_buff) {
uint8_t recv_data;
for (int i=0; i<300; i++){
USART1_Flush();
rcv_buff[i] = USART1_RX();
}
}
然后我使用以下命令打印出缓冲区中的内容:
// Logs this output to the serial port; used for debugging
void myLog(unsigned char *msg, int size) {
for (int i=0; i<size; i++) {
USART0_TX(msg[i]);
}
}
这会打印出数组,但是当收到另一个字节迭代时,所有内容都会被附加,所以假设我首先收到 {0xFF, 0xFF} 我第一次迭代的输出是:
0xFF 0xFF, 0x00, 0x00 ... 0x00
但在下一次迭代中,假设接收到 {0x0A, 0x0A},在输出中我看到了:
0xFF, 0xFF, 0x0A, 0x0A, 0x00, 0x00 ... 0x00
注意:省略号只是表示有更多的 0x00 被打印出来,直到我们基本达到数组的大小。
为什么这是从数组的开头追加而不是覆盖?
这是我的 USART0_TX 和 USART1_RX 函数:
void USART0_TX(uint8_t myData) {
// Wait if a byte is being transmitted
while( !(UCSR0A & (1<<UDRE0)) );
// Transmit data
UDR0 = myData;
};
uint8_t USART1_RX(void) {
// Wait until recv buffer is full
while( !(UCSR1A & (1<<RXC1)) );
// Return recvd data
return UDR1;
};
这是我用来刷新我的 USART1 RX 的代码:
//USART1 flush, clears USART1 buffer
void USART1_Flush( void )
{
unsigned char dummy;
while ( UCSR1A & (1<<RXC1) ) dummy = UDR1;
}
最佳答案
我相信你的名为“Flush”的函数实际上是一个“Poll”函数,寻找一个字符出现(这是正常用法,等待字符出现)。您使用 RXC1 的逻辑似乎颠倒了。尝试查看这个看起来非常专业的 AVR 驱动程序(它有一个轮询选项,就像您正在做的那样):
另一个很好评论的轮询驱动程序(小的有很多评论):avr uart driver
关于c++ - C/C++ 中用于 AVR 的数组不断追加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11673024/
如果这不是一个错误,那就是另一个错误。如果不是那样的话,那就是别的东西了。我觉得我的项目已经改变了很多,现在只是试图解决代码签名问题,结果一切都搞砸了。我严格按照说明进行操作,但出现错误,例如当前的“
我不确定是否有一些我不知道的内置变量或规则,或者 make 是否有问题,或者我只是疯了。 对于我的一个项目,我有一个如下的 makefile: CC=g++ CFLAGS=-O3 `libpng-co
我有大约 10 个 div,它们必须不断翻转,每个 div 延迟 3 秒 这个 codrops 链接的最后一个效果是我正在寻找的,但无需单击 div http://tympanus.net/Devel
我如何使用 jQuery 持续运行 PHP 脚本并每秒获取响应,以及将鼠标上的少量数据发送到同一脚本? 我真的必须添加一些随机扩展才能让这么简单的计时器工作吗? 最佳答案 To iterate is
JBoss 4.x EJB 3.0 我见过如下代码(大大简化): @Stateless @TransactionAttribute(TransactionAttributeType.NOT_SUPPO
使用 PHPStorm,我试图忽略每次尝试进行 git 提交时 pop 的 workspace.xml。 我的 .gitignore 看起来像: /.idea/ .idea/workspace.xml
我是一名优秀的程序员,十分优秀!