Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Can';t写入68HC12板上的SC1DRL寄存器——我遗漏了什么?_C_68hc11 - Fatal编程技术网

Can';t写入68HC12板上的SC1DRL寄存器——我遗漏了什么?

Can';t写入68HC12板上的SC1DRL寄存器——我遗漏了什么?,c,68hc11,C,68hc11,我正在尝试编写使用68HC12上的多串行接口的代码,但am无法让它说话。我想我已经隔离了无法写入SC1DRL寄存器(SCI数据寄存器低)的问题 以下内容来自我的SCI ISR: else if (HWRegPtr->SCI.sc1sr1.bit.tdre) { /* Transmit the next byte in TX_Buffer. */ if (TX_Buffer.in != TX_Buffer.out || TX_Buffer.full) { HW

我正在尝试编写使用68HC12上的多串行接口的代码,但am无法让它说话。我想我已经隔离了无法写入SC1DRL寄存器(SCI数据寄存器低)的问题

以下内容来自我的SCI ISR:

else if (HWRegPtr->SCI.sc1sr1.bit.tdre) {
    /* Transmit the next byte in TX_Buffer. */
    if (TX_Buffer.in != TX_Buffer.out || TX_Buffer.full) {
        HWRegPtr->SCI.sc1drl.byte = TX_Buffer.buffer[TX_Buffer.out];
        TX_Buffer.out++;
        if (TX_Buffer.out >= SCI_Buffer_Size) {
            TX_Buffer.out = 0;
        }
        TX_Buffer.full = 0;
    }
    /* Disable the transmit interrupt if the buffer is empty. */
    if (TX_Buffer.in == TX_Buffer.out && !TX_Buffer.full) {
        Disable_SCI_TX();
    }
} 
当TX_Buffer.Buffer的内容写入HWRegPtr->SCI.sc1drl.byte时,它在索引TX_Buffer.out处具有正确的内容,但我的调试器没有显示更改,并且没有数据通过串行接口传输

有人知道我错过了什么吗

编辑:

HWRegPtr定义为:

extern HARDWARE_REGISTER *HWRegPtr;

HARDWARE_REGISTER是一个巨大的结构,其中包含所有的寄存器,并且是易变的。

很可能SC1DRL是一个只写寄存器(请查看官方的REGISTER文档以确定——谷歌没有为我提供正确的PDF)。这意味着您无法将其读回(即使使用目标内调试器)以验证代码


HWRegPtr是如何定义的?它是否有
volatile
在正确的位置,以确保编译器将通过该指针的每一次写入都视为必须立即发生的事情?

我试图将我的答案放在这里,但格式太多,所以我只需编辑我的问题并将其添加到那里。另外,关于只写的东西,你可能是对的,但这是另一件让我对文档感到困惑的事情。文件说明,对SC1DRL的写入访问仅写SCI传输数据寄存器(TDR)的八位。所以当你写SC1DRL时,你真的是在写TDR吗?好吧,我自己已经弄明白了——你是对的,我看不到寄存器上的内容,因为它是只写的,但我的代码实际上是在写它。我看不到通过串行线传输的任何内容,因为我没有使用空调制解调器电缆。x、 x