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.

[参考译文] MSP430F2274:参数化问题

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1260410/msp430f2274-parameterization-question

器件型号:MSP430F2274

您好!

我想了解如何对这些标签之一进行参数化。 例如、正确的方法是:

void TX (unsigned char txbyte)//该例程从 UCA0发送一个字节
{

UCA0TXBUF = txbyte;

更像这样的内容:

void TX (unsigned char txbyte、some data type transferBuffer)//此例程会从 UCA0发送一个字节
{

translBuffer = txbyte;

这样我就可以按如下方式调用 TX 函数:

TX (0x11、UCA0TXBUF);

我希望在一个文件中包含此函数、该文件将在不同型号的 MSP430之间共享、其中可能具有不同的#define 名称用于传输缓冲区和其他寄存器。

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

    它们只是地址、因此指针应有效、void *应与宽度无关。 请注意,你将没有任何错误检查,所以你可以创建一些奇妙的错误。 您可能还必须转换为正确宽度的指针。

    这是那些"尝试它,不断改变的事情,直到错误消失"的事情之一。

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

    您好、Ryan、

    我仅想指出、我们确实为某些 MSP430系列提供了更高级别的抽象软件。  它称为 DriverLib。 我们具有适用于新 M0器件的 MSPM0SDK。  可以尝试查看 FR2xx_4xx 器件的 API 指南、其中大多数器件的配置与您所描述的类似、您实际上需要为所使用的外设传递基地址、然后器件自动使用偏移量访问所需的相关寄存器。   

    遗憾的是、我们没有针对 F2xx 器件的 driverlib。   

    祝您在项目中一切顺利。

    谢谢。

    JD

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我无法弄清楚如何成功传递基址、因此我使用指针完成了最后一步。 
    我正在制作一个可用于不同 MSP430系列芯片的通用文件、因此通用文件包含如下内容:

    volatile unsigned char * txBufferPtr; void setBuffers (volatile unsigned char txBufferAddress ) {txBufferPtr = txBufferAddress;}void TX (unsigned char txByte ){* txBufferPtr = txByte;//外加等待发送标志更改状态的附加代码}在项目特定文件中的主程序中,我调用 seters (&UCA0TXBUF); 在启动时,TX()函数将按预期运行。 我也对 Rx 缓冲区和相关标志进行了类似操作。