首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法写入68HC12板上的SC1DRL寄存器--我遗漏了什么?

无法写入68HC12板上的SC1DRL寄存器--我遗漏了什么?
EN

Stack Overflow用户
提问于 2010-11-10 08:04:15
回答 1查看 96关注 0票数 1

我正在尝试写使用68HC12上的多个串行接口,但我不能让它说话。我想我已经解决了无法写入SC1DRL寄存器(SCI数据寄存器低)的问题。

以下内容来自我的SCI ISR:

代码语言:javascript
复制
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.out的内容被写到HWRegPtr->SCI.sc1drl.byte时,TX_Buffer.buffer在索引HWRegPtr->SCI.sc1drl.byte中有正确的内容,但是我的调试器没有显示更改,也没有数据通过串行接口传输。

有人知道我错过了什么吗?

编辑:

HWRegPtr定义为:

代码语言:javascript
复制
extern HARDWARE_REGISTER *HWRegPtr;

HARDWARE_REGISTER是一个包含所有寄存器的巨型结构,并且是易失性的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-11-10 09:42:51

SC1DRL很可能是一个只写的注册表(请查看官方的注册表文档以确保--谷歌没有为我找到正确的PDF )。这意味着您无法回读它(即使使用目标内调试器)来验证您的代码。

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4139999

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档