gpt4 book ai didi

C 字符数组地址问题

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

我在 C 中遇到问题,无法在结构中寻址 char 数组。当我在数组中写入字符时,它会将它们写入单词边界而不是字符边界。这是结构声明。

typedef struct RxBuffer {
int Status;
int ByteCount;
int Index;
char Data[SCI_BUFFER_LENGTH];
} RxBuffer;

这是实际执行写入的代码,

RxBuffer SciaRxBuffer;

char SciaRxData;
int LoopBackCrFlag;
int RxDataReady;

interrupt void scia_rx_isr()
{

// Get Rx Data and first LoopBack
SciaRxData = SciaRegs.SCIRXBUF.all; // Read data
SciaRegs.SCITXBUF = SciaRxData; // Send loop back Tx data

// Check to see if carriage return
if (SciaRxData == CR)
{
// Set the loopback flag so Line-feed is transmitted
LoopBackCrFlag = TRUE;
}

//!
//! Problem is right here. SciaRxData is being written into
//! SciaRxBuffer.Data[SciaRxBuffer.ByteCount++] on Word
//! boundaries instead of byte boundaries.
//!

// Stuff RxBuffer & Mark as busy
SciaRxBuffer.Data[SciaRxBuffer.ByteCount++] = SciaRxData;
SciaRxBuffer.Status = RX_BUSY;

if (SciaRxData == CR)
{
SciaRxBuffer.Status = RX_READY;
SciaRxBuffer.Index = 0;
RxDataReady = TRUE;
}


// Clear Overflow and interrupt flags
SciaRegs.SCIFFRX.bit.RXFFOVRCLR = 1; // Clear Overflow flag
SciaRegs.SCIFFRX.bit.RXFFINTCLR = 1; // Clear Interrupt flag

// Issue the PIE ack
PieCtrlRegs.PIEACK.all|=0x100;

}

欢迎任何帮助

最好的问候,史蒂夫·曼斯菲尔德

最佳答案

感谢大家的参与。我刚刚深入研究了硬件,发现我使用的 TI DSP 不支持字节操作。它的最小操作是一个字(2 个字节)。尽管我将数组声明为 char 数组,但当我写入数组时,它会将其写入整数。如果我想处理字节操作,我必须将第一个字符左移 8 位,然后对下一个字符进行或运算,然后将其写入数组。就像每个人常说的,如果硬件有问题——用软件解决!

最好的问候,史蒂夫·曼斯菲尔德

关于C 字符数组地址问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22949793/

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