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/MSP430F5659:MSPWARE GR 库

Guru**** 2551110 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/727902/ccs-msp430f5659-mspware-gr-lib

器件型号:MSP430F5659
主题中讨论的其他器件:MSPWARE

工具/软件:Code Composer Studio

您好!

我在尝试使用您的图形库绘制圆、按钮等时遇到了一段糟糕的时间 在具有 SSD1963控制器的480x272像素显示屏上。 我使用的是16位端口 I/O 接口、工作正常。 我可以使用我为此编写的简单驱动程序在屏幕上绘制正方形和文本。

我 将 WriteCommand 和 WriteData 等低级例程集成到了 MSPware GRlib 程序中的一个示例中、因此我可以使用所有前面提到的函数。 我能够在显示"无驱动程序"的示例中修改 LCD 模板 Driver.c 和 TemplateDriver.h、并使用 CCS7使其变得复杂。

我现在尝试获取一个简单的函数、如

void Graphics_drawLineH (const Graphics_context *上下文、int32_t x1、int32_t x2、int32_t y)

void Graphics_drawButton (const Graphics_context *上下文、const Graphics_Button *按钮)

void Graphics_drawCircle (const Graphics_context *上下文、int32_t x、int32_t y、int32_t radius)

工作吗? 我的问题是我在呼叫的第一个条目(Graphics_context *上下文)中输入什么内容? 是否有可以修改的上下文文件? 我找不到它们。 我阅读了用户手册和 API、但仍然感到丢失。 请帮助。

我已经使用此软件一周多了、非常感谢您的支持。

谢谢、

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

    上下文是维护 LCD 驱动器所需的一些数据所需的数据结构、只需定义即可。

    代码可能如下所示:

    graphics_context g_sContext;

    int main()

       …


       //需要首先调用初始化 LCD 的函数
       graphics_initContext (&g_sContext、&g_sharp96x96LCD、&g_sharp96x96LCD_funcs);

     …

    G_sharp128x128LCD 和 g_sharp128x128LCD_funcs 是需要在驱动程序中为 LCD 定义的结构。 您可以检查 Sharp96x96 LCD 的驱动程序以作为良好的参考。

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

    感谢您的回复。 在尖锐的例子中、我假设您是指这种定义;

    const Graphics_Display g_sharp96x96LCD =

    sizeof (tDisplay)、
    DisplayBuffer、
    LCD_Horizontal_MAX、
    LCD_Vertical _MAX、
    Sharp96x96_PixelDraw、//PixelDraw、
    Sharp96x96_DrawMultiple、
    Sharp96x96_LineDrawH、
    Sharp96x96_LineDrawV、//LineDrawV、
    Sharp96x96_RectFill、//RectFill、
    Sharp96x96_ColorTranslate、
    Sharp96x96_Flush、//Flush
    Sharp96x96_ClearScreen //清除屏幕。 未修改显示缓冲器的内容

    };

    有几个问题-在整个 Sharp 示例项目中、什么是"tDisplay"找不到它的定义? 我的显示器是480x272

    "无驱动程序"示例例例例例程需要数据结构定义、例如:

    void Graphics_drawCircle (const Graphics_context * context、int32_t x、int32_t y、int32_t radius)……这可能是一个很好的示例,但情况如何  

    void Graphics_drawImageButton (const Graphics_context *上下文、const Graphics_ImageButton * imageButton)

    再次感谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    一些进一步的信息和问题???";
    示例'No Driver'程序显示上下文的 shell,如下所示;
    //
    //
    //! 此结构定义要用于绘制的工程图上下文
    //! 屏幕。 任何时候都可能存在多个工程图上下文。
    //
    //
    typedef 结构体 Graphics_context

    int32_t size;//!<此结构的大小。 ??
    const Graphics_Display *显示;//!<执行绘图操作的屏幕。 ??
    graphics_Rectangle ClipRegion;//!<绘图到屏幕时要使用的剪切区域。 格式??
    uint32_t 前台;//!<用于在屏幕上绘制基元的颜色。
    uint32_t 背景;//!<用于在屏幕上绘制基元的背景颜色。
    const Graphics_Font *字体;//!<用于将文本呈现到屏幕上的字体。
    }图形上下文;
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    查找定义的一种简单方法是使用 CTRL 并单击相应的项目。
    这将使您直接了解它的定义。

    使用此工具、您应该能够找到所有这些信息。

    另一个注意事项:graphics_context 用于 GRLIB 以维护数据。 您不应直接修改此内容、而只能使用提供的 API 函数。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    很抱歉、但我有点困惑。 您说不要更改定义为的'Graphics_context';
    typedef 结构体 Graphics_context

    int32_t size;//!<此结构的大小。
    const Graphics_Display *显示;//!<执行绘图操作的屏幕。
    graphics_Rectangle ClipRegion;//!<绘图到屏幕时要使用的剪切区域。
    uint32_t 前台;//!<用于在屏幕上绘制基元的颜色。
    uint32_t 背景;//!<用于在屏幕上绘制基元的背景颜色。
    const Graphics_Font *字体;//!<用于将文本呈现到屏幕上的字体。
    }图形上下文;

    API 例如 drawlineH 为;
    void Graphics_drawLineH (const Graphics_context *上下文、int32_t x1、int32_t x2、int32_t y)

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

    在该函数中、您只需传递参数:

    *上下文->包含 grlib 函数数据的结构-您只需将指针传递到该结构、该函数便可知道在何处获取和存储其内部所需的数据。 由于您可以使用 grlib 在一个应用程序中处理多个显示、因此该数据需要存储在函数外部并传递给所有 grlib 函数、以便它们知道当前应访问哪个显示。 因此、您只需将指针传递到该结构、但所有处理都位于 grlib 函数内。

    int32_t x1 -> x 起始点的位置->您在此处添加数据

    int32_t x2 -> x 端点位置->您在此处添加数据

    int32_t y -> y Position of starting point ->您可以在此处添加数据

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

    再次感谢 您、

    我知道该函数需要指针来定位结构数据。 我想我的问题不清楚。 我只使用一个显示器、因为它适用于嵌入式 OEM 产品。 在定义结构时、我不知道要在几个字段中放入什么、  

    typedef 结构体 Graphics_context

    int32_t size;//!<此结构的大小。 我应该在这里输入什么内容? 此结构的大小是多少? 6.
    const Graphics_Display *显示;//!<执行绘图操作的屏幕。 我在这里输入显示屏的文本名称/指针是什么? 请举例说明
    graphics_Rectangle ClipRegion;//!<绘图到屏幕时要使用的剪切区域。 明白
    uint32_t 前台;//!<用于在屏幕上绘制基元的颜色。 明白
    uint32_t background;//!<用于在屏幕上绘制基元的背景颜色。已理解
    const Graphics_Font *字体;//!<用于将文本呈现到屏幕上的字体。已理解
    }图形上下文;

    此外-是否有私人联系人、我可以在网上提出这些问题?

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

    如上所述-您无需将任何数据放入此结构中。 您只需要在 grlib 中为底层函数提供结构。 grlib 中的函数可以并且将会使用此结构来存储其工作所需的内部数据。

    例如、当您调用 GrContextInit (&g_sContext、&g_sharp96x96LCD);函数时。  然后、GrContextInit 函数将存储:

       //设置上下文的大小。
       context->size = sizeof (Graphics_context);
       //将指针保存到显示。
       Context->display = display;

    因此、只需提供在 grlib 函数中处理内部数据的结构。

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

    Stefan、

    再次感谢您的耐心! 我理解您所说的内容、也许我会使它变得比它更困难。 因此、我认为我只需要将低级驱动程序和初始化例程添加到 TemplateDriver.h 文件中的 TemplateDriver.c 和显示大小等。 我已经尝试过这种方法、并且遇到了问题、因为我不会使用 RAM 缓冲器。 缓冲区大小必须为480x272= 130K、这比 MSP430中的可用 RAM 大得多。 案文评论说,这不是必要的,但我如何将其删除。 Template_Memory 定义会调整存储器的大小、如果我取出它、我在函数尝试使用它时会遇到错误? 为了不使用 RAM 缓冲器、我需要进行哪些更改?

    再次感谢、

    Jerry

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

    您好、Jerry、

    没有问题-最好解决这个问题。

    我不确定所有依赖项以及您收到的错误消息。

    但是、就我所见、缓冲区仅用于低级驱动程序-我想在 TemplateDriver.h 和 TemplateDriver.c 文件中的情况下就是这样。

    如果您不使用那里的缓冲器并直接写入 LCD、那么它应该起作用。

    在 exmples 驱动程序文件(例如 sharp96x96)中 ,指向缓冲区的指针位于被调用的:pvDisplayData 中。

    您也可以检查一下。

    (您需要显示的大小才能让函数知道可绘制的位置-因此这是必需的。)

    Stefan

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

    您好、Jerry、

    很抱歉 、我的回复太晚了、我的观点不正确。

    调用 display init 函数时

    functionGraphics_initContext (&g_sContext、&g_sharp96x96LCD);

    在控制结构中使用0显示缓冲区大小

    const Graphics_Display g_sharp96x96LCD =

       sizeof (tDisplay)、
       0、//DisplayBuffer、
       LCD_Horizontal_MAX、
       LCD_Vertical _MAX、
       …

    但是、请确保您的低级驱动程序也不能与缓冲区一起工作、而是直接写入显示屏、这也会导致显示的空清零功能、因为不再有需要写入显示屏的缓冲区。

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

    谢谢-我能够使用10的缓冲器使它正常工作。

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

    您好、Jerry、
    感谢您的反馈、感谢您通过按下"已解决"按钮来关闭该主题。
    如果您对该主题有任何其他问题、请随时再次打开或打开另一个主题。

    ~ Stefan

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

    好的