gpt4 book ai didi

c - AVR C 编程 - 全局数组

转载 作者:太空宇宙 更新时间:2023-11-04 04:53:57 26 4
gpt4 key购买 nike

我正在尝试使用全局数组来存储我知道不会超过 255 字节的数据。但是当我尝试使用数组传输我的数据时,似乎没有任何传输。我做错了什么?

char responseFrame[255];

int main {
...
while(1){
getData();
}

};
void getData(void) {
int responseLen = USART1_RX();
// put data in the response frame
for (int i = 0; i < responseLen; i++){
recv_data = USART1_RX();
responseFrame[i]=recv_data;
//USART0_TX(responseFrame[i]);
}

LogOutput(responseFrame, responseLen);
}

void LogOutput(char *msg, int size) {

int i;
for (i = 0; i < size; i++) {
USART0_TX(msg[i]);
}
}

但是,当我注释我的日志记录函数“LogOutput”并使用“USART0_TX(responseFrame[i])”行直接传输时,它会适本地传输信息。

这是我的 USART0_TX 函数:

void USART0_TX(uint8_t myData) {
// Wait if a byte is being transmitted
while( !(UCSR0A & (1<<UDRE0)) );
// Transmit data
UDR0 = myData;
};

最佳答案

您确定您的 LogOutput 函数正在传递有效数据吗?

这应该可行

unsigned char* data = responseFrame;
LogOutput(data,255);

另一个想法:

您是否正在运行带有任何优化的编译器?尝试将它们关闭以查看问题是否消失。

此外,您可能需要考虑将全局标记为 volatile。

volatile char data[255];

关于c - AVR C 编程 - 全局数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11657629/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com