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.
您好:)
启用 MPU 时、使用 HalCoGen 生成的驱动程序的正确方法是什么?
例如,当我尝试使用 SCI 驱动程序通过中断接收某些数据时,我可以调用 sciReceive()函数。 调用 sciReceive()函数的普通非特权 FreeRTOS 任务仅有权访问其自身的堆栈和其他特定于任务的存储器区域(如果已定义)。 问题是,HalCoGen 使用 一些 sciReceive()引用的静态全局结构(在本例中为 g_sciTransfer),但这些静态全局结构超出了此默认任务的内存访问权限。 调用 sciReceive()后,数据中止。 因此、要么需要在用户代码开始之外修改 HalCoGen 生成的源代码-用户代码结束段、要么需要在用户代码中添加一些额外的逻辑、 或者用户需要编写自己的不使用 HalCoGen 全局结构的 sci 驱动程序或者它必须是一个特权任务(当然不需要最后一个选项)。
谢谢、
Adam
[引用用户="QJ Wang ]Hi Adam、
您可以编写一个简单函数来使用中断模式接收字节、但不能使用用于定义数据长度的全局变量。
[/报价]
那么、建议基本上是编写我自己的 SCI 驱动程序函数、而不是使用 HalCoGen 生成的函数? 如果 HalCoGen 团队考虑到这些问题并在下一个版本中使 HalCoGen 更易于使用 FreeRTOS - MPU、那将是很棒的。