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.

[参考译文] MSPM0G1107:MSPM0 SDK (2.02.00.05) SysConfig 支持 FreeRTOS/TI-Drivers

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1419840/mspm0g1107-mspm0-sdk-2-02-00-05-sysconfig-support-for-freertos-ti-drivers

器件型号:MSPM0G1107
主题中讨论的其他器件:SysConfig

工具与软件:

根据这个线程5个月前, MSPM0G3507:SysConfig 不生成 TI_DRIVERS_CONFIG.c、SysConfig 支持生成 ti_msp_dl_config.c/h、这是 DriverLib 所必需的、但是  不会  TI_DRIVERS_CONFIG.c/h 是 TI 驱动程序所必需的。 这似乎是 其他 TI 微控制器系列产品功能中的一个巨大漏洞。

我们是否可以预期这将在不久的将来得到支持? 如果没有、是否有人可以提供有关如何手动正确生成 ti_drivers_config.c/h 的指导? 使用 FreeRTOS 实施有一半的价值是 直接使用 TI-Drivers 而不是 DriverLib。

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

    尊敬的 Derrick:

    我 不会在不久的将来做到这一点(到年底不会做到)。

    对于 ti_drivers_config.c/h、我将打开包含所需 IP (UART、ADC、I2C 等)的工程。 然后、您可以复制并粘贴文件、也可以将驱动程序示例中的文件拖动到您要在其中创建应用程序的项目中。

    如果查看 FreeRTOS 示例、SysConfig 生成的文件包括 IP 重置、IP 电源启用和时钟初始化。 由于 SysConfig 和 TIDrivers 没有针对 MSPM0完全链接、因此只使用其中一个驱动程序示例可能会更容易。

    此致、
    Luke

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

    我们将考虑使用一个选项(修改 ti_drivers_config.c/h)。

    现在、我们正在研究 滚动我们自己的线程安全驱动程序和中断处理程序的替代方案。 具体而言、我将引用 TI-Drivers 的 UART 模块、以查看是否为编写能够处理/不会干扰 FreeRTOS 的中断处理程序而进行了特殊操作。 我没有看到任何特别说明它需要与 RTOS 直接协调的内容。 这似乎是 UARTMSP_interruptHandler  函数允许 NVIC 像正常一样嵌套中断、但我确实注意到了禁用硬件中断的一些标注。 特别是、接收函数之前有此注释:

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    /*
    * ======== UARTMSP_getRxData ========
    * Must be called with HWI disabled.
    */
    __STATIC_INLINE size_t UARTMSP_getRxData(UART_Handle handle, size_t size)
    {
    UARTMSP_HWAttrs *hwAttrs = UART_HWAttrs_Ptr(handle);
    UART_Object *uartObject = UART_Obj_Ptr(handle);
    UART_Buffers_Object *buffersObject = UART_buffersObject(uartObject);
    size_t consumed = 0;
    uint8_t data;
    while (!(DL_UART_isRXFIFOEmpty(hwAttrs->regs)) && size)
    {
    data = DL_UART_receiveData(hwAttrs->regs);
    RingBuf_put(&buffersObject->rxBuf, data);
    ++consumed;
    --size;
    }
    return (consumed);
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    此代码仅在同一文件中引用(直接在中调用)  UARTMSP_interruptHandler 没有别的地方。 但是、我看不到任何来电  Hwip_disable  任何地方。 这是一个错误还是一个过时的评论?

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

    尊敬的 Derrick:

    由于在 UART ISR 内调用此函数、代码注释应该被淘汰、因为 UART 数据不会被其他 UART 进程覆盖。

    此致、
    Luke

x 出现错误。请重试或与管理员联系。