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.

[参考译文] CCS/CCStudio:只写指令

Guru**** 2539500 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/608083/ccs-ccstudio-write-only-instruction

器件型号:CCStudio

工具/软件:Code Composer Studio

你(们)好  

是否有任何实体知道为什么我们应该使用只写指令? 我们何时必须使用它们? 如果我们不注意这一点、会发生什么情况?

谢谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Arash、
    我不太熟悉您所指的内容(以及它与 CCS 的关系)。 您能否提供更多详细信息?

    谢谢
    Ki
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这是 Example_2802xCpuTimer 项目示例的一部分、

    //为了确保精确的时序,请使用只写指令对整个进行写操作
    //寄存器。 因此、如果中的任何配置位发生更改
    // ConfigCpuTimer 和 InitCpuTimers (在 F2802x_CpuTimer.h 中)、
    //下面的设置也必须更新。

    CpuTimer0Regs.TCR.ALL = 0x4001;//使用只写指令将 TSS 位设置为0
    CpuTimer1Regs.TCR.ALL = 0x4001;//使用只写指令将 TSS 位设置为0
    CpuTimer2Regs.TCR.ALL = 0x4001;//使用只写指令将 TSS 位设置为0

    在本示例中、我遇到了只写指令
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我将此主题移至 C2000论坛。 那里的专家可以给出最佳答案。

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

    有两种方法可以更新寄存器位设置。
    1) 1)使用.bit 操作写入单个位(例如 CpuTimer0Regs.TCR.bit.TSS = 1)。 这将是读取修改后的写入操作。
    2) 2)使用.all 操作写入完整寄存器(如示例所示)。 在这种情况下、执行单次写入以更新完整寄存器、因此寄存器中的所有位都同时更新。

    在这种情况下、建议一次性写入完整寄存器(注释中给出了原因)、而不是逐个更新各个位。

    此致、

    Vivek Singh
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在本示例中、"为了确保精确计时"、我们需要逐位写入完整寄存器、我的问题是这种写入方式如何确保精确计时? 逐位写入有什么问题?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢 Vivek 的回复
    但是你告诉我只写的是什么!!! 我知道什么是只写的、我不知道什么是:我们为什么要使用它?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这会同时初始化控制寄存器中的所有位、以便定时器从干净状态启动。