This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMS320F280039C:为什么 HWBP_STATUS 寄存器偶尔有一个非0条件?

Guru**** 2466550 points
Other Parts Discussed in Thread: C2000WARE

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1490423/tms320f280039c-why-does-hwbp_status-register-occasionally-have-a-non-0-condition

器件型号:TMS320F280039C
Thread 中讨论的其他器件:C2000WARE

工具与软件:

尊敬的专家:

我的客户使用 ERAD 执行堆栈自检测、以通过认证和实现以下功能。 此 示例根据 C:\ti\c2000\C2000Ware_5_02_00_00\driverlib\f28003x\examples\ERAD\ERAD_ex3_stack_overflow_detect.c

客户想知道 为什么  HWBP_STATUS 寄存器 偶尔有一个非0条件并且其他寄存器无法写入?  

  • EALLOW;
    //
    //应用程序是所有者
    //
    清除 GlobalRegs.GLBL_owner.bit.owner = 1;
    //
    //常规屏蔽比较
    //

    EradHWBP1Regs.HWBP_CNTL.bit.COMP_MODE = 0;

    //
    //停止 CPU
    //

    // HWBP1Regs.HWBP_CNTL.bit.stop = 0;// No Stop

    清除 HWBP1Regs.HWBP_CNTL.bit.RTOSINT = 1;// GEN RTOSINT

    //
    //地址的 DWAB 比较
    //

    清除 HWBP1Regs.HWBP_CNTL.bit.BUS_SEL = 2;

    //
    //清除 HWBP 事件
    //

    清除 HWBP1Regs.HWBP_Clear.bit.EVENT_CLR = 1;

    //
    //不设置掩码
    //

    清除 HWBP1Regs.HWBP_MASK = 0;

    //
    //设置参考地址
    //

    清除 HWBP1Regs.HWBP_REF = stackRefAddress;

    //
    //启用 HWBP
    //

    清除 GlobalRegs.GLBL_ENABLE.bit.HWBP1 = 1;

    IER |= M_RTOS;//使能中断

    EDIS;
    此致
    Anka Zhang
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Anka:

    请注意下面 HWBP_Status 寄存器的 TRM 说明

    对于初学者、您会发现状态寄存器是只读寄存器。 这意味着无法对其进行写入。 其次、您会注意到、这是一个不断变化的寄存器、具体取决于是否已触发事件(event_fromed)。 当 HWBP (EBC)单元生成匹配事件时、会发生这种情况。  软件将使用此信息来确定此 HWBP 模块是否触发事件。 要清除 even_arounded 字段、请 向 HWBP_clear 寄存器的位0写入"1"。

    此外、状态字段指示总线比较器状态。 您能否确保您的代码序列与 TRM 的13.5.1硬件断点和硬件观察点编程序列中所述的序列匹配。

    此致、

    Ozino