我正在尝试编写使用 68HC12 上的多个串行接口,但我无法让它说话。我想我已经将问题隔离为无法写入 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 是一个巨大的结构,其中包含所有寄存器,并且是易变的。