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.

[参考译文] MSP430FR2355:用指针读取 TB1R -如何?

Guru**** 2535150 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1000179/msp430fr2355-reading-tb1r-with-a-pointer----how-to

器件型号:MSP430FR2355

尝试使用一个指针来指向 TB1R 寄存器、这样我就可以将值传递给函数。  我似乎无法让它读取正确的值:

unsigned int *pTB1R;

*pTB1R = TB1R;

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

    >pTB1R =&TB1R;

    编译器可能会就"volatile"向您发出警告。 我建议对其进行修正、即声明"volatile unsigned int *pTB1R;"

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

    看起来不是那么简单……我尝试了,但没有成功……我在分配后放置了一段时间(1)……我的计数器(TBxR)正在工作。  指针在表达式窗口中持续显示:

    pTB1R unsigned int * 0x0000{53298}0x00205A
    *(pTB1R) unsigned int -12238 (十进制) 0x0000

    我将编译器优化关闭

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

    您是否添加了"易失性"? 此外、如果您还没有 、您可能应该添加一个引用、例如全局"volatile unsigned val;"、然后"val =* pTB0R"、以确保编译器不会删除所有内容。  

    这是"玩具"程序的问题,它们不做任何事情--编译器/链接器很好地识别它们,不做任何事情。

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

    是的,我确实添加了 volatile。。。。我最终创建了一个函数,该函数对计时器的寄存器值使用句柄。。。。它似乎运行良好。

    TimerCompare_Enable_IRQ(TIMERB1, CC_TWO, TB1.pTIMERx->TB_R + 32768);

    感谢你的帮助。  我同意编译器(至少对我来说)似乎比不那么令人难过...作为一个硬件人员,我有很多“玩具”程序:)